diff --git a/node_modules/engine.io-parser/lib/encodePacket.browser.js b/node_modules/engine.io-parser/lib/encodePacket.browser.js index b2287af..802ddd0 100644 --- a/node_modules/engine.io-parser/lib/encodePacket.browser.js +++ b/node_modules/engine.io-parser/lib/encodePacket.browser.js @@ -6,6 +6,15 @@ const withNativeBlob = Object.prototype.toString.call(Blob) === "[object BlobConstructor]"); const withNativeArrayBuffer = typeof ArrayBuffer === "function"; +/** + * Returns true if obj is an ArrayBuffer. + * This extra check is made because the "instanceof ArrayBuffer" check does not work + * across different execution contexts. + * @private + */ + function isArrayBuffer(obj) { + return typeof obj === 'object' && obj !== null && toString.call(obj) === '[object ArrayBuffer]'; +} // ArrayBuffer.isView method is not defined in IE10 const isView = obj => { return typeof ArrayBuffer.isView === "function" @@ -22,10 +31,10 @@ const encodePacket = ({ type, data }, supportsBinary, callback) => { } } else if ( withNativeArrayBuffer && - (data instanceof ArrayBuffer || isView(data)) + (data instanceof ArrayBuffer || isArrayBuffer(data) || isView(data)) ) { if (supportsBinary) { - return callback(data instanceof ArrayBuffer ? data : data.buffer); + return callback((data instanceof ArrayBuffer || isArrayBuffer(data)) ? data : data.buffer); } else { return encodeBlobAsBase64(new Blob([data]), callback); }