├── .eslintrc.json ├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── .npmignore ├── .travis.yml ├── LICENSE ├── benchmark.js ├── index.js ├── package-lock.json ├── package.json ├── readme.md ├── tea.yaml └── test.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "node": true, 5 | "commonjs": true, 6 | "es6": true 7 | }, 8 | "extends": "eslint:recommended", 9 | "rules": { 10 | "strict": 2, 11 | "indent": 0, 12 | "linebreak-style": 0, 13 | "quotes": 0, 14 | "semi": 0, 15 | "no-cond-assign": 1, 16 | "no-constant-condition": 1, 17 | "no-duplicate-case": 1, 18 | "no-empty": 1, 19 | "no-ex-assign": 1, 20 | "no-extra-boolean-cast": 1, 21 | "no-extra-semi": 1, 22 | "no-fallthrough": 1, 23 | "no-func-assign": 1, 24 | "no-global-assign": 1, 25 | "no-implicit-globals": 2, 26 | "no-inner-declarations": ["error", "functions"], 27 | "no-irregular-whitespace": 2, 28 | "no-loop-func": 1, 29 | "no-magic-numbers": ["warn", { "ignore": [1, 0, -1], "ignoreArrayIndexes": true}], 30 | "no-multi-str": 1, 31 | "no-mixed-spaces-and-tabs": 1, 32 | "no-proto": 1, 33 | "no-sequences": 1, 34 | "no-throw-literal": 1, 35 | "no-unmodified-loop-condition": 1, 36 | "no-useless-call": 1, 37 | "no-void": 1, 38 | "no-with": 2, 39 | "wrap-iife": 1, 40 | "no-redeclare": 1, 41 | "no-unused-vars": ["error", { "vars": "all", "args": "none" }], 42 | "no-sparse-arrays": 1 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs 3 | 4 | name: Test 5 | 6 | on: 7 | push: 8 | branches: [ "master" ] 9 | pull_request: 10 | branches: [ "master" ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [14.x, 16.x, 18.x] 20 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ 21 | 22 | steps: 23 | - uses: actions/checkout@v3 24 | - name: Use Node.js ${{ matrix.node-version }} 25 | uses: actions/setup-node@v3 26 | with: 27 | node-version: ${{ matrix.node-version }} 28 | cache: 'npm' 29 | - run: npm ci 30 | - run: npm run build --if-present 31 | - run: npm test 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | //this will affect all the git repos 2 | git config --global core.excludesfile ~/.gitignore 3 | 4 | 5 | //update files since .ignore won't if already tracked 6 | git rm --cached 7 | 8 | # Compiled source # 9 | ################### 10 | *.com 11 | *.class 12 | *.dll 13 | *.exe 14 | *.o 15 | *.so 16 | 17 | # Packages # 18 | ############ 19 | # it's better to unpack these files and commit the raw source 20 | # git has its own built in compression methods 21 | *.7z 22 | *.dmg 23 | *.gz 24 | *.iso 25 | *.jar 26 | *.rar 27 | *.tar 28 | *.zip 29 | 30 | # Logs and databases # 31 | ###################### 32 | *.log 33 | *.sql 34 | *.sqlite 35 | 36 | # OS generated files # 37 | ###################### 38 | .DS_Store 39 | .DS_Store? 40 | ._* 41 | .Spotlight-V100 42 | .Trashes 43 | # Icon? 44 | ehthumbs.db 45 | Thumbs.db 46 | .cache 47 | .project 48 | .settings 49 | .tmproj 50 | *.esproj 51 | nbproject 52 | 53 | # Numerous always-ignore extensions # 54 | ##################################### 55 | *.diff 56 | *.err 57 | *.orig 58 | *.rej 59 | *.swn 60 | *.swo 61 | *.swp 62 | *.vi 63 | *~ 64 | *.sass-cache 65 | *.grunt 66 | *.tmp 67 | 68 | # Dreamweaver added files # 69 | ########################### 70 | _notes 71 | dwsync.xml 72 | 73 | # Komodo # 74 | ########################### 75 | *.komodoproject 76 | .komodotools 77 | 78 | # Node # 79 | ##################### 80 | node_modules 81 | 82 | # Bower # 83 | ##################### 84 | bower_components 85 | 86 | # Folders to ignore # 87 | ##################### 88 | .hg 89 | .svn 90 | .CVS 91 | intermediate 92 | publish 93 | .idea 94 | .graphics 95 | _test 96 | _archive 97 | uploads 98 | tmp 99 | 100 | # Vim files to ignore # 101 | ####################### 102 | .VimballRecord 103 | .netrwhist 104 | 105 | bundle.* 106 | 107 | _demo -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | benchmark.js 2 | bundle.js 3 | test.* 4 | *.md 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - 'node' 5 | - '6' 6 | - '5' 7 | - '4' 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2018 Dmitry Yvanov 3 | 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 19 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 21 | OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /benchmark.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Test flat over nested implementations 3 | * 4 | * Results. 5 | * Nested implementation is just a bit slower to create than plain typed array, but way faster to access/write channel data. We can cache subarrays to avoid that. 6 | * 7 | */ 8 | const t = require('tape') 9 | 10 | function Nested(ch, len) { 11 | this.data = [] 12 | for (let i = 0; i < ch; i++) { 13 | this.data[i] = new Float32Array(len) 14 | } 15 | } 16 | 17 | Nested.prototype.getChannelData = function (c) { 18 | return this.data[c] 19 | } 20 | 21 | function Flat(ch, len) { 22 | this.length = len 23 | this.data = new Float32Array(ch * len) 24 | this.channels = [] 25 | for (let i = 0; i < ch; i++) { 26 | this.channels[i] = this.data.subarray(i * len, (i+1) * len) 27 | } 28 | } 29 | 30 | Flat.prototype.getChannelData = function (c) { 31 | return this.channels[c] 32 | } 33 | 34 | 35 | 36 | //test 37 | let N = 1e4 38 | 39 | 40 | t('flat create', t => { 41 | console.time('flat create') 42 | 43 | for (let i = N; i--;) { 44 | let a = new Flat(4, i) 45 | } 46 | 47 | console.timeEnd('flat create') 48 | 49 | t.end() 50 | }) 51 | 52 | t('nested create', t => { 53 | console.time('nested create') 54 | 55 | for (let i = N; i--;) { 56 | let a = new Nested(4, i) 57 | } 58 | 59 | console.timeEnd('nested create') 60 | 61 | t.end() 62 | }) 63 | 64 | 65 | t.test('nested getChannelData', t => { 66 | console.time('nested getChannelData') 67 | 68 | let a = new Nested(4, 1e5) 69 | for (let i = N; i--;) { 70 | let data = a.getChannelData(Math.floor(Math.random() * 4)) 71 | } 72 | 73 | console.timeEnd('nested getChannelData') 74 | 75 | t.end() 76 | }) 77 | 78 | t.test('flat getChannelData', t => { 79 | console.time('flat getChannelData') 80 | 81 | let a = new Flat(4, 1e5) 82 | for (let i = N; i--;) { 83 | let data = a.getChannelData(Math.floor(Math.random() * 4)) 84 | } 85 | 86 | console.timeEnd('flat getChannelData') 87 | 88 | t.end() 89 | }) 90 | 91 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * AudioBuffer class 3 | */ 4 | export default class AudioBuffer { 5 | /** 6 | * Create AudioBuffer instance. 7 | * @constructor 8 | * @param {Object} options - buffer init options. 9 | * @param {number} options.length - buffer length in samples. 10 | * @param {number} options.sampleRate - buffer sample rate. 11 | * @param {number} options.numberOfChannels - number of channels. 12 | */ 13 | constructor(options) { 14 | if (!options) throw TypeError('options argument is required') 15 | if (!options.sampleRate) throw TypeError('options.sampleRate is required') 16 | if (options.sampleRate < 3000 || options.sampleRate > 768000) throw TypeError('options.sampleRate must be within 3000..768000') 17 | if (!options.length) throw TypeError('options.length must be more than 0') 18 | 19 | this.sampleRate = options.sampleRate 20 | this.numberOfChannels = options.numberOfChannels || 1 21 | this.length = options.length | 0 22 | this.duration = this.length / this.sampleRate 23 | 24 | //data is stored as a planar sequence 25 | this._data = new Float32Array(this.length * this.numberOfChannels) 26 | 27 | //channels data is cached as subarrays 28 | this._channelData = [] 29 | for (let c = 0; c < this.numberOfChannels; c++) { 30 | this._channelData.push(this._data.subarray(c * this.length, (c+1) * this.length)) 31 | } 32 | } 33 | 34 | /** 35 | * Return data associated with the channel. 36 | * @param {number} channel - Channel index, starting from 0. 37 | * @return {Float32Array} Array containing the data. 38 | */ 39 | getChannelData (channel) { 40 | if (channel >= this.numberOfChannels || channel < 0 || channel == null) throw Error('Cannot getChannelData: channel number (' + channel + ') exceeds number of channels (' + this.numberOfChannels + ')'); 41 | 42 | return this._channelData[channel] 43 | } 44 | 45 | 46 | /** 47 | * Place data to the destination buffer, starting from the position. 48 | * @param {Float32Array} destination - Destination array to write data to. 49 | * @param {number} channelNumber - Channel to take data from. 50 | * @param {number} startInChannel - Data offset in channel to read from. 51 | */ 52 | copyFromChannel (destination, channelNumber, startInChannel) { 53 | if (startInChannel == null) startInChannel = 0; 54 | var data = this._channelData[channelNumber] 55 | for (var i = startInChannel, j = 0; i < this.length && j < destination.length; i++, j++) { 56 | destination[j] = data[i]; 57 | } 58 | } 59 | 60 | 61 | /** 62 | * Place data from the source to the channel, starting (in self) from the position. 63 | * @param {Float32Array | Array} source - source array to read data from. 64 | * @param {number} channelNumber - channel index to copy data to. 65 | * @param {number} startInChannel - offset in channel to copy data to. 66 | */ 67 | copyToChannel (source, channelNumber, startInChannel) { 68 | var data = this._channelData[channelNumber] 69 | 70 | if (!startInChannel) startInChannel = 0; 71 | 72 | for (var i = startInChannel, j = 0; i < this.length && j < source.length; i++, j++) { 73 | data[i] = source[j]; 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "audio-buffer", 3 | "version": "5.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "audio-buffer", 9 | "version": "5.0.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "tape": "^5.6.3" 13 | } 14 | }, 15 | "node_modules/array.prototype.every": { 16 | "version": "1.1.4", 17 | "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.4.tgz", 18 | "integrity": "sha512-Aui35iRZk1HHLRAyF7QP0KAnOnduaQ6fo6k1NVWfRc0xTs2AZ70ytlXvOmkC6Di4JmUs2Wv3DYzGtCQFSk5uGg==", 19 | "dev": true, 20 | "dependencies": { 21 | "call-bind": "^1.0.2", 22 | "define-properties": "^1.1.4", 23 | "es-abstract": "^1.20.4", 24 | "is-string": "^1.0.7" 25 | }, 26 | "engines": { 27 | "node": ">= 0.4" 28 | }, 29 | "funding": { 30 | "url": "https://github.com/sponsors/ljharb" 31 | } 32 | }, 33 | "node_modules/available-typed-arrays": { 34 | "version": "1.0.5", 35 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 36 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", 37 | "dev": true, 38 | "engines": { 39 | "node": ">= 0.4" 40 | }, 41 | "funding": { 42 | "url": "https://github.com/sponsors/ljharb" 43 | } 44 | }, 45 | "node_modules/balanced-match": { 46 | "version": "1.0.2", 47 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 48 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 49 | "dev": true 50 | }, 51 | "node_modules/brace-expansion": { 52 | "version": "1.1.11", 53 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 54 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 55 | "dev": true, 56 | "dependencies": { 57 | "balanced-match": "^1.0.0", 58 | "concat-map": "0.0.1" 59 | } 60 | }, 61 | "node_modules/call-bind": { 62 | "version": "1.0.2", 63 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 64 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 65 | "dev": true, 66 | "dependencies": { 67 | "function-bind": "^1.1.1", 68 | "get-intrinsic": "^1.0.2" 69 | }, 70 | "funding": { 71 | "url": "https://github.com/sponsors/ljharb" 72 | } 73 | }, 74 | "node_modules/concat-map": { 75 | "version": "0.0.1", 76 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 77 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 78 | "dev": true 79 | }, 80 | "node_modules/deep-equal": { 81 | "version": "2.2.0", 82 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", 83 | "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", 84 | "dev": true, 85 | "dependencies": { 86 | "call-bind": "^1.0.2", 87 | "es-get-iterator": "^1.1.2", 88 | "get-intrinsic": "^1.1.3", 89 | "is-arguments": "^1.1.1", 90 | "is-array-buffer": "^3.0.1", 91 | "is-date-object": "^1.0.5", 92 | "is-regex": "^1.1.4", 93 | "is-shared-array-buffer": "^1.0.2", 94 | "isarray": "^2.0.5", 95 | "object-is": "^1.1.5", 96 | "object-keys": "^1.1.1", 97 | "object.assign": "^4.1.4", 98 | "regexp.prototype.flags": "^1.4.3", 99 | "side-channel": "^1.0.4", 100 | "which-boxed-primitive": "^1.0.2", 101 | "which-collection": "^1.0.1", 102 | "which-typed-array": "^1.1.9" 103 | }, 104 | "funding": { 105 | "url": "https://github.com/sponsors/ljharb" 106 | } 107 | }, 108 | "node_modules/define-properties": { 109 | "version": "1.1.4", 110 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 111 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 112 | "dev": true, 113 | "dependencies": { 114 | "has-property-descriptors": "^1.0.0", 115 | "object-keys": "^1.1.1" 116 | }, 117 | "engines": { 118 | "node": ">= 0.4" 119 | }, 120 | "funding": { 121 | "url": "https://github.com/sponsors/ljharb" 122 | } 123 | }, 124 | "node_modules/defined": { 125 | "version": "1.0.1", 126 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", 127 | "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", 128 | "dev": true, 129 | "funding": { 130 | "url": "https://github.com/sponsors/ljharb" 131 | } 132 | }, 133 | "node_modules/dotignore": { 134 | "version": "0.1.2", 135 | "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", 136 | "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", 137 | "dev": true, 138 | "dependencies": { 139 | "minimatch": "^3.0.4" 140 | }, 141 | "bin": { 142 | "ignored": "bin/ignored" 143 | } 144 | }, 145 | "node_modules/es-abstract": { 146 | "version": "1.21.1", 147 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", 148 | "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", 149 | "dev": true, 150 | "dependencies": { 151 | "available-typed-arrays": "^1.0.5", 152 | "call-bind": "^1.0.2", 153 | "es-set-tostringtag": "^2.0.1", 154 | "es-to-primitive": "^1.2.1", 155 | "function-bind": "^1.1.1", 156 | "function.prototype.name": "^1.1.5", 157 | "get-intrinsic": "^1.1.3", 158 | "get-symbol-description": "^1.0.0", 159 | "globalthis": "^1.0.3", 160 | "gopd": "^1.0.1", 161 | "has": "^1.0.3", 162 | "has-property-descriptors": "^1.0.0", 163 | "has-proto": "^1.0.1", 164 | "has-symbols": "^1.0.3", 165 | "internal-slot": "^1.0.4", 166 | "is-array-buffer": "^3.0.1", 167 | "is-callable": "^1.2.7", 168 | "is-negative-zero": "^2.0.2", 169 | "is-regex": "^1.1.4", 170 | "is-shared-array-buffer": "^1.0.2", 171 | "is-string": "^1.0.7", 172 | "is-typed-array": "^1.1.10", 173 | "is-weakref": "^1.0.2", 174 | "object-inspect": "^1.12.2", 175 | "object-keys": "^1.1.1", 176 | "object.assign": "^4.1.4", 177 | "regexp.prototype.flags": "^1.4.3", 178 | "safe-regex-test": "^1.0.0", 179 | "string.prototype.trimend": "^1.0.6", 180 | "string.prototype.trimstart": "^1.0.6", 181 | "typed-array-length": "^1.0.4", 182 | "unbox-primitive": "^1.0.2", 183 | "which-typed-array": "^1.1.9" 184 | }, 185 | "engines": { 186 | "node": ">= 0.4" 187 | }, 188 | "funding": { 189 | "url": "https://github.com/sponsors/ljharb" 190 | } 191 | }, 192 | "node_modules/es-get-iterator": { 193 | "version": "1.1.3", 194 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", 195 | "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", 196 | "dev": true, 197 | "dependencies": { 198 | "call-bind": "^1.0.2", 199 | "get-intrinsic": "^1.1.3", 200 | "has-symbols": "^1.0.3", 201 | "is-arguments": "^1.1.1", 202 | "is-map": "^2.0.2", 203 | "is-set": "^2.0.2", 204 | "is-string": "^1.0.7", 205 | "isarray": "^2.0.5", 206 | "stop-iteration-iterator": "^1.0.0" 207 | }, 208 | "funding": { 209 | "url": "https://github.com/sponsors/ljharb" 210 | } 211 | }, 212 | "node_modules/es-set-tostringtag": { 213 | "version": "2.0.1", 214 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", 215 | "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", 216 | "dev": true, 217 | "dependencies": { 218 | "get-intrinsic": "^1.1.3", 219 | "has": "^1.0.3", 220 | "has-tostringtag": "^1.0.0" 221 | }, 222 | "engines": { 223 | "node": ">= 0.4" 224 | } 225 | }, 226 | "node_modules/es-to-primitive": { 227 | "version": "1.2.1", 228 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 229 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 230 | "dev": true, 231 | "dependencies": { 232 | "is-callable": "^1.1.4", 233 | "is-date-object": "^1.0.1", 234 | "is-symbol": "^1.0.2" 235 | }, 236 | "engines": { 237 | "node": ">= 0.4" 238 | }, 239 | "funding": { 240 | "url": "https://github.com/sponsors/ljharb" 241 | } 242 | }, 243 | "node_modules/for-each": { 244 | "version": "0.3.3", 245 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 246 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 247 | "dev": true, 248 | "dependencies": { 249 | "is-callable": "^1.1.3" 250 | } 251 | }, 252 | "node_modules/fs.realpath": { 253 | "version": "1.0.0", 254 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 255 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 256 | "dev": true 257 | }, 258 | "node_modules/function-bind": { 259 | "version": "1.1.1", 260 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 261 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 262 | "dev": true 263 | }, 264 | "node_modules/function.prototype.name": { 265 | "version": "1.1.5", 266 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", 267 | "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", 268 | "dev": true, 269 | "dependencies": { 270 | "call-bind": "^1.0.2", 271 | "define-properties": "^1.1.3", 272 | "es-abstract": "^1.19.0", 273 | "functions-have-names": "^1.2.2" 274 | }, 275 | "engines": { 276 | "node": ">= 0.4" 277 | }, 278 | "funding": { 279 | "url": "https://github.com/sponsors/ljharb" 280 | } 281 | }, 282 | "node_modules/functions-have-names": { 283 | "version": "1.2.3", 284 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 285 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 286 | "dev": true, 287 | "funding": { 288 | "url": "https://github.com/sponsors/ljharb" 289 | } 290 | }, 291 | "node_modules/get-intrinsic": { 292 | "version": "1.2.0", 293 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 294 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 295 | "dev": true, 296 | "dependencies": { 297 | "function-bind": "^1.1.1", 298 | "has": "^1.0.3", 299 | "has-symbols": "^1.0.3" 300 | }, 301 | "funding": { 302 | "url": "https://github.com/sponsors/ljharb" 303 | } 304 | }, 305 | "node_modules/get-package-type": { 306 | "version": "0.1.0", 307 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 308 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 309 | "dev": true, 310 | "engines": { 311 | "node": ">=8.0.0" 312 | } 313 | }, 314 | "node_modules/get-symbol-description": { 315 | "version": "1.0.0", 316 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 317 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 318 | "dev": true, 319 | "dependencies": { 320 | "call-bind": "^1.0.2", 321 | "get-intrinsic": "^1.1.1" 322 | }, 323 | "engines": { 324 | "node": ">= 0.4" 325 | }, 326 | "funding": { 327 | "url": "https://github.com/sponsors/ljharb" 328 | } 329 | }, 330 | "node_modules/glob": { 331 | "version": "7.2.3", 332 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 333 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 334 | "dev": true, 335 | "dependencies": { 336 | "fs.realpath": "^1.0.0", 337 | "inflight": "^1.0.4", 338 | "inherits": "2", 339 | "minimatch": "^3.1.1", 340 | "once": "^1.3.0", 341 | "path-is-absolute": "^1.0.0" 342 | }, 343 | "engines": { 344 | "node": "*" 345 | }, 346 | "funding": { 347 | "url": "https://github.com/sponsors/isaacs" 348 | } 349 | }, 350 | "node_modules/globalthis": { 351 | "version": "1.0.3", 352 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 353 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 354 | "dev": true, 355 | "dependencies": { 356 | "define-properties": "^1.1.3" 357 | }, 358 | "engines": { 359 | "node": ">= 0.4" 360 | }, 361 | "funding": { 362 | "url": "https://github.com/sponsors/ljharb" 363 | } 364 | }, 365 | "node_modules/gopd": { 366 | "version": "1.0.1", 367 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 368 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 369 | "dev": true, 370 | "dependencies": { 371 | "get-intrinsic": "^1.1.3" 372 | }, 373 | "funding": { 374 | "url": "https://github.com/sponsors/ljharb" 375 | } 376 | }, 377 | "node_modules/has": { 378 | "version": "1.0.3", 379 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 380 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 381 | "dev": true, 382 | "dependencies": { 383 | "function-bind": "^1.1.1" 384 | }, 385 | "engines": { 386 | "node": ">= 0.4.0" 387 | } 388 | }, 389 | "node_modules/has-bigints": { 390 | "version": "1.0.2", 391 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 392 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 393 | "dev": true, 394 | "funding": { 395 | "url": "https://github.com/sponsors/ljharb" 396 | } 397 | }, 398 | "node_modules/has-dynamic-import": { 399 | "version": "2.0.1", 400 | "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz", 401 | "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==", 402 | "dev": true, 403 | "dependencies": { 404 | "call-bind": "^1.0.2", 405 | "get-intrinsic": "^1.1.1" 406 | }, 407 | "funding": { 408 | "url": "https://github.com/sponsors/ljharb" 409 | } 410 | }, 411 | "node_modules/has-property-descriptors": { 412 | "version": "1.0.0", 413 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 414 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 415 | "dev": true, 416 | "dependencies": { 417 | "get-intrinsic": "^1.1.1" 418 | }, 419 | "funding": { 420 | "url": "https://github.com/sponsors/ljharb" 421 | } 422 | }, 423 | "node_modules/has-proto": { 424 | "version": "1.0.1", 425 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 426 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 427 | "dev": true, 428 | "engines": { 429 | "node": ">= 0.4" 430 | }, 431 | "funding": { 432 | "url": "https://github.com/sponsors/ljharb" 433 | } 434 | }, 435 | "node_modules/has-symbols": { 436 | "version": "1.0.3", 437 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 438 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 439 | "dev": true, 440 | "engines": { 441 | "node": ">= 0.4" 442 | }, 443 | "funding": { 444 | "url": "https://github.com/sponsors/ljharb" 445 | } 446 | }, 447 | "node_modules/has-tostringtag": { 448 | "version": "1.0.0", 449 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 450 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 451 | "dev": true, 452 | "dependencies": { 453 | "has-symbols": "^1.0.2" 454 | }, 455 | "engines": { 456 | "node": ">= 0.4" 457 | }, 458 | "funding": { 459 | "url": "https://github.com/sponsors/ljharb" 460 | } 461 | }, 462 | "node_modules/inflight": { 463 | "version": "1.0.6", 464 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 465 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 466 | "dev": true, 467 | "dependencies": { 468 | "once": "^1.3.0", 469 | "wrappy": "1" 470 | } 471 | }, 472 | "node_modules/inherits": { 473 | "version": "2.0.4", 474 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 475 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 476 | "dev": true 477 | }, 478 | "node_modules/internal-slot": { 479 | "version": "1.0.4", 480 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", 481 | "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", 482 | "dev": true, 483 | "dependencies": { 484 | "get-intrinsic": "^1.1.3", 485 | "has": "^1.0.3", 486 | "side-channel": "^1.0.4" 487 | }, 488 | "engines": { 489 | "node": ">= 0.4" 490 | } 491 | }, 492 | "node_modules/is-arguments": { 493 | "version": "1.1.1", 494 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", 495 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", 496 | "dev": true, 497 | "dependencies": { 498 | "call-bind": "^1.0.2", 499 | "has-tostringtag": "^1.0.0" 500 | }, 501 | "engines": { 502 | "node": ">= 0.4" 503 | }, 504 | "funding": { 505 | "url": "https://github.com/sponsors/ljharb" 506 | } 507 | }, 508 | "node_modules/is-array-buffer": { 509 | "version": "3.0.1", 510 | "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", 511 | "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", 512 | "dev": true, 513 | "dependencies": { 514 | "call-bind": "^1.0.2", 515 | "get-intrinsic": "^1.1.3", 516 | "is-typed-array": "^1.1.10" 517 | }, 518 | "funding": { 519 | "url": "https://github.com/sponsors/ljharb" 520 | } 521 | }, 522 | "node_modules/is-bigint": { 523 | "version": "1.0.4", 524 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 525 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 526 | "dev": true, 527 | "dependencies": { 528 | "has-bigints": "^1.0.1" 529 | }, 530 | "funding": { 531 | "url": "https://github.com/sponsors/ljharb" 532 | } 533 | }, 534 | "node_modules/is-boolean-object": { 535 | "version": "1.1.2", 536 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 537 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 538 | "dev": true, 539 | "dependencies": { 540 | "call-bind": "^1.0.2", 541 | "has-tostringtag": "^1.0.0" 542 | }, 543 | "engines": { 544 | "node": ">= 0.4" 545 | }, 546 | "funding": { 547 | "url": "https://github.com/sponsors/ljharb" 548 | } 549 | }, 550 | "node_modules/is-callable": { 551 | "version": "1.2.7", 552 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 553 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 554 | "dev": true, 555 | "engines": { 556 | "node": ">= 0.4" 557 | }, 558 | "funding": { 559 | "url": "https://github.com/sponsors/ljharb" 560 | } 561 | }, 562 | "node_modules/is-core-module": { 563 | "version": "2.11.0", 564 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 565 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 566 | "dev": true, 567 | "dependencies": { 568 | "has": "^1.0.3" 569 | }, 570 | "funding": { 571 | "url": "https://github.com/sponsors/ljharb" 572 | } 573 | }, 574 | "node_modules/is-date-object": { 575 | "version": "1.0.5", 576 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 577 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 578 | "dev": true, 579 | "dependencies": { 580 | "has-tostringtag": "^1.0.0" 581 | }, 582 | "engines": { 583 | "node": ">= 0.4" 584 | }, 585 | "funding": { 586 | "url": "https://github.com/sponsors/ljharb" 587 | } 588 | }, 589 | "node_modules/is-map": { 590 | "version": "2.0.2", 591 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", 592 | "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", 593 | "dev": true, 594 | "funding": { 595 | "url": "https://github.com/sponsors/ljharb" 596 | } 597 | }, 598 | "node_modules/is-negative-zero": { 599 | "version": "2.0.2", 600 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 601 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 602 | "dev": true, 603 | "engines": { 604 | "node": ">= 0.4" 605 | }, 606 | "funding": { 607 | "url": "https://github.com/sponsors/ljharb" 608 | } 609 | }, 610 | "node_modules/is-number-object": { 611 | "version": "1.0.7", 612 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 613 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 614 | "dev": true, 615 | "dependencies": { 616 | "has-tostringtag": "^1.0.0" 617 | }, 618 | "engines": { 619 | "node": ">= 0.4" 620 | }, 621 | "funding": { 622 | "url": "https://github.com/sponsors/ljharb" 623 | } 624 | }, 625 | "node_modules/is-regex": { 626 | "version": "1.1.4", 627 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 628 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 629 | "dev": true, 630 | "dependencies": { 631 | "call-bind": "^1.0.2", 632 | "has-tostringtag": "^1.0.0" 633 | }, 634 | "engines": { 635 | "node": ">= 0.4" 636 | }, 637 | "funding": { 638 | "url": "https://github.com/sponsors/ljharb" 639 | } 640 | }, 641 | "node_modules/is-set": { 642 | "version": "2.0.2", 643 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", 644 | "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", 645 | "dev": true, 646 | "funding": { 647 | "url": "https://github.com/sponsors/ljharb" 648 | } 649 | }, 650 | "node_modules/is-shared-array-buffer": { 651 | "version": "1.0.2", 652 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 653 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 654 | "dev": true, 655 | "dependencies": { 656 | "call-bind": "^1.0.2" 657 | }, 658 | "funding": { 659 | "url": "https://github.com/sponsors/ljharb" 660 | } 661 | }, 662 | "node_modules/is-string": { 663 | "version": "1.0.7", 664 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 665 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 666 | "dev": true, 667 | "dependencies": { 668 | "has-tostringtag": "^1.0.0" 669 | }, 670 | "engines": { 671 | "node": ">= 0.4" 672 | }, 673 | "funding": { 674 | "url": "https://github.com/sponsors/ljharb" 675 | } 676 | }, 677 | "node_modules/is-symbol": { 678 | "version": "1.0.4", 679 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 680 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 681 | "dev": true, 682 | "dependencies": { 683 | "has-symbols": "^1.0.2" 684 | }, 685 | "engines": { 686 | "node": ">= 0.4" 687 | }, 688 | "funding": { 689 | "url": "https://github.com/sponsors/ljharb" 690 | } 691 | }, 692 | "node_modules/is-typed-array": { 693 | "version": "1.1.10", 694 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", 695 | "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", 696 | "dev": true, 697 | "dependencies": { 698 | "available-typed-arrays": "^1.0.5", 699 | "call-bind": "^1.0.2", 700 | "for-each": "^0.3.3", 701 | "gopd": "^1.0.1", 702 | "has-tostringtag": "^1.0.0" 703 | }, 704 | "engines": { 705 | "node": ">= 0.4" 706 | }, 707 | "funding": { 708 | "url": "https://github.com/sponsors/ljharb" 709 | } 710 | }, 711 | "node_modules/is-weakmap": { 712 | "version": "2.0.1", 713 | "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", 714 | "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", 715 | "dev": true, 716 | "funding": { 717 | "url": "https://github.com/sponsors/ljharb" 718 | } 719 | }, 720 | "node_modules/is-weakref": { 721 | "version": "1.0.2", 722 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 723 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 724 | "dev": true, 725 | "dependencies": { 726 | "call-bind": "^1.0.2" 727 | }, 728 | "funding": { 729 | "url": "https://github.com/sponsors/ljharb" 730 | } 731 | }, 732 | "node_modules/is-weakset": { 733 | "version": "2.0.2", 734 | "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", 735 | "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", 736 | "dev": true, 737 | "dependencies": { 738 | "call-bind": "^1.0.2", 739 | "get-intrinsic": "^1.1.1" 740 | }, 741 | "funding": { 742 | "url": "https://github.com/sponsors/ljharb" 743 | } 744 | }, 745 | "node_modules/isarray": { 746 | "version": "2.0.5", 747 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 748 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 749 | "dev": true 750 | }, 751 | "node_modules/minimatch": { 752 | "version": "3.1.2", 753 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 754 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 755 | "dev": true, 756 | "dependencies": { 757 | "brace-expansion": "^1.1.7" 758 | }, 759 | "engines": { 760 | "node": "*" 761 | } 762 | }, 763 | "node_modules/minimist": { 764 | "version": "1.2.7", 765 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 766 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 767 | "dev": true, 768 | "funding": { 769 | "url": "https://github.com/sponsors/ljharb" 770 | } 771 | }, 772 | "node_modules/object-inspect": { 773 | "version": "1.12.3", 774 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 775 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 776 | "dev": true, 777 | "funding": { 778 | "url": "https://github.com/sponsors/ljharb" 779 | } 780 | }, 781 | "node_modules/object-is": { 782 | "version": "1.1.5", 783 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", 784 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", 785 | "dev": true, 786 | "dependencies": { 787 | "call-bind": "^1.0.2", 788 | "define-properties": "^1.1.3" 789 | }, 790 | "engines": { 791 | "node": ">= 0.4" 792 | }, 793 | "funding": { 794 | "url": "https://github.com/sponsors/ljharb" 795 | } 796 | }, 797 | "node_modules/object-keys": { 798 | "version": "1.1.1", 799 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 800 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 801 | "dev": true, 802 | "engines": { 803 | "node": ">= 0.4" 804 | } 805 | }, 806 | "node_modules/object.assign": { 807 | "version": "4.1.4", 808 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", 809 | "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", 810 | "dev": true, 811 | "dependencies": { 812 | "call-bind": "^1.0.2", 813 | "define-properties": "^1.1.4", 814 | "has-symbols": "^1.0.3", 815 | "object-keys": "^1.1.1" 816 | }, 817 | "engines": { 818 | "node": ">= 0.4" 819 | }, 820 | "funding": { 821 | "url": "https://github.com/sponsors/ljharb" 822 | } 823 | }, 824 | "node_modules/once": { 825 | "version": "1.4.0", 826 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 827 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 828 | "dev": true, 829 | "dependencies": { 830 | "wrappy": "1" 831 | } 832 | }, 833 | "node_modules/path-is-absolute": { 834 | "version": "1.0.1", 835 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 836 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 837 | "dev": true, 838 | "engines": { 839 | "node": ">=0.10.0" 840 | } 841 | }, 842 | "node_modules/path-parse": { 843 | "version": "1.0.7", 844 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 845 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 846 | "dev": true 847 | }, 848 | "node_modules/regexp.prototype.flags": { 849 | "version": "1.4.3", 850 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 851 | "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 852 | "dev": true, 853 | "dependencies": { 854 | "call-bind": "^1.0.2", 855 | "define-properties": "^1.1.3", 856 | "functions-have-names": "^1.2.2" 857 | }, 858 | "engines": { 859 | "node": ">= 0.4" 860 | }, 861 | "funding": { 862 | "url": "https://github.com/sponsors/ljharb" 863 | } 864 | }, 865 | "node_modules/resolve": { 866 | "version": "2.0.0-next.4", 867 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", 868 | "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", 869 | "dev": true, 870 | "dependencies": { 871 | "is-core-module": "^2.9.0", 872 | "path-parse": "^1.0.7", 873 | "supports-preserve-symlinks-flag": "^1.0.0" 874 | }, 875 | "bin": { 876 | "resolve": "bin/resolve" 877 | }, 878 | "funding": { 879 | "url": "https://github.com/sponsors/ljharb" 880 | } 881 | }, 882 | "node_modules/resumer": { 883 | "version": "0.0.0", 884 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 885 | "integrity": "sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==", 886 | "dev": true, 887 | "dependencies": { 888 | "through": "~2.3.4" 889 | } 890 | }, 891 | "node_modules/safe-regex-test": { 892 | "version": "1.0.0", 893 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", 894 | "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", 895 | "dev": true, 896 | "dependencies": { 897 | "call-bind": "^1.0.2", 898 | "get-intrinsic": "^1.1.3", 899 | "is-regex": "^1.1.4" 900 | }, 901 | "funding": { 902 | "url": "https://github.com/sponsors/ljharb" 903 | } 904 | }, 905 | "node_modules/side-channel": { 906 | "version": "1.0.4", 907 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 908 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 909 | "dev": true, 910 | "dependencies": { 911 | "call-bind": "^1.0.0", 912 | "get-intrinsic": "^1.0.2", 913 | "object-inspect": "^1.9.0" 914 | }, 915 | "funding": { 916 | "url": "https://github.com/sponsors/ljharb" 917 | } 918 | }, 919 | "node_modules/stop-iteration-iterator": { 920 | "version": "1.0.0", 921 | "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", 922 | "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", 923 | "dev": true, 924 | "dependencies": { 925 | "internal-slot": "^1.0.4" 926 | }, 927 | "engines": { 928 | "node": ">= 0.4" 929 | } 930 | }, 931 | "node_modules/string.prototype.trim": { 932 | "version": "1.2.7", 933 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", 934 | "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", 935 | "dev": true, 936 | "dependencies": { 937 | "call-bind": "^1.0.2", 938 | "define-properties": "^1.1.4", 939 | "es-abstract": "^1.20.4" 940 | }, 941 | "engines": { 942 | "node": ">= 0.4" 943 | }, 944 | "funding": { 945 | "url": "https://github.com/sponsors/ljharb" 946 | } 947 | }, 948 | "node_modules/string.prototype.trimend": { 949 | "version": "1.0.6", 950 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", 951 | "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", 952 | "dev": true, 953 | "dependencies": { 954 | "call-bind": "^1.0.2", 955 | "define-properties": "^1.1.4", 956 | "es-abstract": "^1.20.4" 957 | }, 958 | "funding": { 959 | "url": "https://github.com/sponsors/ljharb" 960 | } 961 | }, 962 | "node_modules/string.prototype.trimstart": { 963 | "version": "1.0.6", 964 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", 965 | "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", 966 | "dev": true, 967 | "dependencies": { 968 | "call-bind": "^1.0.2", 969 | "define-properties": "^1.1.4", 970 | "es-abstract": "^1.20.4" 971 | }, 972 | "funding": { 973 | "url": "https://github.com/sponsors/ljharb" 974 | } 975 | }, 976 | "node_modules/supports-preserve-symlinks-flag": { 977 | "version": "1.0.0", 978 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 979 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 980 | "dev": true, 981 | "engines": { 982 | "node": ">= 0.4" 983 | }, 984 | "funding": { 985 | "url": "https://github.com/sponsors/ljharb" 986 | } 987 | }, 988 | "node_modules/tape": { 989 | "version": "5.6.3", 990 | "resolved": "https://registry.npmjs.org/tape/-/tape-5.6.3.tgz", 991 | "integrity": "sha512-cUDDGSbyoSIpdUAqbqLI/r7i/S4BHuCB9M5j7E/LrLs/x/i4zeAJ798aqo+FGo+kr9seBZwr8AkZW6rjceyAMQ==", 992 | "dev": true, 993 | "dependencies": { 994 | "array.prototype.every": "^1.1.4", 995 | "call-bind": "^1.0.2", 996 | "deep-equal": "^2.2.0", 997 | "defined": "^1.0.1", 998 | "dotignore": "^0.1.2", 999 | "for-each": "^0.3.3", 1000 | "get-package-type": "^0.1.0", 1001 | "glob": "^7.2.3", 1002 | "has": "^1.0.3", 1003 | "has-dynamic-import": "^2.0.1", 1004 | "inherits": "^2.0.4", 1005 | "is-regex": "^1.1.4", 1006 | "minimist": "^1.2.7", 1007 | "object-inspect": "^1.12.3", 1008 | "object-is": "^1.1.5", 1009 | "object-keys": "^1.1.1", 1010 | "object.assign": "^4.1.4", 1011 | "resolve": "^2.0.0-next.4", 1012 | "resumer": "^0.0.0", 1013 | "string.prototype.trim": "^1.2.7", 1014 | "through": "^2.3.8" 1015 | }, 1016 | "bin": { 1017 | "tape": "bin/tape" 1018 | }, 1019 | "funding": { 1020 | "url": "https://github.com/sponsors/ljharb" 1021 | } 1022 | }, 1023 | "node_modules/through": { 1024 | "version": "2.3.8", 1025 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1026 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 1027 | "dev": true 1028 | }, 1029 | "node_modules/typed-array-length": { 1030 | "version": "1.0.4", 1031 | "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", 1032 | "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", 1033 | "dev": true, 1034 | "dependencies": { 1035 | "call-bind": "^1.0.2", 1036 | "for-each": "^0.3.3", 1037 | "is-typed-array": "^1.1.9" 1038 | }, 1039 | "funding": { 1040 | "url": "https://github.com/sponsors/ljharb" 1041 | } 1042 | }, 1043 | "node_modules/unbox-primitive": { 1044 | "version": "1.0.2", 1045 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 1046 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "call-bind": "^1.0.2", 1050 | "has-bigints": "^1.0.2", 1051 | "has-symbols": "^1.0.3", 1052 | "which-boxed-primitive": "^1.0.2" 1053 | }, 1054 | "funding": { 1055 | "url": "https://github.com/sponsors/ljharb" 1056 | } 1057 | }, 1058 | "node_modules/which-boxed-primitive": { 1059 | "version": "1.0.2", 1060 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 1061 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 1062 | "dev": true, 1063 | "dependencies": { 1064 | "is-bigint": "^1.0.1", 1065 | "is-boolean-object": "^1.1.0", 1066 | "is-number-object": "^1.0.4", 1067 | "is-string": "^1.0.5", 1068 | "is-symbol": "^1.0.3" 1069 | }, 1070 | "funding": { 1071 | "url": "https://github.com/sponsors/ljharb" 1072 | } 1073 | }, 1074 | "node_modules/which-collection": { 1075 | "version": "1.0.1", 1076 | "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", 1077 | "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", 1078 | "dev": true, 1079 | "dependencies": { 1080 | "is-map": "^2.0.1", 1081 | "is-set": "^2.0.1", 1082 | "is-weakmap": "^2.0.1", 1083 | "is-weakset": "^2.0.1" 1084 | }, 1085 | "funding": { 1086 | "url": "https://github.com/sponsors/ljharb" 1087 | } 1088 | }, 1089 | "node_modules/which-typed-array": { 1090 | "version": "1.1.9", 1091 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", 1092 | "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", 1093 | "dev": true, 1094 | "dependencies": { 1095 | "available-typed-arrays": "^1.0.5", 1096 | "call-bind": "^1.0.2", 1097 | "for-each": "^0.3.3", 1098 | "gopd": "^1.0.1", 1099 | "has-tostringtag": "^1.0.0", 1100 | "is-typed-array": "^1.1.10" 1101 | }, 1102 | "engines": { 1103 | "node": ">= 0.4" 1104 | }, 1105 | "funding": { 1106 | "url": "https://github.com/sponsors/ljharb" 1107 | } 1108 | }, 1109 | "node_modules/wrappy": { 1110 | "version": "1.0.2", 1111 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1112 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1113 | "dev": true 1114 | } 1115 | }, 1116 | "dependencies": { 1117 | "array.prototype.every": { 1118 | "version": "1.1.4", 1119 | "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.4.tgz", 1120 | "integrity": "sha512-Aui35iRZk1HHLRAyF7QP0KAnOnduaQ6fo6k1NVWfRc0xTs2AZ70ytlXvOmkC6Di4JmUs2Wv3DYzGtCQFSk5uGg==", 1121 | "dev": true, 1122 | "requires": { 1123 | "call-bind": "^1.0.2", 1124 | "define-properties": "^1.1.4", 1125 | "es-abstract": "^1.20.4", 1126 | "is-string": "^1.0.7" 1127 | } 1128 | }, 1129 | "available-typed-arrays": { 1130 | "version": "1.0.5", 1131 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 1132 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", 1133 | "dev": true 1134 | }, 1135 | "balanced-match": { 1136 | "version": "1.0.2", 1137 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1138 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1139 | "dev": true 1140 | }, 1141 | "brace-expansion": { 1142 | "version": "1.1.11", 1143 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1144 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1145 | "dev": true, 1146 | "requires": { 1147 | "balanced-match": "^1.0.0", 1148 | "concat-map": "0.0.1" 1149 | } 1150 | }, 1151 | "call-bind": { 1152 | "version": "1.0.2", 1153 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1154 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1155 | "dev": true, 1156 | "requires": { 1157 | "function-bind": "^1.1.1", 1158 | "get-intrinsic": "^1.0.2" 1159 | } 1160 | }, 1161 | "concat-map": { 1162 | "version": "0.0.1", 1163 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1164 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1165 | "dev": true 1166 | }, 1167 | "deep-equal": { 1168 | "version": "2.2.0", 1169 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", 1170 | "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", 1171 | "dev": true, 1172 | "requires": { 1173 | "call-bind": "^1.0.2", 1174 | "es-get-iterator": "^1.1.2", 1175 | "get-intrinsic": "^1.1.3", 1176 | "is-arguments": "^1.1.1", 1177 | "is-array-buffer": "^3.0.1", 1178 | "is-date-object": "^1.0.5", 1179 | "is-regex": "^1.1.4", 1180 | "is-shared-array-buffer": "^1.0.2", 1181 | "isarray": "^2.0.5", 1182 | "object-is": "^1.1.5", 1183 | "object-keys": "^1.1.1", 1184 | "object.assign": "^4.1.4", 1185 | "regexp.prototype.flags": "^1.4.3", 1186 | "side-channel": "^1.0.4", 1187 | "which-boxed-primitive": "^1.0.2", 1188 | "which-collection": "^1.0.1", 1189 | "which-typed-array": "^1.1.9" 1190 | } 1191 | }, 1192 | "define-properties": { 1193 | "version": "1.1.4", 1194 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 1195 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 1196 | "dev": true, 1197 | "requires": { 1198 | "has-property-descriptors": "^1.0.0", 1199 | "object-keys": "^1.1.1" 1200 | } 1201 | }, 1202 | "defined": { 1203 | "version": "1.0.1", 1204 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", 1205 | "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", 1206 | "dev": true 1207 | }, 1208 | "dotignore": { 1209 | "version": "0.1.2", 1210 | "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", 1211 | "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", 1212 | "dev": true, 1213 | "requires": { 1214 | "minimatch": "^3.0.4" 1215 | } 1216 | }, 1217 | "es-abstract": { 1218 | "version": "1.21.1", 1219 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", 1220 | "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", 1221 | "dev": true, 1222 | "requires": { 1223 | "available-typed-arrays": "^1.0.5", 1224 | "call-bind": "^1.0.2", 1225 | "es-set-tostringtag": "^2.0.1", 1226 | "es-to-primitive": "^1.2.1", 1227 | "function-bind": "^1.1.1", 1228 | "function.prototype.name": "^1.1.5", 1229 | "get-intrinsic": "^1.1.3", 1230 | "get-symbol-description": "^1.0.0", 1231 | "globalthis": "^1.0.3", 1232 | "gopd": "^1.0.1", 1233 | "has": "^1.0.3", 1234 | "has-property-descriptors": "^1.0.0", 1235 | "has-proto": "^1.0.1", 1236 | "has-symbols": "^1.0.3", 1237 | "internal-slot": "^1.0.4", 1238 | "is-array-buffer": "^3.0.1", 1239 | "is-callable": "^1.2.7", 1240 | "is-negative-zero": "^2.0.2", 1241 | "is-regex": "^1.1.4", 1242 | "is-shared-array-buffer": "^1.0.2", 1243 | "is-string": "^1.0.7", 1244 | "is-typed-array": "^1.1.10", 1245 | "is-weakref": "^1.0.2", 1246 | "object-inspect": "^1.12.2", 1247 | "object-keys": "^1.1.1", 1248 | "object.assign": "^4.1.4", 1249 | "regexp.prototype.flags": "^1.4.3", 1250 | "safe-regex-test": "^1.0.0", 1251 | "string.prototype.trimend": "^1.0.6", 1252 | "string.prototype.trimstart": "^1.0.6", 1253 | "typed-array-length": "^1.0.4", 1254 | "unbox-primitive": "^1.0.2", 1255 | "which-typed-array": "^1.1.9" 1256 | } 1257 | }, 1258 | "es-get-iterator": { 1259 | "version": "1.1.3", 1260 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", 1261 | "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", 1262 | "dev": true, 1263 | "requires": { 1264 | "call-bind": "^1.0.2", 1265 | "get-intrinsic": "^1.1.3", 1266 | "has-symbols": "^1.0.3", 1267 | "is-arguments": "^1.1.1", 1268 | "is-map": "^2.0.2", 1269 | "is-set": "^2.0.2", 1270 | "is-string": "^1.0.7", 1271 | "isarray": "^2.0.5", 1272 | "stop-iteration-iterator": "^1.0.0" 1273 | } 1274 | }, 1275 | "es-set-tostringtag": { 1276 | "version": "2.0.1", 1277 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", 1278 | "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", 1279 | "dev": true, 1280 | "requires": { 1281 | "get-intrinsic": "^1.1.3", 1282 | "has": "^1.0.3", 1283 | "has-tostringtag": "^1.0.0" 1284 | } 1285 | }, 1286 | "es-to-primitive": { 1287 | "version": "1.2.1", 1288 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1289 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1290 | "dev": true, 1291 | "requires": { 1292 | "is-callable": "^1.1.4", 1293 | "is-date-object": "^1.0.1", 1294 | "is-symbol": "^1.0.2" 1295 | } 1296 | }, 1297 | "for-each": { 1298 | "version": "0.3.3", 1299 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 1300 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 1301 | "dev": true, 1302 | "requires": { 1303 | "is-callable": "^1.1.3" 1304 | } 1305 | }, 1306 | "fs.realpath": { 1307 | "version": "1.0.0", 1308 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1309 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1310 | "dev": true 1311 | }, 1312 | "function-bind": { 1313 | "version": "1.1.1", 1314 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1315 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1316 | "dev": true 1317 | }, 1318 | "function.prototype.name": { 1319 | "version": "1.1.5", 1320 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", 1321 | "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", 1322 | "dev": true, 1323 | "requires": { 1324 | "call-bind": "^1.0.2", 1325 | "define-properties": "^1.1.3", 1326 | "es-abstract": "^1.19.0", 1327 | "functions-have-names": "^1.2.2" 1328 | } 1329 | }, 1330 | "functions-have-names": { 1331 | "version": "1.2.3", 1332 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 1333 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 1334 | "dev": true 1335 | }, 1336 | "get-intrinsic": { 1337 | "version": "1.2.0", 1338 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1339 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1340 | "dev": true, 1341 | "requires": { 1342 | "function-bind": "^1.1.1", 1343 | "has": "^1.0.3", 1344 | "has-symbols": "^1.0.3" 1345 | } 1346 | }, 1347 | "get-package-type": { 1348 | "version": "0.1.0", 1349 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 1350 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 1351 | "dev": true 1352 | }, 1353 | "get-symbol-description": { 1354 | "version": "1.0.0", 1355 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1356 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1357 | "dev": true, 1358 | "requires": { 1359 | "call-bind": "^1.0.2", 1360 | "get-intrinsic": "^1.1.1" 1361 | } 1362 | }, 1363 | "glob": { 1364 | "version": "7.2.3", 1365 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1366 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1367 | "dev": true, 1368 | "requires": { 1369 | "fs.realpath": "^1.0.0", 1370 | "inflight": "^1.0.4", 1371 | "inherits": "2", 1372 | "minimatch": "^3.1.1", 1373 | "once": "^1.3.0", 1374 | "path-is-absolute": "^1.0.0" 1375 | } 1376 | }, 1377 | "globalthis": { 1378 | "version": "1.0.3", 1379 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 1380 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 1381 | "dev": true, 1382 | "requires": { 1383 | "define-properties": "^1.1.3" 1384 | } 1385 | }, 1386 | "gopd": { 1387 | "version": "1.0.1", 1388 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 1389 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 1390 | "dev": true, 1391 | "requires": { 1392 | "get-intrinsic": "^1.1.3" 1393 | } 1394 | }, 1395 | "has": { 1396 | "version": "1.0.3", 1397 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1398 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1399 | "dev": true, 1400 | "requires": { 1401 | "function-bind": "^1.1.1" 1402 | } 1403 | }, 1404 | "has-bigints": { 1405 | "version": "1.0.2", 1406 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 1407 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 1408 | "dev": true 1409 | }, 1410 | "has-dynamic-import": { 1411 | "version": "2.0.1", 1412 | "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz", 1413 | "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==", 1414 | "dev": true, 1415 | "requires": { 1416 | "call-bind": "^1.0.2", 1417 | "get-intrinsic": "^1.1.1" 1418 | } 1419 | }, 1420 | "has-property-descriptors": { 1421 | "version": "1.0.0", 1422 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1423 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1424 | "dev": true, 1425 | "requires": { 1426 | "get-intrinsic": "^1.1.1" 1427 | } 1428 | }, 1429 | "has-proto": { 1430 | "version": "1.0.1", 1431 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 1432 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 1433 | "dev": true 1434 | }, 1435 | "has-symbols": { 1436 | "version": "1.0.3", 1437 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1438 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1439 | "dev": true 1440 | }, 1441 | "has-tostringtag": { 1442 | "version": "1.0.0", 1443 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1444 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1445 | "dev": true, 1446 | "requires": { 1447 | "has-symbols": "^1.0.2" 1448 | } 1449 | }, 1450 | "inflight": { 1451 | "version": "1.0.6", 1452 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1453 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1454 | "dev": true, 1455 | "requires": { 1456 | "once": "^1.3.0", 1457 | "wrappy": "1" 1458 | } 1459 | }, 1460 | "inherits": { 1461 | "version": "2.0.4", 1462 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1463 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1464 | "dev": true 1465 | }, 1466 | "internal-slot": { 1467 | "version": "1.0.4", 1468 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", 1469 | "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", 1470 | "dev": true, 1471 | "requires": { 1472 | "get-intrinsic": "^1.1.3", 1473 | "has": "^1.0.3", 1474 | "side-channel": "^1.0.4" 1475 | } 1476 | }, 1477 | "is-arguments": { 1478 | "version": "1.1.1", 1479 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", 1480 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", 1481 | "dev": true, 1482 | "requires": { 1483 | "call-bind": "^1.0.2", 1484 | "has-tostringtag": "^1.0.0" 1485 | } 1486 | }, 1487 | "is-array-buffer": { 1488 | "version": "3.0.1", 1489 | "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", 1490 | "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", 1491 | "dev": true, 1492 | "requires": { 1493 | "call-bind": "^1.0.2", 1494 | "get-intrinsic": "^1.1.3", 1495 | "is-typed-array": "^1.1.10" 1496 | } 1497 | }, 1498 | "is-bigint": { 1499 | "version": "1.0.4", 1500 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1501 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1502 | "dev": true, 1503 | "requires": { 1504 | "has-bigints": "^1.0.1" 1505 | } 1506 | }, 1507 | "is-boolean-object": { 1508 | "version": "1.1.2", 1509 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1510 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1511 | "dev": true, 1512 | "requires": { 1513 | "call-bind": "^1.0.2", 1514 | "has-tostringtag": "^1.0.0" 1515 | } 1516 | }, 1517 | "is-callable": { 1518 | "version": "1.2.7", 1519 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 1520 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 1521 | "dev": true 1522 | }, 1523 | "is-core-module": { 1524 | "version": "2.11.0", 1525 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1526 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1527 | "dev": true, 1528 | "requires": { 1529 | "has": "^1.0.3" 1530 | } 1531 | }, 1532 | "is-date-object": { 1533 | "version": "1.0.5", 1534 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1535 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1536 | "dev": true, 1537 | "requires": { 1538 | "has-tostringtag": "^1.0.0" 1539 | } 1540 | }, 1541 | "is-map": { 1542 | "version": "2.0.2", 1543 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", 1544 | "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", 1545 | "dev": true 1546 | }, 1547 | "is-negative-zero": { 1548 | "version": "2.0.2", 1549 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1550 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1551 | "dev": true 1552 | }, 1553 | "is-number-object": { 1554 | "version": "1.0.7", 1555 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1556 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1557 | "dev": true, 1558 | "requires": { 1559 | "has-tostringtag": "^1.0.0" 1560 | } 1561 | }, 1562 | "is-regex": { 1563 | "version": "1.1.4", 1564 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1565 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1566 | "dev": true, 1567 | "requires": { 1568 | "call-bind": "^1.0.2", 1569 | "has-tostringtag": "^1.0.0" 1570 | } 1571 | }, 1572 | "is-set": { 1573 | "version": "2.0.2", 1574 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", 1575 | "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", 1576 | "dev": true 1577 | }, 1578 | "is-shared-array-buffer": { 1579 | "version": "1.0.2", 1580 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1581 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1582 | "dev": true, 1583 | "requires": { 1584 | "call-bind": "^1.0.2" 1585 | } 1586 | }, 1587 | "is-string": { 1588 | "version": "1.0.7", 1589 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1590 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1591 | "dev": true, 1592 | "requires": { 1593 | "has-tostringtag": "^1.0.0" 1594 | } 1595 | }, 1596 | "is-symbol": { 1597 | "version": "1.0.4", 1598 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1599 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1600 | "dev": true, 1601 | "requires": { 1602 | "has-symbols": "^1.0.2" 1603 | } 1604 | }, 1605 | "is-typed-array": { 1606 | "version": "1.1.10", 1607 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", 1608 | "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", 1609 | "dev": true, 1610 | "requires": { 1611 | "available-typed-arrays": "^1.0.5", 1612 | "call-bind": "^1.0.2", 1613 | "for-each": "^0.3.3", 1614 | "gopd": "^1.0.1", 1615 | "has-tostringtag": "^1.0.0" 1616 | } 1617 | }, 1618 | "is-weakmap": { 1619 | "version": "2.0.1", 1620 | "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", 1621 | "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", 1622 | "dev": true 1623 | }, 1624 | "is-weakref": { 1625 | "version": "1.0.2", 1626 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1627 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1628 | "dev": true, 1629 | "requires": { 1630 | "call-bind": "^1.0.2" 1631 | } 1632 | }, 1633 | "is-weakset": { 1634 | "version": "2.0.2", 1635 | "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", 1636 | "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", 1637 | "dev": true, 1638 | "requires": { 1639 | "call-bind": "^1.0.2", 1640 | "get-intrinsic": "^1.1.1" 1641 | } 1642 | }, 1643 | "isarray": { 1644 | "version": "2.0.5", 1645 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 1646 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 1647 | "dev": true 1648 | }, 1649 | "minimatch": { 1650 | "version": "3.1.2", 1651 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1652 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1653 | "dev": true, 1654 | "requires": { 1655 | "brace-expansion": "^1.1.7" 1656 | } 1657 | }, 1658 | "minimist": { 1659 | "version": "1.2.7", 1660 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 1661 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 1662 | "dev": true 1663 | }, 1664 | "object-inspect": { 1665 | "version": "1.12.3", 1666 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1667 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 1668 | "dev": true 1669 | }, 1670 | "object-is": { 1671 | "version": "1.1.5", 1672 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", 1673 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", 1674 | "dev": true, 1675 | "requires": { 1676 | "call-bind": "^1.0.2", 1677 | "define-properties": "^1.1.3" 1678 | } 1679 | }, 1680 | "object-keys": { 1681 | "version": "1.1.1", 1682 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1683 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1684 | "dev": true 1685 | }, 1686 | "object.assign": { 1687 | "version": "4.1.4", 1688 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", 1689 | "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", 1690 | "dev": true, 1691 | "requires": { 1692 | "call-bind": "^1.0.2", 1693 | "define-properties": "^1.1.4", 1694 | "has-symbols": "^1.0.3", 1695 | "object-keys": "^1.1.1" 1696 | } 1697 | }, 1698 | "once": { 1699 | "version": "1.4.0", 1700 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1701 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1702 | "dev": true, 1703 | "requires": { 1704 | "wrappy": "1" 1705 | } 1706 | }, 1707 | "path-is-absolute": { 1708 | "version": "1.0.1", 1709 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1710 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1711 | "dev": true 1712 | }, 1713 | "path-parse": { 1714 | "version": "1.0.7", 1715 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1716 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1717 | "dev": true 1718 | }, 1719 | "regexp.prototype.flags": { 1720 | "version": "1.4.3", 1721 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 1722 | "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 1723 | "dev": true, 1724 | "requires": { 1725 | "call-bind": "^1.0.2", 1726 | "define-properties": "^1.1.3", 1727 | "functions-have-names": "^1.2.2" 1728 | } 1729 | }, 1730 | "resolve": { 1731 | "version": "2.0.0-next.4", 1732 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", 1733 | "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", 1734 | "dev": true, 1735 | "requires": { 1736 | "is-core-module": "^2.9.0", 1737 | "path-parse": "^1.0.7", 1738 | "supports-preserve-symlinks-flag": "^1.0.0" 1739 | } 1740 | }, 1741 | "resumer": { 1742 | "version": "0.0.0", 1743 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 1744 | "integrity": "sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==", 1745 | "dev": true, 1746 | "requires": { 1747 | "through": "~2.3.4" 1748 | } 1749 | }, 1750 | "safe-regex-test": { 1751 | "version": "1.0.0", 1752 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", 1753 | "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", 1754 | "dev": true, 1755 | "requires": { 1756 | "call-bind": "^1.0.2", 1757 | "get-intrinsic": "^1.1.3", 1758 | "is-regex": "^1.1.4" 1759 | } 1760 | }, 1761 | "side-channel": { 1762 | "version": "1.0.4", 1763 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1764 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1765 | "dev": true, 1766 | "requires": { 1767 | "call-bind": "^1.0.0", 1768 | "get-intrinsic": "^1.0.2", 1769 | "object-inspect": "^1.9.0" 1770 | } 1771 | }, 1772 | "stop-iteration-iterator": { 1773 | "version": "1.0.0", 1774 | "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", 1775 | "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", 1776 | "dev": true, 1777 | "requires": { 1778 | "internal-slot": "^1.0.4" 1779 | } 1780 | }, 1781 | "string.prototype.trim": { 1782 | "version": "1.2.7", 1783 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", 1784 | "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", 1785 | "dev": true, 1786 | "requires": { 1787 | "call-bind": "^1.0.2", 1788 | "define-properties": "^1.1.4", 1789 | "es-abstract": "^1.20.4" 1790 | } 1791 | }, 1792 | "string.prototype.trimend": { 1793 | "version": "1.0.6", 1794 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", 1795 | "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", 1796 | "dev": true, 1797 | "requires": { 1798 | "call-bind": "^1.0.2", 1799 | "define-properties": "^1.1.4", 1800 | "es-abstract": "^1.20.4" 1801 | } 1802 | }, 1803 | "string.prototype.trimstart": { 1804 | "version": "1.0.6", 1805 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", 1806 | "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", 1807 | "dev": true, 1808 | "requires": { 1809 | "call-bind": "^1.0.2", 1810 | "define-properties": "^1.1.4", 1811 | "es-abstract": "^1.20.4" 1812 | } 1813 | }, 1814 | "supports-preserve-symlinks-flag": { 1815 | "version": "1.0.0", 1816 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1817 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1818 | "dev": true 1819 | }, 1820 | "tape": { 1821 | "version": "5.6.3", 1822 | "resolved": "https://registry.npmjs.org/tape/-/tape-5.6.3.tgz", 1823 | "integrity": "sha512-cUDDGSbyoSIpdUAqbqLI/r7i/S4BHuCB9M5j7E/LrLs/x/i4zeAJ798aqo+FGo+kr9seBZwr8AkZW6rjceyAMQ==", 1824 | "dev": true, 1825 | "requires": { 1826 | "array.prototype.every": "^1.1.4", 1827 | "call-bind": "^1.0.2", 1828 | "deep-equal": "^2.2.0", 1829 | "defined": "^1.0.1", 1830 | "dotignore": "^0.1.2", 1831 | "for-each": "^0.3.3", 1832 | "get-package-type": "^0.1.0", 1833 | "glob": "^7.2.3", 1834 | "has": "^1.0.3", 1835 | "has-dynamic-import": "^2.0.1", 1836 | "inherits": "^2.0.4", 1837 | "is-regex": "^1.1.4", 1838 | "minimist": "^1.2.7", 1839 | "object-inspect": "^1.12.3", 1840 | "object-is": "^1.1.5", 1841 | "object-keys": "^1.1.1", 1842 | "object.assign": "^4.1.4", 1843 | "resolve": "^2.0.0-next.4", 1844 | "resumer": "^0.0.0", 1845 | "string.prototype.trim": "^1.2.7", 1846 | "through": "^2.3.8" 1847 | } 1848 | }, 1849 | "through": { 1850 | "version": "2.3.8", 1851 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1852 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 1853 | "dev": true 1854 | }, 1855 | "typed-array-length": { 1856 | "version": "1.0.4", 1857 | "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", 1858 | "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", 1859 | "dev": true, 1860 | "requires": { 1861 | "call-bind": "^1.0.2", 1862 | "for-each": "^0.3.3", 1863 | "is-typed-array": "^1.1.9" 1864 | } 1865 | }, 1866 | "unbox-primitive": { 1867 | "version": "1.0.2", 1868 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 1869 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 1870 | "dev": true, 1871 | "requires": { 1872 | "call-bind": "^1.0.2", 1873 | "has-bigints": "^1.0.2", 1874 | "has-symbols": "^1.0.3", 1875 | "which-boxed-primitive": "^1.0.2" 1876 | } 1877 | }, 1878 | "which-boxed-primitive": { 1879 | "version": "1.0.2", 1880 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 1881 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 1882 | "dev": true, 1883 | "requires": { 1884 | "is-bigint": "^1.0.1", 1885 | "is-boolean-object": "^1.1.0", 1886 | "is-number-object": "^1.0.4", 1887 | "is-string": "^1.0.5", 1888 | "is-symbol": "^1.0.3" 1889 | } 1890 | }, 1891 | "which-collection": { 1892 | "version": "1.0.1", 1893 | "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", 1894 | "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", 1895 | "dev": true, 1896 | "requires": { 1897 | "is-map": "^2.0.1", 1898 | "is-set": "^2.0.1", 1899 | "is-weakmap": "^2.0.1", 1900 | "is-weakset": "^2.0.1" 1901 | } 1902 | }, 1903 | "which-typed-array": { 1904 | "version": "1.1.9", 1905 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", 1906 | "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", 1907 | "dev": true, 1908 | "requires": { 1909 | "available-typed-arrays": "^1.0.5", 1910 | "call-bind": "^1.0.2", 1911 | "for-each": "^0.3.3", 1912 | "gopd": "^1.0.1", 1913 | "has-tostringtag": "^1.0.0", 1914 | "is-typed-array": "^1.1.10" 1915 | } 1916 | }, 1917 | "wrappy": { 1918 | "version": "1.0.2", 1919 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1920 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1921 | "dev": true 1922 | } 1923 | } 1924 | } 1925 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "audio-buffer", 3 | "version": "5.0.0", 4 | "description": "AudioBuffer class for node/browser", 5 | "main": "index.js", 6 | "type": "module", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/audiojs/audio-buffer" 10 | }, 11 | "scripts": { 12 | "test": "node test" 13 | }, 14 | "keywords": [ 15 | "audio", 16 | "audiojs", 17 | "pcm", 18 | "dsp", 19 | "sound", 20 | "processing", 21 | "ndsamples", 22 | "ponyfill", 23 | "audio-buffer", 24 | "web-audio", 25 | "waa", 26 | "audiodata" 27 | ], 28 | "author": "Dmitry Iv ", 29 | "license": "MIT", 30 | "bugs": { 31 | "url": "https://github.com/audiojs/audio-buffer/issues" 32 | }, 33 | "homepage": "https://github.com/audiojs/audio-buffer", 34 | "devDependencies": { 35 | "tape": "^5.6.3" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # audio-buffer [![test](https://github.com/audiojs/audio-buffer/actions/workflows/node.js.yml/badge.svg)](https://github.com/audiojs/audio-buffer/actions/workflows/node.js.yml) [![stable](https://img.shields.io/badge/stability-stable-brightgreen.svg)](http://github.com/badges/stability-badges) 2 | 3 | _AudioBuffer_ - basic audio data container class with planar float32 data layout. 4 | 5 | Useful instead of _Buffer_ in audio streams, audio components, workers, nodejs, environments without web-audio-api. Enables various audio-buffer utils outside of audio contexts or browsers. 6 | 7 | Implementation is compatible with [Web Audio API AudioBuffer](https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer), can be used as ponyfill. 8 | 9 | ## Usage 10 | 11 | [![npm install audio-buffer](https://nodei.co/npm/audio-buffer.png?mini=true)](https://npmjs.org/package/audio-buffer/) 12 | 13 | ### new AudioBuffer(options) 14 | 15 | Create audio buffer from `options`. 16 | 17 | * `options.length` — number of samples, minimum is 1. 18 | * `options.sampleRate` — sample rate from 3000..768000 range. 19 | * `options.numberOfChannels` (optional) — default number of channels is 1. 20 | 21 | ### buffer.duration 22 | 23 | Duration of the underlying audio data, in seconds. 24 | 25 | ### buffer.length 26 | 27 | Number of samples per channel. 28 | 29 | ### buffer.sampleRate 30 | 31 | Default sample rate is 44100. 32 | 33 | ### buffer.numberOfChannels 34 | 35 | Default number of channels is 1. 36 | 37 | ### buffer.getChannelData(channel) 38 | 39 | Get array containing the data for the channel (not copied). 40 | 41 | ### buffer.copyFromChannel(destination, channelNumber, startInChannel=0) 42 | 43 | Place data from channel to destination Float32Array. 44 | 45 | ### buffer.copyToChannel(source, channelNumber, startInChannel=0) 46 | 47 | Place data from source Float32Array to the channel. 48 | 49 | 50 | ## Similar 51 | 52 | * [ndsamples](https://github.com/livejs/ndsamples) — audio-wrapper for ndarrays. A somewhat alternative approach to wrap audio data, based on ndarrays, used by some modules in [livejs](https://github.com/livejs). 53 | * [1](https://www.npmjs.com/package/audiobuffer), [2](https://www.npmjs.com/package/audio-buffer), [3](https://github.com/sebpiq/node-web-audio-api/blob/master/lib/AudioBuffer.js), [4](https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer) — other AudioBuffer implementations. 54 | * [audiodata](https://www.npmjs.com/package/audiodata) alternative data holder from @mohayonao. 55 | 56 | 57 |

🕉

58 | -------------------------------------------------------------------------------- /tea.yaml: -------------------------------------------------------------------------------- 1 | # https://tea.xyz/what-is-this-file 2 | --- 3 | version: 1.0.0 4 | codeOwners: 5 | - '0x18CEa38f92a0E9b028ea27DD935B36A55Cf83b06' 6 | quorum: 1 7 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import AudioBuffer from './index.js' 2 | import t from 'tape' 3 | 4 | 5 | t('options', function (t) { 6 | var b3 = new AudioBuffer({length: 220.5, sampleRate:44100, numberOfChannels:1}); 7 | t.equal(b3.length, 220) 8 | 9 | var buffer = new AudioBuffer({length: 441, sampleRate: 44100, numberOfChannels: 1}); 10 | t.equal(buffer.duration, 0.01); 11 | 12 | var buffer = new AudioBuffer({length: 441, sampleRate: 44100*2, numberOfChannels: 1}); 13 | t.equal(buffer.duration, 0.005); 14 | 15 | t.end() 16 | }); 17 | 18 | t('getChannelData empty arrays', function (t) { 19 | var buffer = new AudioBuffer({length: 4, sampleRate: 44100, numberOfChannels: 1}); 20 | 21 | t.deepEqual([...buffer.getChannelData(0)], [0,0,0,0]); 22 | 23 | t.end() 24 | }); 25 | 26 | t('copyToChannel', function (t) { 27 | var a = new AudioBuffer({numberOfChannels: 2, length: 40, sampleRate: 44100}); 28 | var arr = new Float32Array(40); 29 | arr.fill(-0.5); 30 | 31 | a.copyToChannel(arr, 0, 0); 32 | 33 | t.deepEqual(arr, a.getChannelData(0)); 34 | 35 | 36 | a.copyToChannel(arr, 1, 10); 37 | 38 | var zeros = new Float32Array(10); 39 | arr.set(zeros); 40 | 41 | t.deepEqual(arr, a.getChannelData(1)); 42 | 43 | t.end() 44 | }); 45 | 46 | t('copyFromChannel', function (t) { 47 | var a = new AudioBuffer({numberOfChannels: 2, length: 40, sampleRate: 44100}); 48 | var arr = new Float32Array(40); 49 | a.getChannelData(0).fill(-0.5); 50 | a.getChannelData(1).fill(0.5); 51 | a.getChannelData(1).set((new Float32Array(20)).fill(-0.5), 20); 52 | 53 | a.copyFromChannel(arr, 0); 54 | t.deepEqual(arr, a.getChannelData(0)); 55 | 56 | a.copyFromChannel(arr, 1, 10); 57 | 58 | var fixture = Array(10).fill(0.5).concat(Array(30).fill(-0.5)); 59 | 60 | t.deepEqual([...arr], fixture); 61 | 62 | t.end() 63 | }); 64 | 65 | --------------------------------------------------------------------------------