27 lines
723 B
JavaScript
27 lines
723 B
JavaScript
|
module.exports = Blob
|
||
|
|
||
|
var Buffer = require('buffer').Buffer
|
||
|
, str = {}.toString.call.bind({}.toString)
|
||
|
|
||
|
function Blob(parts, properties) {
|
||
|
properties = properties || {}
|
||
|
this.type = properties.type || ''
|
||
|
var size = 0
|
||
|
for(var i = 0, len = parts.length; i < len; ++i) {
|
||
|
size += typeof parts[i] === 'string' ? Buffer.byteLength(parts[i]) :
|
||
|
str(parts[i]).indexOf('ArrayBuffer') > -1 ? parts[i].byteLength :
|
||
|
parts[i].buffer ? parts[i].buffer.byteLength :
|
||
|
parts[i].length
|
||
|
}
|
||
|
this.size = size
|
||
|
}
|
||
|
|
||
|
var cons = Blob
|
||
|
, proto = cons.prototype
|
||
|
|
||
|
proto.slice = function(start, end) {
|
||
|
var b = new Blob([], {type: this.type})
|
||
|
b.size = (end || this.size) - (start || 0)
|
||
|
return b
|
||
|
}
|