buffer-from
Advanced tools
Comparing version 0.1.0 to 0.1.1
60
index.js
@@ -0,1 +1,47 @@ | ||
var isArrayBuffer = require('is-array-buffer-x') | ||
var isModern = ( | ||
typeof Buffer.alloc === 'function' && | ||
typeof Buffer.allocUnsafe === 'function' && | ||
typeof Buffer.from === 'function' | ||
) | ||
function fromArrayBuffer (obj, byteOffset, length) { | ||
byteOffset >>>= 0 | ||
var maxLength = obj.byteLength - byteOffset | ||
if (maxLength < 0) { | ||
throw new RangeError("'offset' is out of bounds") | ||
} | ||
if (length === undefined) { | ||
length = maxLength | ||
} else { | ||
length >>>= 0 | ||
if (length > maxLength) { | ||
throw new RangeError("'length' is out of bounds") | ||
} | ||
} | ||
return isModern | ||
? Buffer.from(obj.slice(byteOffset, byteOffset + length)) | ||
: new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) | ||
} | ||
function fromString (string, encoding) { | ||
if (typeof encoding !== 'string' || encoding === '') { | ||
encoding = 'utf8' | ||
} | ||
if (!Buffer.isEncoding(encoding)) { | ||
throw new TypeError('"encoding" must be a valid string encoding') | ||
} | ||
return isModern | ||
? Buffer.from(string, encoding) | ||
: new Buffer(string, encoding) | ||
} | ||
function bufferFrom (value, encodingOrOffset, length) { | ||
@@ -6,5 +52,15 @@ if (typeof value === 'number') { | ||
return new Buffer(value, encodingOrOffset, length) | ||
if (isArrayBuffer(value)) { | ||
return fromArrayBuffer(value, encodingOrOffset, length) | ||
} | ||
if (typeof value === 'string') { | ||
return fromString(value, encodingOrOffset) | ||
} | ||
return isModern | ||
? Buffer.from(value) | ||
: new Buffer(value) | ||
} | ||
module.exports = (Buffer.from || bufferFrom) | ||
module.exports = bufferFrom |
{ | ||
"name": "buffer-from", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"license": "MIT", | ||
@@ -15,3 +15,6 @@ "repository": "LinusU/buffer-from", | ||
"buffer from" | ||
] | ||
], | ||
"dependencies": { | ||
"is-array-buffer-x": "^1.0.13" | ||
} | ||
} |
# Buffer From | ||
A ponyfill for `Buffer.from`, uses native implementation if available. | ||
A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available. | ||
@@ -5,0 +5,0 @@ ## Installation |
4251
58
1
+ Addedis-array-buffer-x@^1.0.13
+ Addedattempt-x@1.1.3(transitive)
+ Addedcached-constructors-x@1.0.2(transitive)
+ Addedhas-own-property-x@3.2.0(transitive)
+ Addedhas-symbol-support-x@1.4.2(transitive)
+ Addedhas-symbols@1.0.3(transitive)
+ Addedhas-to-string-tag-x@1.4.1(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedinfinity-x@1.0.2(transitive)
+ Addedis-array-buffer-x@1.7.0(transitive)
+ Addedis-date-object@1.0.5(transitive)
+ Addedis-falsey-x@1.0.3(transitive)
+ Addedis-finite-x@3.0.4(transitive)
+ Addedis-function-x@3.3.0(transitive)
+ Addedis-index-x@1.1.0(transitive)
+ Addedis-nan-x@1.0.3(transitive)
+ Addedis-nil-x@1.4.2(transitive)
+ Addedis-object-like-x@1.7.1(transitive)
+ Addedis-primitive@2.0.03.0.1(transitive)
+ Addedis-string@1.0.7(transitive)
+ Addedis-symbol@1.0.4(transitive)
+ Addedlodash.isnull@3.0.0(transitive)
+ Addedmath-clamp-x@1.2.0(transitive)
+ Addedmath-sign-x@3.0.0(transitive)
+ Addedmax-safe-integer@1.0.1(transitive)
+ Addednan-x@1.0.2(transitive)
+ Addednormalize-space-x@3.0.0(transitive)
+ Addedobject-get-own-property-descriptor-x@3.2.0(transitive)
+ Addedparse-int-x@2.0.0(transitive)
+ Addedproperty-is-enumerable-x@1.1.0(transitive)
+ Addedreplace-comments-x@2.0.0(transitive)
+ Addedrequire-coercible-to-string-x@1.0.2(transitive)
+ Addedrequire-object-coercible-x@1.4.3(transitive)
+ Addedto-boolean-x@1.0.3(transitive)
+ Addedto-integer-x@3.0.0(transitive)
+ Addedto-number-x@2.0.0(transitive)
+ Addedto-object-x@1.5.0(transitive)
+ Addedto-primitive-x@1.1.0(transitive)
+ Addedto-property-key-x@2.0.2(transitive)
+ Addedto-string-symbols-supported-x@1.0.2(transitive)
+ Addedto-string-tag-x@1.4.3(transitive)
+ Addedto-string-x@1.4.5(transitive)
+ Addedtrim-left-x@3.0.0(transitive)
+ Addedtrim-right-x@3.0.0(transitive)
+ Addedtrim-x@3.0.0(transitive)
+ Addedvalidate.io-undefined@1.0.3(transitive)
+ Addedwhite-space-x@3.0.1(transitive)