diff options
Diffstat (limited to 'node_modules/typedarray-to-buffer')
| -rw-r--r-- | node_modules/typedarray-to-buffer/.airtap.yml | 15 | ||||
| -rw-r--r-- | node_modules/typedarray-to-buffer/.travis.yml | 11 | ||||
| -rw-r--r-- | node_modules/typedarray-to-buffer/LICENSE | 21 | ||||
| -rw-r--r-- | node_modules/typedarray-to-buffer/README.md | 85 | ||||
| -rw-r--r-- | node_modules/typedarray-to-buffer/index.js | 25 | ||||
| -rw-r--r-- | node_modules/typedarray-to-buffer/package.json | 50 | ||||
| -rw-r--r-- | node_modules/typedarray-to-buffer/test/basic.js | 50 | 
7 files changed, 257 insertions, 0 deletions
diff --git a/node_modules/typedarray-to-buffer/.airtap.yml b/node_modules/typedarray-to-buffer/.airtap.yml new file mode 100644 index 0000000..3417780 --- /dev/null +++ b/node_modules/typedarray-to-buffer/.airtap.yml @@ -0,0 +1,15 @@ +sauce_connect: true +loopback: airtap.local +browsers: +  - name: chrome +    version: latest +  - name: firefox +    version: latest +  - name: safari +    version: latest +  - name: microsoftedge +    version: latest +  - name: ie +    version: latest +  - name: iphone +    version: latest diff --git a/node_modules/typedarray-to-buffer/.travis.yml b/node_modules/typedarray-to-buffer/.travis.yml new file mode 100644 index 0000000..f25afbd --- /dev/null +++ b/node_modules/typedarray-to-buffer/.travis.yml @@ -0,0 +1,11 @@ +language: node_js +node_js: +  - lts/* +addons: +  sauce_connect: true +  hosts: +    - airtap.local +env: +  global: +  - secure: i51rE9rZGHbcZWlL58j3H1qtL23OIV2r0X4TcQKNI3pw2mubdHFJmfPNNO19ItfReu8wwQMxOehKamwaNvqMiKWyHfn/QcThFQysqzgGZ6AgnUbYx9od6XFNDeWd1sVBf7QBAL07y7KWlYGWCwFwWjabSVySzQhEBdisPcskfkI= +  - secure: BKq6/5z9LK3KDkTjs7BGeBZ1KsWgz+MsAXZ4P64NSeVGFaBdXU45+ww1mwxXFt5l22/mhyOQZfebQl+kGVqRSZ+DEgQeCymkNZ6CD8c6w6cLuOJXiXwuu/cDM2DD0tfGeu2YZC7yEikP7BqEFwH3D324rRzSGLF2RSAAwkOI7bE= diff --git a/node_modules/typedarray-to-buffer/LICENSE b/node_modules/typedarray-to-buffer/LICENSE new file mode 100644 index 0000000..0c068ce --- /dev/null +++ b/node_modules/typedarray-to-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/typedarray-to-buffer/README.md b/node_modules/typedarray-to-buffer/README.md new file mode 100644 index 0000000..35761fb --- /dev/null +++ b/node_modules/typedarray-to-buffer/README.md @@ -0,0 +1,85 @@ +# typedarray-to-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/typedarray-to-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/typedarray-to-buffer +[npm-image]: https://img.shields.io/npm/v/typedarray-to-buffer.svg +[npm-url]: https://npmjs.org/package/typedarray-to-buffer +[downloads-image]: https://img.shields.io/npm/dm/typedarray-to-buffer.svg +[downloads-url]: https://npmjs.org/package/typedarray-to-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Convert a typed array to a [Buffer](https://github.com/feross/buffer) without a copy. + +[![saucelabs][saucelabs-image]][saucelabs-url] + +[saucelabs-image]: https://saucelabs.com/browser-matrix/typedarray-to-buffer.svg +[saucelabs-url]: https://saucelabs.com/u/typedarray-to-buffer + +Say you're using the ['buffer'](https://github.com/feross/buffer) module on npm, or +[browserify](http://browserify.org/) and you're working with lots of binary data. + +Unfortunately, sometimes the browser or someone else's API gives you a typed array like +`Uint8Array` to work with and you need to convert it to a `Buffer`. What do you do? + +Of course: `Buffer.from(uint8array)` + +But, alas, every time you do `Buffer.from(uint8array)` **the entire array gets copied**. +The `Buffer` constructor does a copy; this is +defined by the [node docs](http://nodejs.org/api/buffer.html) and the 'buffer' module +matches the node API exactly. + +So, how can we avoid this expensive copy in +[performance critical applications](https://github.com/feross/buffer/issues/22)? + +***Simply use this module, of course!*** + +If you have an `ArrayBuffer`, you don't need this module, because +`Buffer.from(arrayBuffer)` +[is already efficient](https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length). + +## install + +```bash +npm install typedarray-to-buffer +``` + +## usage + +To convert a typed array to a `Buffer` **without a copy**, do this: + +```js +var toBuffer = require('typedarray-to-buffer') + +var arr = new Uint8Array([1, 2, 3]) +arr = toBuffer(arr) + +// arr is a buffer now! + +arr.toString()  // '\u0001\u0002\u0003' +arr.readUInt16BE(0)  // 258 +``` + +## how it works + +If the browser supports typed arrays, then `toBuffer` will **augment the typed array** you +pass in with the `Buffer` methods and return it. See [how does Buffer +work?](https://github.com/feross/buffer#how-does-it-work) for more about how augmentation +works. + +This module uses the typed array's underlying `ArrayBuffer` to back the new `Buffer`. This +respects the "view" on the `ArrayBuffer`, i.e. `byteOffset` and `byteLength`. In other +words, if you do `toBuffer(new Uint32Array([1, 2, 3]))`, then the new `Buffer` will +contain `[1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0]`, **not** `[1, 2, 3]`. And it still doesn't +require a copy. + +If the browser doesn't support typed arrays, then `toBuffer` will create a new `Buffer` +object, copy the data into it, and return it. There's no simple performance optimization +we can do for old browsers. Oh well. + +If this module is used in node, then it will just call `Buffer.from`. This is just for +the convenience of modules that work in both node and the browser. + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org). diff --git a/node_modules/typedarray-to-buffer/index.js b/node_modules/typedarray-to-buffer/index.js new file mode 100644 index 0000000..5fa394d --- /dev/null +++ b/node_modules/typedarray-to-buffer/index.js @@ -0,0 +1,25 @@ +/** + * 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) +  } +} diff --git a/node_modules/typedarray-to-buffer/package.json b/node_modules/typedarray-to-buffer/package.json new file mode 100644 index 0000000..5ec5656 --- /dev/null +++ b/node_modules/typedarray-to-buffer/package.json @@ -0,0 +1,50 @@ +{ +  "name": "typedarray-to-buffer", +  "description": "Convert a typed array to a Buffer without a copy", +  "version": "3.1.5", +  "author": { +    "name": "Feross Aboukhadijeh", +    "email": "feross@feross.org", +    "url": "http://feross.org/" +  }, +  "bugs": { +    "url": "https://github.com/feross/typedarray-to-buffer/issues" +  }, +  "dependencies": { +    "is-typedarray": "^1.0.0" +  }, +  "devDependencies": { +    "airtap": "0.0.4", +    "standard": "*", +    "tape": "^4.0.0" +  }, +  "homepage": "http://feross.org", +  "keywords": [ +    "buffer", +    "typed array", +    "convert", +    "no copy", +    "uint8array", +    "uint16array", +    "uint32array", +    "int16array", +    "int32array", +    "float32array", +    "float64array", +    "browser", +    "arraybuffer", +    "dataview" +  ], +  "license": "MIT", +  "main": "index.js", +  "repository": { +    "type": "git", +    "url": "git://github.com/feross/typedarray-to-buffer.git" +  }, +  "scripts": { +    "test": "standard && npm run test-node && npm run test-browser", +    "test-browser": "airtap -- test/*.js", +    "test-browser-local": "airtap --local -- test/*.js", +    "test-node": "tape test/*.js" +  } +} diff --git a/node_modules/typedarray-to-buffer/test/basic.js b/node_modules/typedarray-to-buffer/test/basic.js new file mode 100644 index 0000000..3521096 --- /dev/null +++ b/node_modules/typedarray-to-buffer/test/basic.js @@ -0,0 +1,50 @@ +var test = require('tape') +var toBuffer = require('../') + +test('convert to buffer from Uint8Array', function (t) { +  if (typeof Uint8Array !== 'undefined') { +    var arr = new Uint8Array([1, 2, 3]) +    arr = toBuffer(arr) + +    t.deepEqual(arr, Buffer.from([1, 2, 3]), 'contents equal') +    t.ok(Buffer.isBuffer(arr), 'is buffer') +    t.equal(arr.readUInt8(0), 1) +    t.equal(arr.readUInt8(1), 2) +    t.equal(arr.readUInt8(2), 3) +  } else { +    t.pass('browser lacks Uint8Array support, skip test') +  } +  t.end() +}) + +test('convert to buffer from another arrayview type (Uint32Array)', function (t) { +  if (typeof Uint32Array !== 'undefined' && Buffer.TYPED_ARRAY_SUPPORT !== false) { +    var arr = new Uint32Array([1, 2, 3]) +    arr = toBuffer(arr) + +    t.deepEqual(arr, Buffer.from([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0]), 'contents equal') +    t.ok(Buffer.isBuffer(arr), 'is buffer') +    t.equal(arr.readUInt32LE(0), 1) +    t.equal(arr.readUInt32LE(4), 2) +    t.equal(arr.readUInt32LE(8), 3) +    t.equal(arr instanceof Uint8Array, true) +  } else { +    t.pass('browser lacks Uint32Array support, skip test') +  } +  t.end() +}) + +test('convert to buffer from ArrayBuffer', function (t) { +  if (typeof Uint32Array !== 'undefined' && Buffer.TYPED_ARRAY_SUPPORT !== false) { +    var arr = new Uint32Array([1, 2, 3]).subarray(1, 2) +    arr = toBuffer(arr) + +    t.deepEqual(arr, Buffer.from([2, 0, 0, 0]), 'contents equal') +    t.ok(Buffer.isBuffer(arr), 'is buffer') +    t.equal(arr.readUInt32LE(0), 2) +    t.equal(arr instanceof Uint8Array, true) +  } else { +    t.pass('browser lacks ArrayBuffer support, skip test') +  } +  t.end() +})  | 
