exports.fetch = isFunction(window.fetch) && isFunction(window.ReadableByteStream) exports.blobConstructor = false try { new Blob([new ArrayBuffer(1)]) exports.blobConstructor = true } catch (e) {} var xhr = new window.XMLHttpRequest() xhr.open('GET', '/') function checkTypeSupport (type) { try { xhr.responseType = type return xhr.responseType === type } catch (e) {} return false } var haveArrayBuffer = isFunction(window.ArrayBuffer) var haveSlice = haveArrayBuffer && isFunction(window.ArrayBuffer.prototype.slice) exports.arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer') exports.msstream = haveSlice && checkTypeSupport('ms-stream') exports.mozchunkedarraybuffer = haveArrayBuffer && checkTypeSupport('moz-chunked-arraybuffer') exports.overrideMimeType = isFunction(xhr.overrideMimeType) exports.vbArray = isFunction(window.VBArray) function isFunction (value) { return typeof value === 'function' } xhr = null // Help gc