mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-11 05:11:40 +00:00
update
This commit is contained in:
100
node_modules/blob/index.js
generated
vendored
Normal file
100
node_modules/blob/index.js
generated
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
/**
|
||||
* Create a blob builder even when vendor prefixes exist
|
||||
*/
|
||||
|
||||
var BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
|
||||
typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :
|
||||
typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :
|
||||
typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder :
|
||||
false;
|
||||
|
||||
/**
|
||||
* Check if Blob constructor is supported
|
||||
*/
|
||||
|
||||
var blobSupported = (function() {
|
||||
try {
|
||||
var a = new Blob(['hi']);
|
||||
return a.size === 2;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
})();
|
||||
|
||||
/**
|
||||
* Check if Blob constructor supports ArrayBufferViews
|
||||
* Fails in Safari 6, so we need to map to ArrayBuffers there.
|
||||
*/
|
||||
|
||||
var blobSupportsArrayBufferView = blobSupported && (function() {
|
||||
try {
|
||||
var b = new Blob([new Uint8Array([1,2])]);
|
||||
return b.size === 2;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
})();
|
||||
|
||||
/**
|
||||
* Check if BlobBuilder is supported
|
||||
*/
|
||||
|
||||
var blobBuilderSupported = BlobBuilder
|
||||
&& BlobBuilder.prototype.append
|
||||
&& BlobBuilder.prototype.getBlob;
|
||||
|
||||
/**
|
||||
* Helper function that maps ArrayBufferViews to ArrayBuffers
|
||||
* Used by BlobBuilder constructor and old browsers that didn't
|
||||
* support it in the Blob constructor.
|
||||
*/
|
||||
|
||||
function mapArrayBufferViews(ary) {
|
||||
return ary.map(function(chunk) {
|
||||
if (chunk.buffer instanceof ArrayBuffer) {
|
||||
var buf = chunk.buffer;
|
||||
|
||||
// if this is a subarray, make a copy so we only
|
||||
// include the subarray region from the underlying buffer
|
||||
if (chunk.byteLength !== buf.byteLength) {
|
||||
var copy = new Uint8Array(chunk.byteLength);
|
||||
copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));
|
||||
buf = copy.buffer;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
return chunk;
|
||||
});
|
||||
}
|
||||
|
||||
function BlobBuilderConstructor(ary, options) {
|
||||
options = options || {};
|
||||
|
||||
var bb = new BlobBuilder();
|
||||
mapArrayBufferViews(ary).forEach(function(part) {
|
||||
bb.append(part);
|
||||
});
|
||||
|
||||
return (options.type) ? bb.getBlob(options.type) : bb.getBlob();
|
||||
};
|
||||
|
||||
function BlobConstructor(ary, options) {
|
||||
return new Blob(mapArrayBufferViews(ary), options || {});
|
||||
};
|
||||
|
||||
if (typeof Blob !== 'undefined') {
|
||||
BlobBuilderConstructor.prototype = Blob.prototype;
|
||||
BlobConstructor.prototype = Blob.prototype;
|
||||
}
|
||||
|
||||
module.exports = (function() {
|
||||
if (blobSupported) {
|
||||
return blobSupportsArrayBufferView ? Blob : BlobConstructor;
|
||||
} else if (blobBuilderSupported) {
|
||||
return BlobBuilderConstructor;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
})();
|
Reference in New Issue
Block a user