/**
|
* Convert a typed array to a Buffer without a copy
|
*
|
* Author: Feross Aboukhadijeh <https://feross.org>
|
* License: MIT
|
*
|
* `npm install typedarray-to-buffer`
|
*/
|
|
var isTypedArray = require('is-typedarray').strict
|
|
module.exports = function typedarrayToBuffer (arr) {
|
if (isTypedArray(arr)) {
|
// To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer
|
var buf = Buffer.from(arr.buffer)
|
if (arr.byteLength !== arr.buffer.byteLength) {
|
// Respect the "view", i.e. byteOffset and byteLength, without doing a copy
|
buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)
|
}
|
return buf
|
} else {
|
// Pass through all other types to `Buffer.from`
|
return Buffer.from(arr)
|
}
|
}
|