12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- export var hasFetch = isFunction(global.fetch) && isFunction(global.ReadableStream)
- var _blobConstructor;
- export function blobConstructor() {
- if (typeof _blobConstructor !== 'undefined') {
- return _blobConstructor;
- }
- try {
- new global.Blob([new ArrayBuffer(1)])
- _blobConstructor = true
- } catch (e) {
- _blobConstructor = false
- }
- return _blobConstructor
- }
- var xhr;
- function checkTypeSupport(type) {
- if (!xhr) {
- xhr = new global.XMLHttpRequest()
- // If location.host is empty, e.g. if this page/worker was loaded
- // from a Blob, then use example.com to avoid an error
- xhr.open('GET', global.location.host ? '/' : 'https://example.com')
- }
- try {
- xhr.responseType = type
- return xhr.responseType === type
- } catch (e) {
- return false
- }
- }
- // For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.
- // Safari 7.1 appears to have fixed this bug.
- var haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'
- var haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)
- export var arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer')
- // These next two tests unavoidably show warnings in Chrome. Since fetch will always
- // be used if it's available, just return false for these to avoid the warnings.
- export var msstream = !hasFetch && haveSlice && checkTypeSupport('ms-stream')
- export var mozchunkedarraybuffer = !hasFetch && haveArrayBuffer &&
- checkTypeSupport('moz-chunked-arraybuffer')
- export var overrideMimeType = isFunction(xhr.overrideMimeType)
- export var vbArray = isFunction(global.VBArray)
- function isFunction(value) {
- return typeof value === 'function'
- }
- xhr = null // Help gc
|