123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.encodePacket = void 0;
- exports.encodePacketToBinary = encodePacketToBinary;
- const commons_js_1 = require("./commons.js");
- const withNativeBlob = typeof Blob === "function" ||
- (typeof Blob !== "undefined" &&
- Object.prototype.toString.call(Blob) === "[object BlobConstructor]");
- const withNativeArrayBuffer = typeof ArrayBuffer === "function";
- // ArrayBuffer.isView method is not defined in IE10
- const isView = (obj) => {
- return typeof ArrayBuffer.isView === "function"
- ? ArrayBuffer.isView(obj)
- : obj && obj.buffer instanceof ArrayBuffer;
- };
- const encodePacket = ({ type, data }, supportsBinary, callback) => {
- if (withNativeBlob && data instanceof Blob) {
- if (supportsBinary) {
- return callback(data);
- }
- else {
- return encodeBlobAsBase64(data, callback);
- }
- }
- else if (withNativeArrayBuffer &&
- (data instanceof ArrayBuffer || isView(data))) {
- if (supportsBinary) {
- return callback(data);
- }
- else {
- return encodeBlobAsBase64(new Blob([data]), callback);
- }
- }
- // plain string
- return callback(commons_js_1.PACKET_TYPES[type] + (data || ""));
- };
- exports.encodePacket = encodePacket;
- const encodeBlobAsBase64 = (data, callback) => {
- const fileReader = new FileReader();
- fileReader.onload = function () {
- const content = fileReader.result.split(",")[1];
- callback("b" + (content || ""));
- };
- return fileReader.readAsDataURL(data);
- };
- function toArray(data) {
- if (data instanceof Uint8Array) {
- return data;
- }
- else if (data instanceof ArrayBuffer) {
- return new Uint8Array(data);
- }
- else {
- return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
- }
- }
- let TEXT_ENCODER;
- function encodePacketToBinary(packet, callback) {
- if (withNativeBlob && packet.data instanceof Blob) {
- return packet.data.arrayBuffer().then(toArray).then(callback);
- }
- else if (withNativeArrayBuffer &&
- (packet.data instanceof ArrayBuffer || isView(packet.data))) {
- return callback(toArray(packet.data));
- }
- encodePacket(packet, false, (encoded) => {
- if (!TEXT_ENCODER) {
- TEXT_ENCODER = new TextEncoder();
- }
- callback(TEXT_ENCODER.encode(encoded));
- });
- }
|