12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- 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 || ""));
- };
- const encodeBlobAsBase64 = (data, callback) => {
- const fileReader = new FileReader();
- fileReader.onload = function () {
- const content = fileReader.result.split(",")[1];
- callback("b" + content);
- };
- return fileReader.readAsDataURL(data);
- };
- exports.default = encodePacket;
|