var binaryFeatures = {}; binaryFeatures.useBlobBuilder = (function () { try { new Blob([]); return false; } catch (e) { return true; } })(); binaryFeatures.useArrayBufferView = !binaryFeatures.useBlobBuilder && (function () { try { return (new Blob([new Uint8Array([])])).size === 0; } catch (e) { return true; } })(); module.exports.binaryFeatures = binaryFeatures; var BlobBuilder = module.exports.BlobBuilder; if (typeof window !== 'undefined') { BlobBuilder = module.exports.BlobBuilder = window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder || window.BlobBuilder; } function BufferBuilder () { this._pieces = []; this._parts = []; } BufferBuilder.prototype.append = function (data) { if (typeof data === 'number') { this._pieces.push(data); } else { this.flush(); this._parts.push(data); } }; BufferBuilder.prototype.flush = function () { if (this._pieces.length > 0) { var buf = new Uint8Array(this._pieces); if (!binaryFeatures.useArrayBufferView) { buf = buf.buffer; } this._parts.push(buf); this._pieces = []; } }; BufferBuilder.prototype.getBuffer = function () { this.flush(); if (binaryFeatures.useBlobBuilder) { var builder = new BlobBuilder(); for (var i = 0, ii = this._parts.length; i < ii; i++) { builder.append(this._parts[i]); } return builder.getBlob(); } else { return new Blob(this._parts); } }; module.exports.BufferBuilder = BufferBuilder;