├── .gitignore ├── index.d.ts ├── index.js ├── index.test-d.ts ├── license ├── package-lock.json ├── package.json ├── readme.md ├── test ├── benchmark.js ├── el-inmortal-jorge-luis-borges-fragment.txt ├── golden-master.txt └── unit.js └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # gitignore/Global/Vim.gitignore # 3 | # 41ec058 on Sep 10, 2019 # 4 | ################################################################################ 5 | # Swap 6 | [._]*.s[a-v][a-z] 7 | !*.svg # comment out if you don't need vector files 8 | [._]*.sw[a-p] 9 | [._]s[a-rt-v][a-z] 10 | [._]ss[a-gi-z] 11 | [._]sw[a-p] 12 | 13 | # Session 14 | Session.vim 15 | Sessionx.vim 16 | 17 | # Temporary 18 | .netrwhist 19 | *~ 20 | # Auto-generated tag files 21 | tags 22 | # Persistent undo 23 | [._]*.un~ 24 | 25 | ################################################################################ 26 | # gitignore/Node.gitignore # 27 | # 7293c14 on May 14, 2020 # 28 | ################################################################################ 29 | # Logs 30 | logs 31 | *.log 32 | npm-debug.log* 33 | yarn-debug.log* 34 | yarn-error.log* 35 | lerna-debug.log* 36 | 37 | # Diagnostic reports (https://nodejs.org/api/report.html) 38 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 39 | 40 | # Runtime data 41 | pids 42 | *.pid 43 | *.seed 44 | *.pid.lock 45 | 46 | # Directory for instrumented libs generated by jscoverage/JSCover 47 | lib-cov 48 | 49 | # Coverage directory used by tools like istanbul 50 | coverage 51 | *.lcov 52 | 53 | # nyc test coverage 54 | .nyc_output 55 | 56 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 57 | .grunt 58 | 59 | # Bower dependency directory (https://bower.io/) 60 | bower_components 61 | 62 | # node-waf configuration 63 | .lock-wscript 64 | 65 | # Compiled binary addons (https://nodejs.org/api/addons.html) 66 | build/Release 67 | 68 | # Dependency directories 69 | node_modules/ 70 | jspm_packages/ 71 | 72 | # Snowpack dependency directory (https://snowpack.dev/) 73 | web_modules/ 74 | 75 | # TypeScript cache 76 | *.tsbuildinfo 77 | 78 | # Optional npm cache directory 79 | .npm 80 | 81 | # Optional eslint cache 82 | .eslintcache 83 | 84 | # Microbundle cache 85 | .rpt2_cache/ 86 | .rts2_cache_cjs/ 87 | .rts2_cache_es/ 88 | .rts2_cache_umd/ 89 | 90 | # Optional REPL history 91 | .node_repl_history 92 | 93 | # Output of 'npm pack' 94 | *.tgz 95 | 96 | # Yarn Integrity file 97 | .yarn-integrity 98 | 99 | # dotenv environment variables file 100 | .env 101 | .env.test 102 | 103 | # parcel-bundler cache (https://parceljs.org/) 104 | .cache 105 | .parcel-cache 106 | 107 | # Next.js build output 108 | .next 109 | out 110 | 111 | # Nuxt.js build / generate output 112 | .nuxt 113 | dist 114 | 115 | # Gatsby files 116 | .cache/ 117 | # Comment in the public line in if your project uses Gatsby and not Next.js 118 | # https://nextjs.org/blog/next-9-1#public-directory-support 119 | # public 120 | 121 | # vuepress build output 122 | .vuepress/dist 123 | 124 | # Serverless directories 125 | .serverless/ 126 | 127 | # FuseBox cache 128 | .fusebox/ 129 | 130 | # DynamoDB Local files 131 | .dynamodb/ 132 | 133 | # TernJS port file 134 | .tern-port 135 | 136 | # Stores VSCode versions used for testing VSCode extensions 137 | .vscode-test 138 | 139 | # yarn v2 140 | .yarn/cache 141 | .yarn/unplugged 142 | .yarn/build-state.yml 143 | .yarn/install-state.gz 144 | .pnp.* 145 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | export = wrap; 2 | declare function wrap(s: string, b: number): string; 3 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** @type {(s: string, b: number) => string} */ 2 | function wrap(str, cpl) { 3 | // compute input string length 4 | const len = str.length; 5 | 6 | // create array to store wrapped strings 7 | let lines = []; 8 | 9 | // do that thing you do 10 | if (len <= cpl) { 11 | // low-hanging fruit: nothing to wrap 12 | lines.push(str); 13 | } else { 14 | // next extraction start index 15 | let start = 0; 16 | 17 | // extract strings from input string as long as more than "cpl" 18 | // characters remain to be extracted 19 | while (len - start > cpl) { 20 | // compute next extraction end index (i.e. the index of the last 21 | // character of the last word that wholly fits in a line of "cpl" 22 | // characters length) 23 | let end = 0; 24 | for (let i = start + cpl; i > start; --i) { 25 | if (str[i] == " ") { 26 | end = i; 27 | break; 28 | } 29 | } 30 | 31 | // if there's a word with more than "cpl" characters there's nothing 32 | // we can do to avoid breaking the limit of "cpl" characters per 33 | // line, so let's put it alone in a line and keep going 34 | if (end == 0) { 35 | for (let i = start + cpl; i < len; ++i) { 36 | if (str[i] == " ") { 37 | end = i; 38 | break; 39 | } 40 | } 41 | 42 | // this is needed here to handle the case when the word with 43 | // more than "cpl" characters is the last one of the input 44 | // string (note that the previous cycle won't set "end" that 45 | // being the case) 46 | if (end == 0) { 47 | end = len; 48 | break; 49 | } 50 | } 51 | 52 | // store string between start and end indices 53 | lines.push(str.substring(start, end)); 54 | 55 | // next extraction start index is one index past last extraction end 56 | // index 57 | start = end + 1; 58 | } 59 | 60 | // append string with the remaining characters 61 | lines.push(str.substring(start, len)); 62 | } 63 | 64 | // add empty element just to get a newline at string end after joining 65 | lines.push(""); 66 | 67 | // compute result string 68 | let result = lines.join("\n"); 69 | 70 | return result; 71 | } 72 | 73 | module.exports = wrap; 74 | -------------------------------------------------------------------------------- /index.test-d.ts: -------------------------------------------------------------------------------- 1 | import {expectType} from 'tsd'; 2 | import wrap from '.'; 3 | 4 | expectType(wrap("The quick brown fox jumps over the lazy dog.", 10)); 5 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 alepinio 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, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fast-word-wrap", 3 | "version": "1.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "fast-word-wrap", 9 | "version": "1.1.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "ava": "^5.2.0", 13 | "tsd": "^0.28.1", 14 | "typescript": "^5.0.3", 15 | "word-wrap": "^1.2.3", 16 | "wordwrap": "^1.0.0", 17 | "wrap-text": "^1.0.9" 18 | } 19 | }, 20 | "node_modules/@babel/code-frame": { 21 | "version": "7.21.4", 22 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", 23 | "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", 24 | "dev": true, 25 | "dependencies": { 26 | "@babel/highlight": "^7.18.6" 27 | }, 28 | "engines": { 29 | "node": ">=6.9.0" 30 | } 31 | }, 32 | "node_modules/@babel/helper-validator-identifier": { 33 | "version": "7.19.1", 34 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 35 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 36 | "dev": true, 37 | "engines": { 38 | "node": ">=6.9.0" 39 | } 40 | }, 41 | "node_modules/@babel/highlight": { 42 | "version": "7.18.6", 43 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 44 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 45 | "dev": true, 46 | "dependencies": { 47 | "@babel/helper-validator-identifier": "^7.18.6", 48 | "chalk": "^2.0.0", 49 | "js-tokens": "^4.0.0" 50 | }, 51 | "engines": { 52 | "node": ">=6.9.0" 53 | } 54 | }, 55 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 56 | "version": "3.2.1", 57 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 58 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 59 | "dev": true, 60 | "dependencies": { 61 | "color-convert": "^1.9.0" 62 | }, 63 | "engines": { 64 | "node": ">=4" 65 | } 66 | }, 67 | "node_modules/@babel/highlight/node_modules/chalk": { 68 | "version": "2.4.2", 69 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 70 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 71 | "dev": true, 72 | "dependencies": { 73 | "ansi-styles": "^3.2.1", 74 | "escape-string-regexp": "^1.0.5", 75 | "supports-color": "^5.3.0" 76 | }, 77 | "engines": { 78 | "node": ">=4" 79 | } 80 | }, 81 | "node_modules/@babel/highlight/node_modules/color-convert": { 82 | "version": "1.9.3", 83 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 84 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 85 | "dev": true, 86 | "dependencies": { 87 | "color-name": "1.1.3" 88 | } 89 | }, 90 | "node_modules/@babel/highlight/node_modules/color-name": { 91 | "version": "1.1.3", 92 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 93 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 94 | "dev": true 95 | }, 96 | "node_modules/@babel/highlight/node_modules/escape-string-regexp": { 97 | "version": "1.0.5", 98 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 99 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 100 | "dev": true, 101 | "engines": { 102 | "node": ">=0.8.0" 103 | } 104 | }, 105 | "node_modules/@babel/highlight/node_modules/has-flag": { 106 | "version": "3.0.0", 107 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 108 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 109 | "dev": true, 110 | "engines": { 111 | "node": ">=4" 112 | } 113 | }, 114 | "node_modules/@babel/highlight/node_modules/supports-color": { 115 | "version": "5.5.0", 116 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 117 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 118 | "dev": true, 119 | "dependencies": { 120 | "has-flag": "^3.0.0" 121 | }, 122 | "engines": { 123 | "node": ">=4" 124 | } 125 | }, 126 | "node_modules/@jest/schemas": { 127 | "version": "29.4.3", 128 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", 129 | "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", 130 | "dev": true, 131 | "dependencies": { 132 | "@sinclair/typebox": "^0.25.16" 133 | }, 134 | "engines": { 135 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 136 | } 137 | }, 138 | "node_modules/@nodelib/fs.scandir": { 139 | "version": "2.1.5", 140 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 141 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 142 | "dev": true, 143 | "dependencies": { 144 | "@nodelib/fs.stat": "2.0.5", 145 | "run-parallel": "^1.1.9" 146 | }, 147 | "engines": { 148 | "node": ">= 8" 149 | } 150 | }, 151 | "node_modules/@nodelib/fs.stat": { 152 | "version": "2.0.5", 153 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 154 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 155 | "dev": true, 156 | "engines": { 157 | "node": ">= 8" 158 | } 159 | }, 160 | "node_modules/@nodelib/fs.walk": { 161 | "version": "1.2.8", 162 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 163 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 164 | "dev": true, 165 | "dependencies": { 166 | "@nodelib/fs.scandir": "2.1.5", 167 | "fastq": "^1.6.0" 168 | }, 169 | "engines": { 170 | "node": ">= 8" 171 | } 172 | }, 173 | "node_modules/@sinclair/typebox": { 174 | "version": "0.25.24", 175 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", 176 | "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", 177 | "dev": true 178 | }, 179 | "node_modules/@tsd/typescript": { 180 | "version": "5.0.3", 181 | "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", 182 | "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==", 183 | "dev": true 184 | }, 185 | "node_modules/@types/eslint": { 186 | "version": "7.29.0", 187 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", 188 | "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", 189 | "dev": true, 190 | "dependencies": { 191 | "@types/estree": "*", 192 | "@types/json-schema": "*" 193 | } 194 | }, 195 | "node_modules/@types/estree": { 196 | "version": "1.0.0", 197 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 198 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 199 | "dev": true 200 | }, 201 | "node_modules/@types/json-schema": { 202 | "version": "7.0.11", 203 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 204 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 205 | "dev": true 206 | }, 207 | "node_modules/@types/minimist": { 208 | "version": "1.2.2", 209 | "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", 210 | "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", 211 | "dev": true 212 | }, 213 | "node_modules/@types/normalize-package-data": { 214 | "version": "2.4.1", 215 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 216 | "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 217 | "dev": true 218 | }, 219 | "node_modules/acorn": { 220 | "version": "8.8.2", 221 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 222 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 223 | "dev": true, 224 | "bin": { 225 | "acorn": "bin/acorn" 226 | }, 227 | "engines": { 228 | "node": ">=0.4.0" 229 | } 230 | }, 231 | "node_modules/acorn-walk": { 232 | "version": "8.2.0", 233 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 234 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 235 | "dev": true, 236 | "engines": { 237 | "node": ">=0.4.0" 238 | } 239 | }, 240 | "node_modules/aggregate-error": { 241 | "version": "4.0.1", 242 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", 243 | "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", 244 | "dev": true, 245 | "dependencies": { 246 | "clean-stack": "^4.0.0", 247 | "indent-string": "^5.0.0" 248 | }, 249 | "engines": { 250 | "node": ">=12" 251 | }, 252 | "funding": { 253 | "url": "https://github.com/sponsors/sindresorhus" 254 | } 255 | }, 256 | "node_modules/ansi-escapes": { 257 | "version": "4.3.2", 258 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 259 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 260 | "dev": true, 261 | "dependencies": { 262 | "type-fest": "^0.21.3" 263 | }, 264 | "engines": { 265 | "node": ">=8" 266 | }, 267 | "funding": { 268 | "url": "https://github.com/sponsors/sindresorhus" 269 | } 270 | }, 271 | "node_modules/ansi-escapes/node_modules/type-fest": { 272 | "version": "0.21.3", 273 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 274 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 275 | "dev": true, 276 | "engines": { 277 | "node": ">=10" 278 | }, 279 | "funding": { 280 | "url": "https://github.com/sponsors/sindresorhus" 281 | } 282 | }, 283 | "node_modules/ansi-regex": { 284 | "version": "6.0.1", 285 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 286 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 287 | "dev": true, 288 | "engines": { 289 | "node": ">=12" 290 | }, 291 | "funding": { 292 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 293 | } 294 | }, 295 | "node_modules/ansi-styles": { 296 | "version": "6.2.1", 297 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 298 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 299 | "dev": true, 300 | "engines": { 301 | "node": ">=12" 302 | }, 303 | "funding": { 304 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 305 | } 306 | }, 307 | "node_modules/anymatch": { 308 | "version": "3.1.3", 309 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 310 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 311 | "dev": true, 312 | "dependencies": { 313 | "normalize-path": "^3.0.0", 314 | "picomatch": "^2.0.4" 315 | }, 316 | "engines": { 317 | "node": ">= 8" 318 | } 319 | }, 320 | "node_modules/argparse": { 321 | "version": "1.0.10", 322 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 323 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 324 | "dev": true, 325 | "dependencies": { 326 | "sprintf-js": "~1.0.2" 327 | } 328 | }, 329 | "node_modules/array-find-index": { 330 | "version": "1.0.2", 331 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 332 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 333 | "dev": true, 334 | "engines": { 335 | "node": ">=0.10.0" 336 | } 337 | }, 338 | "node_modules/array-union": { 339 | "version": "2.1.0", 340 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 341 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 342 | "dev": true, 343 | "engines": { 344 | "node": ">=8" 345 | } 346 | }, 347 | "node_modules/arrgv": { 348 | "version": "1.0.2", 349 | "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", 350 | "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", 351 | "dev": true, 352 | "engines": { 353 | "node": ">=8.0.0" 354 | } 355 | }, 356 | "node_modules/arrify": { 357 | "version": "3.0.0", 358 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", 359 | "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", 360 | "dev": true, 361 | "engines": { 362 | "node": ">=12" 363 | }, 364 | "funding": { 365 | "url": "https://github.com/sponsors/sindresorhus" 366 | } 367 | }, 368 | "node_modules/ava": { 369 | "version": "5.2.0", 370 | "resolved": "https://registry.npmjs.org/ava/-/ava-5.2.0.tgz", 371 | "integrity": "sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==", 372 | "dev": true, 373 | "dependencies": { 374 | "acorn": "^8.8.1", 375 | "acorn-walk": "^8.2.0", 376 | "ansi-styles": "^6.2.1", 377 | "arrgv": "^1.0.2", 378 | "arrify": "^3.0.0", 379 | "callsites": "^4.0.0", 380 | "cbor": "^8.1.0", 381 | "chalk": "^5.2.0", 382 | "chokidar": "^3.5.3", 383 | "chunkd": "^2.0.1", 384 | "ci-info": "^3.7.1", 385 | "ci-parallel-vars": "^1.0.1", 386 | "clean-yaml-object": "^0.1.0", 387 | "cli-truncate": "^3.1.0", 388 | "code-excerpt": "^4.0.0", 389 | "common-path-prefix": "^3.0.0", 390 | "concordance": "^5.0.4", 391 | "currently-unhandled": "^0.4.1", 392 | "debug": "^4.3.4", 393 | "del": "^7.0.0", 394 | "emittery": "^1.0.1", 395 | "figures": "^5.0.0", 396 | "globby": "^13.1.3", 397 | "ignore-by-default": "^2.1.0", 398 | "indent-string": "^5.0.0", 399 | "is-error": "^2.2.2", 400 | "is-plain-object": "^5.0.0", 401 | "is-promise": "^4.0.0", 402 | "matcher": "^5.0.0", 403 | "mem": "^9.0.2", 404 | "ms": "^2.1.3", 405 | "p-event": "^5.0.1", 406 | "p-map": "^5.5.0", 407 | "picomatch": "^2.3.1", 408 | "pkg-conf": "^4.0.0", 409 | "plur": "^5.1.0", 410 | "pretty-ms": "^8.0.0", 411 | "resolve-cwd": "^3.0.0", 412 | "slash": "^3.0.0", 413 | "stack-utils": "^2.0.6", 414 | "strip-ansi": "^7.0.1", 415 | "supertap": "^3.0.1", 416 | "temp-dir": "^3.0.0", 417 | "write-file-atomic": "^5.0.0", 418 | "yargs": "^17.6.2" 419 | }, 420 | "bin": { 421 | "ava": "entrypoints/cli.mjs" 422 | }, 423 | "engines": { 424 | "node": ">=14.19 <15 || >=16.15 <17 || >=18" 425 | }, 426 | "peerDependencies": { 427 | "@ava/typescript": "*" 428 | }, 429 | "peerDependenciesMeta": { 430 | "@ava/typescript": { 431 | "optional": true 432 | } 433 | } 434 | }, 435 | "node_modules/balanced-match": { 436 | "version": "1.0.2", 437 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 438 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 439 | "dev": true 440 | }, 441 | "node_modules/binary-extensions": { 442 | "version": "2.2.0", 443 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 444 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 445 | "dev": true, 446 | "engines": { 447 | "node": ">=8" 448 | } 449 | }, 450 | "node_modules/blueimp-md5": { 451 | "version": "2.19.0", 452 | "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", 453 | "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", 454 | "dev": true 455 | }, 456 | "node_modules/brace-expansion": { 457 | "version": "1.1.11", 458 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 459 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 460 | "dev": true, 461 | "dependencies": { 462 | "balanced-match": "^1.0.0", 463 | "concat-map": "0.0.1" 464 | } 465 | }, 466 | "node_modules/braces": { 467 | "version": "3.0.2", 468 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 469 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 470 | "dev": true, 471 | "dependencies": { 472 | "fill-range": "^7.0.1" 473 | }, 474 | "engines": { 475 | "node": ">=8" 476 | } 477 | }, 478 | "node_modules/callsites": { 479 | "version": "4.0.0", 480 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.0.0.tgz", 481 | "integrity": "sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==", 482 | "dev": true, 483 | "engines": { 484 | "node": ">=12.20" 485 | }, 486 | "funding": { 487 | "url": "https://github.com/sponsors/sindresorhus" 488 | } 489 | }, 490 | "node_modules/camelcase": { 491 | "version": "5.3.1", 492 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 493 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 494 | "dev": true, 495 | "engines": { 496 | "node": ">=6" 497 | } 498 | }, 499 | "node_modules/camelcase-keys": { 500 | "version": "6.2.2", 501 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", 502 | "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", 503 | "dev": true, 504 | "dependencies": { 505 | "camelcase": "^5.3.1", 506 | "map-obj": "^4.0.0", 507 | "quick-lru": "^4.0.1" 508 | }, 509 | "engines": { 510 | "node": ">=8" 511 | }, 512 | "funding": { 513 | "url": "https://github.com/sponsors/sindresorhus" 514 | } 515 | }, 516 | "node_modules/cbor": { 517 | "version": "8.1.0", 518 | "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", 519 | "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", 520 | "dev": true, 521 | "dependencies": { 522 | "nofilter": "^3.1.0" 523 | }, 524 | "engines": { 525 | "node": ">=12.19" 526 | } 527 | }, 528 | "node_modules/chalk": { 529 | "version": "5.2.0", 530 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", 531 | "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", 532 | "dev": true, 533 | "engines": { 534 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 535 | }, 536 | "funding": { 537 | "url": "https://github.com/chalk/chalk?sponsor=1" 538 | } 539 | }, 540 | "node_modules/chokidar": { 541 | "version": "3.5.3", 542 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 543 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 544 | "dev": true, 545 | "funding": [ 546 | { 547 | "type": "individual", 548 | "url": "https://paulmillr.com/funding/" 549 | } 550 | ], 551 | "dependencies": { 552 | "anymatch": "~3.1.2", 553 | "braces": "~3.0.2", 554 | "glob-parent": "~5.1.2", 555 | "is-binary-path": "~2.1.0", 556 | "is-glob": "~4.0.1", 557 | "normalize-path": "~3.0.0", 558 | "readdirp": "~3.6.0" 559 | }, 560 | "engines": { 561 | "node": ">= 8.10.0" 562 | }, 563 | "optionalDependencies": { 564 | "fsevents": "~2.3.2" 565 | } 566 | }, 567 | "node_modules/chunkd": { 568 | "version": "2.0.1", 569 | "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", 570 | "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", 571 | "dev": true 572 | }, 573 | "node_modules/ci-info": { 574 | "version": "3.8.0", 575 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", 576 | "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", 577 | "dev": true, 578 | "funding": [ 579 | { 580 | "type": "github", 581 | "url": "https://github.com/sponsors/sibiraj-s" 582 | } 583 | ], 584 | "engines": { 585 | "node": ">=8" 586 | } 587 | }, 588 | "node_modules/ci-parallel-vars": { 589 | "version": "1.0.1", 590 | "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", 591 | "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", 592 | "dev": true 593 | }, 594 | "node_modules/clean-stack": { 595 | "version": "4.2.0", 596 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", 597 | "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", 598 | "dev": true, 599 | "dependencies": { 600 | "escape-string-regexp": "5.0.0" 601 | }, 602 | "engines": { 603 | "node": ">=12" 604 | }, 605 | "funding": { 606 | "url": "https://github.com/sponsors/sindresorhus" 607 | } 608 | }, 609 | "node_modules/clean-yaml-object": { 610 | "version": "0.1.0", 611 | "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", 612 | "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", 613 | "dev": true, 614 | "engines": { 615 | "node": ">=0.10.0" 616 | } 617 | }, 618 | "node_modules/cli-truncate": { 619 | "version": "3.1.0", 620 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", 621 | "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", 622 | "dev": true, 623 | "dependencies": { 624 | "slice-ansi": "^5.0.0", 625 | "string-width": "^5.0.0" 626 | }, 627 | "engines": { 628 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 629 | }, 630 | "funding": { 631 | "url": "https://github.com/sponsors/sindresorhus" 632 | } 633 | }, 634 | "node_modules/cliui": { 635 | "version": "8.0.1", 636 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 637 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 638 | "dev": true, 639 | "dependencies": { 640 | "string-width": "^4.2.0", 641 | "strip-ansi": "^6.0.1", 642 | "wrap-ansi": "^7.0.0" 643 | }, 644 | "engines": { 645 | "node": ">=12" 646 | } 647 | }, 648 | "node_modules/cliui/node_modules/ansi-regex": { 649 | "version": "5.0.1", 650 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 651 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 652 | "dev": true, 653 | "engines": { 654 | "node": ">=8" 655 | } 656 | }, 657 | "node_modules/cliui/node_modules/emoji-regex": { 658 | "version": "8.0.0", 659 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 660 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 661 | "dev": true 662 | }, 663 | "node_modules/cliui/node_modules/is-fullwidth-code-point": { 664 | "version": "3.0.0", 665 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 666 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 667 | "dev": true, 668 | "engines": { 669 | "node": ">=8" 670 | } 671 | }, 672 | "node_modules/cliui/node_modules/string-width": { 673 | "version": "4.2.3", 674 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 675 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 676 | "dev": true, 677 | "dependencies": { 678 | "emoji-regex": "^8.0.0", 679 | "is-fullwidth-code-point": "^3.0.0", 680 | "strip-ansi": "^6.0.1" 681 | }, 682 | "engines": { 683 | "node": ">=8" 684 | } 685 | }, 686 | "node_modules/cliui/node_modules/strip-ansi": { 687 | "version": "6.0.1", 688 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 689 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 690 | "dev": true, 691 | "dependencies": { 692 | "ansi-regex": "^5.0.1" 693 | }, 694 | "engines": { 695 | "node": ">=8" 696 | } 697 | }, 698 | "node_modules/code-excerpt": { 699 | "version": "4.0.0", 700 | "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", 701 | "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", 702 | "dev": true, 703 | "dependencies": { 704 | "convert-to-spaces": "^2.0.1" 705 | }, 706 | "engines": { 707 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 708 | } 709 | }, 710 | "node_modules/color-convert": { 711 | "version": "2.0.1", 712 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 713 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 714 | "dev": true, 715 | "dependencies": { 716 | "color-name": "~1.1.4" 717 | }, 718 | "engines": { 719 | "node": ">=7.0.0" 720 | } 721 | }, 722 | "node_modules/color-name": { 723 | "version": "1.1.4", 724 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 725 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 726 | "dev": true 727 | }, 728 | "node_modules/common-path-prefix": { 729 | "version": "3.0.0", 730 | "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", 731 | "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", 732 | "dev": true 733 | }, 734 | "node_modules/concat-map": { 735 | "version": "0.0.1", 736 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 737 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 738 | "dev": true 739 | }, 740 | "node_modules/concordance": { 741 | "version": "5.0.4", 742 | "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", 743 | "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", 744 | "dev": true, 745 | "dependencies": { 746 | "date-time": "^3.1.0", 747 | "esutils": "^2.0.3", 748 | "fast-diff": "^1.2.0", 749 | "js-string-escape": "^1.0.1", 750 | "lodash": "^4.17.15", 751 | "md5-hex": "^3.0.1", 752 | "semver": "^7.3.2", 753 | "well-known-symbols": "^2.0.0" 754 | }, 755 | "engines": { 756 | "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" 757 | } 758 | }, 759 | "node_modules/convert-to-spaces": { 760 | "version": "2.0.1", 761 | "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", 762 | "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", 763 | "dev": true, 764 | "engines": { 765 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 766 | } 767 | }, 768 | "node_modules/currently-unhandled": { 769 | "version": "0.4.1", 770 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 771 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 772 | "dev": true, 773 | "dependencies": { 774 | "array-find-index": "^1.0.1" 775 | }, 776 | "engines": { 777 | "node": ">=0.10.0" 778 | } 779 | }, 780 | "node_modules/date-time": { 781 | "version": "3.1.0", 782 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", 783 | "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", 784 | "dev": true, 785 | "dependencies": { 786 | "time-zone": "^1.0.0" 787 | }, 788 | "engines": { 789 | "node": ">=6" 790 | } 791 | }, 792 | "node_modules/debug": { 793 | "version": "4.3.4", 794 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 795 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 796 | "dev": true, 797 | "dependencies": { 798 | "ms": "2.1.2" 799 | }, 800 | "engines": { 801 | "node": ">=6.0" 802 | }, 803 | "peerDependenciesMeta": { 804 | "supports-color": { 805 | "optional": true 806 | } 807 | } 808 | }, 809 | "node_modules/debug/node_modules/ms": { 810 | "version": "2.1.2", 811 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 812 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 813 | "dev": true 814 | }, 815 | "node_modules/decamelize": { 816 | "version": "1.2.0", 817 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 818 | "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", 819 | "dev": true, 820 | "engines": { 821 | "node": ">=0.10.0" 822 | } 823 | }, 824 | "node_modules/decamelize-keys": { 825 | "version": "1.1.1", 826 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", 827 | "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", 828 | "dev": true, 829 | "dependencies": { 830 | "decamelize": "^1.1.0", 831 | "map-obj": "^1.0.0" 832 | }, 833 | "engines": { 834 | "node": ">=0.10.0" 835 | }, 836 | "funding": { 837 | "url": "https://github.com/sponsors/sindresorhus" 838 | } 839 | }, 840 | "node_modules/decamelize-keys/node_modules/map-obj": { 841 | "version": "1.0.1", 842 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 843 | "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", 844 | "dev": true, 845 | "engines": { 846 | "node": ">=0.10.0" 847 | } 848 | }, 849 | "node_modules/del": { 850 | "version": "7.0.0", 851 | "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", 852 | "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", 853 | "dev": true, 854 | "dependencies": { 855 | "globby": "^13.1.2", 856 | "graceful-fs": "^4.2.10", 857 | "is-glob": "^4.0.3", 858 | "is-path-cwd": "^3.0.0", 859 | "is-path-inside": "^4.0.0", 860 | "p-map": "^5.5.0", 861 | "rimraf": "^3.0.2", 862 | "slash": "^4.0.0" 863 | }, 864 | "engines": { 865 | "node": ">=14.16" 866 | }, 867 | "funding": { 868 | "url": "https://github.com/sponsors/sindresorhus" 869 | } 870 | }, 871 | "node_modules/del/node_modules/slash": { 872 | "version": "4.0.0", 873 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 874 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", 875 | "dev": true, 876 | "engines": { 877 | "node": ">=12" 878 | }, 879 | "funding": { 880 | "url": "https://github.com/sponsors/sindresorhus" 881 | } 882 | }, 883 | "node_modules/diff-sequences": { 884 | "version": "29.4.3", 885 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", 886 | "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", 887 | "dev": true, 888 | "engines": { 889 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 890 | } 891 | }, 892 | "node_modules/dir-glob": { 893 | "version": "3.0.1", 894 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 895 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 896 | "dev": true, 897 | "dependencies": { 898 | "path-type": "^4.0.0" 899 | }, 900 | "engines": { 901 | "node": ">=8" 902 | } 903 | }, 904 | "node_modules/eastasianwidth": { 905 | "version": "0.2.0", 906 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 907 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 908 | "dev": true 909 | }, 910 | "node_modules/emittery": { 911 | "version": "1.0.1", 912 | "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.1.tgz", 913 | "integrity": "sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==", 914 | "dev": true, 915 | "engines": { 916 | "node": ">=14.16" 917 | }, 918 | "funding": { 919 | "url": "https://github.com/sindresorhus/emittery?sponsor=1" 920 | } 921 | }, 922 | "node_modules/emoji-regex": { 923 | "version": "9.2.2", 924 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 925 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 926 | "dev": true 927 | }, 928 | "node_modules/error-ex": { 929 | "version": "1.3.2", 930 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 931 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 932 | "dev": true, 933 | "dependencies": { 934 | "is-arrayish": "^0.2.1" 935 | } 936 | }, 937 | "node_modules/escalade": { 938 | "version": "3.1.1", 939 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 940 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 941 | "dev": true, 942 | "engines": { 943 | "node": ">=6" 944 | } 945 | }, 946 | "node_modules/escape-string-regexp": { 947 | "version": "5.0.0", 948 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 949 | "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 950 | "dev": true, 951 | "engines": { 952 | "node": ">=12" 953 | }, 954 | "funding": { 955 | "url": "https://github.com/sponsors/sindresorhus" 956 | } 957 | }, 958 | "node_modules/eslint-formatter-pretty": { 959 | "version": "4.1.0", 960 | "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", 961 | "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", 962 | "dev": true, 963 | "dependencies": { 964 | "@types/eslint": "^7.2.13", 965 | "ansi-escapes": "^4.2.1", 966 | "chalk": "^4.1.0", 967 | "eslint-rule-docs": "^1.1.5", 968 | "log-symbols": "^4.0.0", 969 | "plur": "^4.0.0", 970 | "string-width": "^4.2.0", 971 | "supports-hyperlinks": "^2.0.0" 972 | }, 973 | "engines": { 974 | "node": ">=10" 975 | }, 976 | "funding": { 977 | "url": "https://github.com/sponsors/sindresorhus" 978 | } 979 | }, 980 | "node_modules/eslint-formatter-pretty/node_modules/ansi-regex": { 981 | "version": "5.0.1", 982 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 983 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 984 | "dev": true, 985 | "engines": { 986 | "node": ">=8" 987 | } 988 | }, 989 | "node_modules/eslint-formatter-pretty/node_modules/ansi-styles": { 990 | "version": "4.3.0", 991 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 992 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 993 | "dev": true, 994 | "dependencies": { 995 | "color-convert": "^2.0.1" 996 | }, 997 | "engines": { 998 | "node": ">=8" 999 | }, 1000 | "funding": { 1001 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1002 | } 1003 | }, 1004 | "node_modules/eslint-formatter-pretty/node_modules/chalk": { 1005 | "version": "4.1.2", 1006 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1007 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1008 | "dev": true, 1009 | "dependencies": { 1010 | "ansi-styles": "^4.1.0", 1011 | "supports-color": "^7.1.0" 1012 | }, 1013 | "engines": { 1014 | "node": ">=10" 1015 | }, 1016 | "funding": { 1017 | "url": "https://github.com/chalk/chalk?sponsor=1" 1018 | } 1019 | }, 1020 | "node_modules/eslint-formatter-pretty/node_modules/emoji-regex": { 1021 | "version": "8.0.0", 1022 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1023 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1024 | "dev": true 1025 | }, 1026 | "node_modules/eslint-formatter-pretty/node_modules/is-fullwidth-code-point": { 1027 | "version": "3.0.0", 1028 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1029 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1030 | "dev": true, 1031 | "engines": { 1032 | "node": ">=8" 1033 | } 1034 | }, 1035 | "node_modules/eslint-formatter-pretty/node_modules/plur": { 1036 | "version": "4.0.0", 1037 | "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", 1038 | "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", 1039 | "dev": true, 1040 | "dependencies": { 1041 | "irregular-plurals": "^3.2.0" 1042 | }, 1043 | "engines": { 1044 | "node": ">=10" 1045 | }, 1046 | "funding": { 1047 | "url": "https://github.com/sponsors/sindresorhus" 1048 | } 1049 | }, 1050 | "node_modules/eslint-formatter-pretty/node_modules/string-width": { 1051 | "version": "4.2.3", 1052 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1053 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1054 | "dev": true, 1055 | "dependencies": { 1056 | "emoji-regex": "^8.0.0", 1057 | "is-fullwidth-code-point": "^3.0.0", 1058 | "strip-ansi": "^6.0.1" 1059 | }, 1060 | "engines": { 1061 | "node": ">=8" 1062 | } 1063 | }, 1064 | "node_modules/eslint-formatter-pretty/node_modules/strip-ansi": { 1065 | "version": "6.0.1", 1066 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1067 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1068 | "dev": true, 1069 | "dependencies": { 1070 | "ansi-regex": "^5.0.1" 1071 | }, 1072 | "engines": { 1073 | "node": ">=8" 1074 | } 1075 | }, 1076 | "node_modules/eslint-rule-docs": { 1077 | "version": "1.1.235", 1078 | "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", 1079 | "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==", 1080 | "dev": true 1081 | }, 1082 | "node_modules/esprima": { 1083 | "version": "4.0.1", 1084 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1085 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1086 | "dev": true, 1087 | "bin": { 1088 | "esparse": "bin/esparse.js", 1089 | "esvalidate": "bin/esvalidate.js" 1090 | }, 1091 | "engines": { 1092 | "node": ">=4" 1093 | } 1094 | }, 1095 | "node_modules/esutils": { 1096 | "version": "2.0.3", 1097 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1098 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1099 | "dev": true, 1100 | "engines": { 1101 | "node": ">=0.10.0" 1102 | } 1103 | }, 1104 | "node_modules/fast-diff": { 1105 | "version": "1.2.0", 1106 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 1107 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 1108 | "dev": true 1109 | }, 1110 | "node_modules/fast-glob": { 1111 | "version": "3.2.12", 1112 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 1113 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 1114 | "dev": true, 1115 | "dependencies": { 1116 | "@nodelib/fs.stat": "^2.0.2", 1117 | "@nodelib/fs.walk": "^1.2.3", 1118 | "glob-parent": "^5.1.2", 1119 | "merge2": "^1.3.0", 1120 | "micromatch": "^4.0.4" 1121 | }, 1122 | "engines": { 1123 | "node": ">=8.6.0" 1124 | } 1125 | }, 1126 | "node_modules/fastq": { 1127 | "version": "1.15.0", 1128 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 1129 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 1130 | "dev": true, 1131 | "dependencies": { 1132 | "reusify": "^1.0.4" 1133 | } 1134 | }, 1135 | "node_modules/figures": { 1136 | "version": "5.0.0", 1137 | "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", 1138 | "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", 1139 | "dev": true, 1140 | "dependencies": { 1141 | "escape-string-regexp": "^5.0.0", 1142 | "is-unicode-supported": "^1.2.0" 1143 | }, 1144 | "engines": { 1145 | "node": ">=14" 1146 | }, 1147 | "funding": { 1148 | "url": "https://github.com/sponsors/sindresorhus" 1149 | } 1150 | }, 1151 | "node_modules/fill-range": { 1152 | "version": "7.0.1", 1153 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1154 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1155 | "dev": true, 1156 | "dependencies": { 1157 | "to-regex-range": "^5.0.1" 1158 | }, 1159 | "engines": { 1160 | "node": ">=8" 1161 | } 1162 | }, 1163 | "node_modules/find-up": { 1164 | "version": "6.3.0", 1165 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", 1166 | "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", 1167 | "dev": true, 1168 | "dependencies": { 1169 | "locate-path": "^7.1.0", 1170 | "path-exists": "^5.0.0" 1171 | }, 1172 | "engines": { 1173 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1174 | }, 1175 | "funding": { 1176 | "url": "https://github.com/sponsors/sindresorhus" 1177 | } 1178 | }, 1179 | "node_modules/fs.realpath": { 1180 | "version": "1.0.0", 1181 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1182 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1183 | "dev": true 1184 | }, 1185 | "node_modules/fsevents": { 1186 | "version": "2.3.2", 1187 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1188 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1189 | "dev": true, 1190 | "hasInstallScript": true, 1191 | "optional": true, 1192 | "os": [ 1193 | "darwin" 1194 | ], 1195 | "engines": { 1196 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1197 | } 1198 | }, 1199 | "node_modules/function-bind": { 1200 | "version": "1.1.1", 1201 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1202 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1203 | "dev": true 1204 | }, 1205 | "node_modules/get-caller-file": { 1206 | "version": "2.0.5", 1207 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1208 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1209 | "dev": true, 1210 | "engines": { 1211 | "node": "6.* || 8.* || >= 10.*" 1212 | } 1213 | }, 1214 | "node_modules/glob": { 1215 | "version": "7.2.3", 1216 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1217 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1218 | "dev": true, 1219 | "dependencies": { 1220 | "fs.realpath": "^1.0.0", 1221 | "inflight": "^1.0.4", 1222 | "inherits": "2", 1223 | "minimatch": "^3.1.1", 1224 | "once": "^1.3.0", 1225 | "path-is-absolute": "^1.0.0" 1226 | }, 1227 | "engines": { 1228 | "node": "*" 1229 | }, 1230 | "funding": { 1231 | "url": "https://github.com/sponsors/isaacs" 1232 | } 1233 | }, 1234 | "node_modules/glob-parent": { 1235 | "version": "5.1.2", 1236 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1237 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1238 | "dev": true, 1239 | "dependencies": { 1240 | "is-glob": "^4.0.1" 1241 | }, 1242 | "engines": { 1243 | "node": ">= 6" 1244 | } 1245 | }, 1246 | "node_modules/globby": { 1247 | "version": "13.1.3", 1248 | "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", 1249 | "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "dir-glob": "^3.0.1", 1253 | "fast-glob": "^3.2.11", 1254 | "ignore": "^5.2.0", 1255 | "merge2": "^1.4.1", 1256 | "slash": "^4.0.0" 1257 | }, 1258 | "engines": { 1259 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1260 | }, 1261 | "funding": { 1262 | "url": "https://github.com/sponsors/sindresorhus" 1263 | } 1264 | }, 1265 | "node_modules/globby/node_modules/slash": { 1266 | "version": "4.0.0", 1267 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 1268 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", 1269 | "dev": true, 1270 | "engines": { 1271 | "node": ">=12" 1272 | }, 1273 | "funding": { 1274 | "url": "https://github.com/sponsors/sindresorhus" 1275 | } 1276 | }, 1277 | "node_modules/graceful-fs": { 1278 | "version": "4.2.11", 1279 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1280 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1281 | "dev": true 1282 | }, 1283 | "node_modules/hard-rejection": { 1284 | "version": "2.1.0", 1285 | "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", 1286 | "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", 1287 | "dev": true, 1288 | "engines": { 1289 | "node": ">=6" 1290 | } 1291 | }, 1292 | "node_modules/has": { 1293 | "version": "1.0.3", 1294 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1295 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1296 | "dev": true, 1297 | "dependencies": { 1298 | "function-bind": "^1.1.1" 1299 | }, 1300 | "engines": { 1301 | "node": ">= 0.4.0" 1302 | } 1303 | }, 1304 | "node_modules/has-flag": { 1305 | "version": "4.0.0", 1306 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1307 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1308 | "dev": true, 1309 | "engines": { 1310 | "node": ">=8" 1311 | } 1312 | }, 1313 | "node_modules/hosted-git-info": { 1314 | "version": "4.1.0", 1315 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", 1316 | "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", 1317 | "dev": true, 1318 | "dependencies": { 1319 | "lru-cache": "^6.0.0" 1320 | }, 1321 | "engines": { 1322 | "node": ">=10" 1323 | } 1324 | }, 1325 | "node_modules/ignore": { 1326 | "version": "5.2.4", 1327 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1328 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 1329 | "dev": true, 1330 | "engines": { 1331 | "node": ">= 4" 1332 | } 1333 | }, 1334 | "node_modules/ignore-by-default": { 1335 | "version": "2.1.0", 1336 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", 1337 | "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", 1338 | "dev": true, 1339 | "engines": { 1340 | "node": ">=10 <11 || >=12 <13 || >=14" 1341 | } 1342 | }, 1343 | "node_modules/imurmurhash": { 1344 | "version": "0.1.4", 1345 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1346 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1347 | "dev": true, 1348 | "engines": { 1349 | "node": ">=0.8.19" 1350 | } 1351 | }, 1352 | "node_modules/indent-string": { 1353 | "version": "5.0.0", 1354 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", 1355 | "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", 1356 | "dev": true, 1357 | "engines": { 1358 | "node": ">=12" 1359 | }, 1360 | "funding": { 1361 | "url": "https://github.com/sponsors/sindresorhus" 1362 | } 1363 | }, 1364 | "node_modules/inflight": { 1365 | "version": "1.0.6", 1366 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1367 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1368 | "dev": true, 1369 | "dependencies": { 1370 | "once": "^1.3.0", 1371 | "wrappy": "1" 1372 | } 1373 | }, 1374 | "node_modules/inherits": { 1375 | "version": "2.0.4", 1376 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1377 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1378 | "dev": true 1379 | }, 1380 | "node_modules/irregular-plurals": { 1381 | "version": "3.5.0", 1382 | "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", 1383 | "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", 1384 | "dev": true, 1385 | "engines": { 1386 | "node": ">=8" 1387 | } 1388 | }, 1389 | "node_modules/is-arrayish": { 1390 | "version": "0.2.1", 1391 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1392 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 1393 | "dev": true 1394 | }, 1395 | "node_modules/is-binary-path": { 1396 | "version": "2.1.0", 1397 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1398 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1399 | "dev": true, 1400 | "dependencies": { 1401 | "binary-extensions": "^2.0.0" 1402 | }, 1403 | "engines": { 1404 | "node": ">=8" 1405 | } 1406 | }, 1407 | "node_modules/is-core-module": { 1408 | "version": "2.11.0", 1409 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1410 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1411 | "dev": true, 1412 | "dependencies": { 1413 | "has": "^1.0.3" 1414 | }, 1415 | "funding": { 1416 | "url": "https://github.com/sponsors/ljharb" 1417 | } 1418 | }, 1419 | "node_modules/is-error": { 1420 | "version": "2.2.2", 1421 | "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", 1422 | "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", 1423 | "dev": true 1424 | }, 1425 | "node_modules/is-extglob": { 1426 | "version": "2.1.1", 1427 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1428 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1429 | "dev": true, 1430 | "engines": { 1431 | "node": ">=0.10.0" 1432 | } 1433 | }, 1434 | "node_modules/is-fullwidth-code-point": { 1435 | "version": "4.0.0", 1436 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 1437 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 1438 | "dev": true, 1439 | "engines": { 1440 | "node": ">=12" 1441 | }, 1442 | "funding": { 1443 | "url": "https://github.com/sponsors/sindresorhus" 1444 | } 1445 | }, 1446 | "node_modules/is-glob": { 1447 | "version": "4.0.3", 1448 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1449 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1450 | "dev": true, 1451 | "dependencies": { 1452 | "is-extglob": "^2.1.1" 1453 | }, 1454 | "engines": { 1455 | "node": ">=0.10.0" 1456 | } 1457 | }, 1458 | "node_modules/is-number": { 1459 | "version": "7.0.0", 1460 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1461 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1462 | "dev": true, 1463 | "engines": { 1464 | "node": ">=0.12.0" 1465 | } 1466 | }, 1467 | "node_modules/is-path-cwd": { 1468 | "version": "3.0.0", 1469 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", 1470 | "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", 1471 | "dev": true, 1472 | "engines": { 1473 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1474 | }, 1475 | "funding": { 1476 | "url": "https://github.com/sponsors/sindresorhus" 1477 | } 1478 | }, 1479 | "node_modules/is-path-inside": { 1480 | "version": "4.0.0", 1481 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", 1482 | "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", 1483 | "dev": true, 1484 | "engines": { 1485 | "node": ">=12" 1486 | }, 1487 | "funding": { 1488 | "url": "https://github.com/sponsors/sindresorhus" 1489 | } 1490 | }, 1491 | "node_modules/is-plain-obj": { 1492 | "version": "1.1.0", 1493 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1494 | "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", 1495 | "dev": true, 1496 | "engines": { 1497 | "node": ">=0.10.0" 1498 | } 1499 | }, 1500 | "node_modules/is-plain-object": { 1501 | "version": "5.0.0", 1502 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", 1503 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", 1504 | "dev": true, 1505 | "engines": { 1506 | "node": ">=0.10.0" 1507 | } 1508 | }, 1509 | "node_modules/is-promise": { 1510 | "version": "4.0.0", 1511 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", 1512 | "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", 1513 | "dev": true 1514 | }, 1515 | "node_modules/is-unicode-supported": { 1516 | "version": "1.3.0", 1517 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", 1518 | "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", 1519 | "dev": true, 1520 | "engines": { 1521 | "node": ">=12" 1522 | }, 1523 | "funding": { 1524 | "url": "https://github.com/sponsors/sindresorhus" 1525 | } 1526 | }, 1527 | "node_modules/jest-diff": { 1528 | "version": "29.5.0", 1529 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", 1530 | "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", 1531 | "dev": true, 1532 | "dependencies": { 1533 | "chalk": "^4.0.0", 1534 | "diff-sequences": "^29.4.3", 1535 | "jest-get-type": "^29.4.3", 1536 | "pretty-format": "^29.5.0" 1537 | }, 1538 | "engines": { 1539 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1540 | } 1541 | }, 1542 | "node_modules/jest-diff/node_modules/ansi-styles": { 1543 | "version": "4.3.0", 1544 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1545 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1546 | "dev": true, 1547 | "dependencies": { 1548 | "color-convert": "^2.0.1" 1549 | }, 1550 | "engines": { 1551 | "node": ">=8" 1552 | }, 1553 | "funding": { 1554 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1555 | } 1556 | }, 1557 | "node_modules/jest-diff/node_modules/chalk": { 1558 | "version": "4.1.2", 1559 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1560 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1561 | "dev": true, 1562 | "dependencies": { 1563 | "ansi-styles": "^4.1.0", 1564 | "supports-color": "^7.1.0" 1565 | }, 1566 | "engines": { 1567 | "node": ">=10" 1568 | }, 1569 | "funding": { 1570 | "url": "https://github.com/chalk/chalk?sponsor=1" 1571 | } 1572 | }, 1573 | "node_modules/jest-get-type": { 1574 | "version": "29.4.3", 1575 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", 1576 | "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", 1577 | "dev": true, 1578 | "engines": { 1579 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1580 | } 1581 | }, 1582 | "node_modules/js-string-escape": { 1583 | "version": "1.0.1", 1584 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", 1585 | "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", 1586 | "dev": true, 1587 | "engines": { 1588 | "node": ">= 0.8" 1589 | } 1590 | }, 1591 | "node_modules/js-tokens": { 1592 | "version": "4.0.0", 1593 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1594 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1595 | "dev": true 1596 | }, 1597 | "node_modules/js-yaml": { 1598 | "version": "3.14.1", 1599 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1600 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1601 | "dev": true, 1602 | "dependencies": { 1603 | "argparse": "^1.0.7", 1604 | "esprima": "^4.0.0" 1605 | }, 1606 | "bin": { 1607 | "js-yaml": "bin/js-yaml.js" 1608 | } 1609 | }, 1610 | "node_modules/json-parse-even-better-errors": { 1611 | "version": "2.3.1", 1612 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1613 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1614 | "dev": true 1615 | }, 1616 | "node_modules/kind-of": { 1617 | "version": "6.0.3", 1618 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1619 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1620 | "dev": true, 1621 | "engines": { 1622 | "node": ">=0.10.0" 1623 | } 1624 | }, 1625 | "node_modules/lines-and-columns": { 1626 | "version": "1.2.4", 1627 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1628 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1629 | "dev": true 1630 | }, 1631 | "node_modules/load-json-file": { 1632 | "version": "7.0.1", 1633 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", 1634 | "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", 1635 | "dev": true, 1636 | "engines": { 1637 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1638 | }, 1639 | "funding": { 1640 | "url": "https://github.com/sponsors/sindresorhus" 1641 | } 1642 | }, 1643 | "node_modules/locate-path": { 1644 | "version": "7.2.0", 1645 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", 1646 | "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", 1647 | "dev": true, 1648 | "dependencies": { 1649 | "p-locate": "^6.0.0" 1650 | }, 1651 | "engines": { 1652 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1653 | }, 1654 | "funding": { 1655 | "url": "https://github.com/sponsors/sindresorhus" 1656 | } 1657 | }, 1658 | "node_modules/lodash": { 1659 | "version": "4.17.21", 1660 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1661 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1662 | "dev": true 1663 | }, 1664 | "node_modules/log-symbols": { 1665 | "version": "4.1.0", 1666 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1667 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1668 | "dev": true, 1669 | "dependencies": { 1670 | "chalk": "^4.1.0", 1671 | "is-unicode-supported": "^0.1.0" 1672 | }, 1673 | "engines": { 1674 | "node": ">=10" 1675 | }, 1676 | "funding": { 1677 | "url": "https://github.com/sponsors/sindresorhus" 1678 | } 1679 | }, 1680 | "node_modules/log-symbols/node_modules/ansi-styles": { 1681 | "version": "4.3.0", 1682 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1683 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1684 | "dev": true, 1685 | "dependencies": { 1686 | "color-convert": "^2.0.1" 1687 | }, 1688 | "engines": { 1689 | "node": ">=8" 1690 | }, 1691 | "funding": { 1692 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1693 | } 1694 | }, 1695 | "node_modules/log-symbols/node_modules/chalk": { 1696 | "version": "4.1.2", 1697 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1698 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1699 | "dev": true, 1700 | "dependencies": { 1701 | "ansi-styles": "^4.1.0", 1702 | "supports-color": "^7.1.0" 1703 | }, 1704 | "engines": { 1705 | "node": ">=10" 1706 | }, 1707 | "funding": { 1708 | "url": "https://github.com/chalk/chalk?sponsor=1" 1709 | } 1710 | }, 1711 | "node_modules/log-symbols/node_modules/is-unicode-supported": { 1712 | "version": "0.1.0", 1713 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1714 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1715 | "dev": true, 1716 | "engines": { 1717 | "node": ">=10" 1718 | }, 1719 | "funding": { 1720 | "url": "https://github.com/sponsors/sindresorhus" 1721 | } 1722 | }, 1723 | "node_modules/lru-cache": { 1724 | "version": "6.0.0", 1725 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1726 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1727 | "dev": true, 1728 | "dependencies": { 1729 | "yallist": "^4.0.0" 1730 | }, 1731 | "engines": { 1732 | "node": ">=10" 1733 | } 1734 | }, 1735 | "node_modules/map-age-cleaner": { 1736 | "version": "0.1.3", 1737 | "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", 1738 | "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", 1739 | "dev": true, 1740 | "dependencies": { 1741 | "p-defer": "^1.0.0" 1742 | }, 1743 | "engines": { 1744 | "node": ">=6" 1745 | } 1746 | }, 1747 | "node_modules/map-obj": { 1748 | "version": "4.3.0", 1749 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", 1750 | "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", 1751 | "dev": true, 1752 | "engines": { 1753 | "node": ">=8" 1754 | }, 1755 | "funding": { 1756 | "url": "https://github.com/sponsors/sindresorhus" 1757 | } 1758 | }, 1759 | "node_modules/matcher": { 1760 | "version": "5.0.0", 1761 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", 1762 | "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", 1763 | "dev": true, 1764 | "dependencies": { 1765 | "escape-string-regexp": "^5.0.0" 1766 | }, 1767 | "engines": { 1768 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1769 | }, 1770 | "funding": { 1771 | "url": "https://github.com/sponsors/sindresorhus" 1772 | } 1773 | }, 1774 | "node_modules/md5-hex": { 1775 | "version": "3.0.1", 1776 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", 1777 | "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", 1778 | "dev": true, 1779 | "dependencies": { 1780 | "blueimp-md5": "^2.10.0" 1781 | }, 1782 | "engines": { 1783 | "node": ">=8" 1784 | } 1785 | }, 1786 | "node_modules/mem": { 1787 | "version": "9.0.2", 1788 | "resolved": "https://registry.npmjs.org/mem/-/mem-9.0.2.tgz", 1789 | "integrity": "sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==", 1790 | "dev": true, 1791 | "dependencies": { 1792 | "map-age-cleaner": "^0.1.3", 1793 | "mimic-fn": "^4.0.0" 1794 | }, 1795 | "engines": { 1796 | "node": ">=12.20" 1797 | }, 1798 | "funding": { 1799 | "url": "https://github.com/sindresorhus/mem?sponsor=1" 1800 | } 1801 | }, 1802 | "node_modules/meow": { 1803 | "version": "9.0.0", 1804 | "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", 1805 | "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", 1806 | "dev": true, 1807 | "dependencies": { 1808 | "@types/minimist": "^1.2.0", 1809 | "camelcase-keys": "^6.2.2", 1810 | "decamelize": "^1.2.0", 1811 | "decamelize-keys": "^1.1.0", 1812 | "hard-rejection": "^2.1.0", 1813 | "minimist-options": "4.1.0", 1814 | "normalize-package-data": "^3.0.0", 1815 | "read-pkg-up": "^7.0.1", 1816 | "redent": "^3.0.0", 1817 | "trim-newlines": "^3.0.0", 1818 | "type-fest": "^0.18.0", 1819 | "yargs-parser": "^20.2.3" 1820 | }, 1821 | "engines": { 1822 | "node": ">=10" 1823 | }, 1824 | "funding": { 1825 | "url": "https://github.com/sponsors/sindresorhus" 1826 | } 1827 | }, 1828 | "node_modules/meow/node_modules/type-fest": { 1829 | "version": "0.18.1", 1830 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", 1831 | "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", 1832 | "dev": true, 1833 | "engines": { 1834 | "node": ">=10" 1835 | }, 1836 | "funding": { 1837 | "url": "https://github.com/sponsors/sindresorhus" 1838 | } 1839 | }, 1840 | "node_modules/meow/node_modules/yargs-parser": { 1841 | "version": "20.2.9", 1842 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1843 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1844 | "dev": true, 1845 | "engines": { 1846 | "node": ">=10" 1847 | } 1848 | }, 1849 | "node_modules/merge2": { 1850 | "version": "1.4.1", 1851 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1852 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1853 | "dev": true, 1854 | "engines": { 1855 | "node": ">= 8" 1856 | } 1857 | }, 1858 | "node_modules/micromatch": { 1859 | "version": "4.0.5", 1860 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1861 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1862 | "dev": true, 1863 | "dependencies": { 1864 | "braces": "^3.0.2", 1865 | "picomatch": "^2.3.1" 1866 | }, 1867 | "engines": { 1868 | "node": ">=8.6" 1869 | } 1870 | }, 1871 | "node_modules/mimic-fn": { 1872 | "version": "4.0.0", 1873 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", 1874 | "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 1875 | "dev": true, 1876 | "engines": { 1877 | "node": ">=12" 1878 | }, 1879 | "funding": { 1880 | "url": "https://github.com/sponsors/sindresorhus" 1881 | } 1882 | }, 1883 | "node_modules/min-indent": { 1884 | "version": "1.0.1", 1885 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 1886 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 1887 | "dev": true, 1888 | "engines": { 1889 | "node": ">=4" 1890 | } 1891 | }, 1892 | "node_modules/minimatch": { 1893 | "version": "3.1.2", 1894 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1895 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1896 | "dev": true, 1897 | "dependencies": { 1898 | "brace-expansion": "^1.1.7" 1899 | }, 1900 | "engines": { 1901 | "node": "*" 1902 | } 1903 | }, 1904 | "node_modules/minimist-options": { 1905 | "version": "4.1.0", 1906 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", 1907 | "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", 1908 | "dev": true, 1909 | "dependencies": { 1910 | "arrify": "^1.0.1", 1911 | "is-plain-obj": "^1.1.0", 1912 | "kind-of": "^6.0.3" 1913 | }, 1914 | "engines": { 1915 | "node": ">= 6" 1916 | } 1917 | }, 1918 | "node_modules/minimist-options/node_modules/arrify": { 1919 | "version": "1.0.1", 1920 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 1921 | "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", 1922 | "dev": true, 1923 | "engines": { 1924 | "node": ">=0.10.0" 1925 | } 1926 | }, 1927 | "node_modules/ms": { 1928 | "version": "2.1.3", 1929 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1930 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1931 | "dev": true 1932 | }, 1933 | "node_modules/nofilter": { 1934 | "version": "3.1.0", 1935 | "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", 1936 | "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", 1937 | "dev": true, 1938 | "engines": { 1939 | "node": ">=12.19" 1940 | } 1941 | }, 1942 | "node_modules/normalize-package-data": { 1943 | "version": "3.0.3", 1944 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", 1945 | "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", 1946 | "dev": true, 1947 | "dependencies": { 1948 | "hosted-git-info": "^4.0.1", 1949 | "is-core-module": "^2.5.0", 1950 | "semver": "^7.3.4", 1951 | "validate-npm-package-license": "^3.0.1" 1952 | }, 1953 | "engines": { 1954 | "node": ">=10" 1955 | } 1956 | }, 1957 | "node_modules/normalize-path": { 1958 | "version": "3.0.0", 1959 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1960 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1961 | "dev": true, 1962 | "engines": { 1963 | "node": ">=0.10.0" 1964 | } 1965 | }, 1966 | "node_modules/once": { 1967 | "version": "1.4.0", 1968 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1969 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1970 | "dev": true, 1971 | "dependencies": { 1972 | "wrappy": "1" 1973 | } 1974 | }, 1975 | "node_modules/p-defer": { 1976 | "version": "1.0.0", 1977 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", 1978 | "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", 1979 | "dev": true, 1980 | "engines": { 1981 | "node": ">=4" 1982 | } 1983 | }, 1984 | "node_modules/p-event": { 1985 | "version": "5.0.1", 1986 | "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", 1987 | "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", 1988 | "dev": true, 1989 | "dependencies": { 1990 | "p-timeout": "^5.0.2" 1991 | }, 1992 | "engines": { 1993 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1994 | }, 1995 | "funding": { 1996 | "url": "https://github.com/sponsors/sindresorhus" 1997 | } 1998 | }, 1999 | "node_modules/p-limit": { 2000 | "version": "4.0.0", 2001 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", 2002 | "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", 2003 | "dev": true, 2004 | "dependencies": { 2005 | "yocto-queue": "^1.0.0" 2006 | }, 2007 | "engines": { 2008 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2009 | }, 2010 | "funding": { 2011 | "url": "https://github.com/sponsors/sindresorhus" 2012 | } 2013 | }, 2014 | "node_modules/p-locate": { 2015 | "version": "6.0.0", 2016 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", 2017 | "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", 2018 | "dev": true, 2019 | "dependencies": { 2020 | "p-limit": "^4.0.0" 2021 | }, 2022 | "engines": { 2023 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2024 | }, 2025 | "funding": { 2026 | "url": "https://github.com/sponsors/sindresorhus" 2027 | } 2028 | }, 2029 | "node_modules/p-map": { 2030 | "version": "5.5.0", 2031 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", 2032 | "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", 2033 | "dev": true, 2034 | "dependencies": { 2035 | "aggregate-error": "^4.0.0" 2036 | }, 2037 | "engines": { 2038 | "node": ">=12" 2039 | }, 2040 | "funding": { 2041 | "url": "https://github.com/sponsors/sindresorhus" 2042 | } 2043 | }, 2044 | "node_modules/p-timeout": { 2045 | "version": "5.1.0", 2046 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", 2047 | "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", 2048 | "dev": true, 2049 | "engines": { 2050 | "node": ">=12" 2051 | }, 2052 | "funding": { 2053 | "url": "https://github.com/sponsors/sindresorhus" 2054 | } 2055 | }, 2056 | "node_modules/p-try": { 2057 | "version": "2.2.0", 2058 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2059 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2060 | "dev": true, 2061 | "engines": { 2062 | "node": ">=6" 2063 | } 2064 | }, 2065 | "node_modules/parse-json": { 2066 | "version": "5.2.0", 2067 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2068 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2069 | "dev": true, 2070 | "dependencies": { 2071 | "@babel/code-frame": "^7.0.0", 2072 | "error-ex": "^1.3.1", 2073 | "json-parse-even-better-errors": "^2.3.0", 2074 | "lines-and-columns": "^1.1.6" 2075 | }, 2076 | "engines": { 2077 | "node": ">=8" 2078 | }, 2079 | "funding": { 2080 | "url": "https://github.com/sponsors/sindresorhus" 2081 | } 2082 | }, 2083 | "node_modules/parse-ms": { 2084 | "version": "3.0.0", 2085 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", 2086 | "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", 2087 | "dev": true, 2088 | "engines": { 2089 | "node": ">=12" 2090 | }, 2091 | "funding": { 2092 | "url": "https://github.com/sponsors/sindresorhus" 2093 | } 2094 | }, 2095 | "node_modules/path-exists": { 2096 | "version": "5.0.0", 2097 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", 2098 | "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", 2099 | "dev": true, 2100 | "engines": { 2101 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2102 | } 2103 | }, 2104 | "node_modules/path-is-absolute": { 2105 | "version": "1.0.1", 2106 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2107 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2108 | "dev": true, 2109 | "engines": { 2110 | "node": ">=0.10.0" 2111 | } 2112 | }, 2113 | "node_modules/path-parse": { 2114 | "version": "1.0.7", 2115 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2116 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2117 | "dev": true 2118 | }, 2119 | "node_modules/path-type": { 2120 | "version": "4.0.0", 2121 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2122 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2123 | "dev": true, 2124 | "engines": { 2125 | "node": ">=8" 2126 | } 2127 | }, 2128 | "node_modules/picomatch": { 2129 | "version": "2.3.1", 2130 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2131 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2132 | "dev": true, 2133 | "engines": { 2134 | "node": ">=8.6" 2135 | }, 2136 | "funding": { 2137 | "url": "https://github.com/sponsors/jonschlinkert" 2138 | } 2139 | }, 2140 | "node_modules/pkg-conf": { 2141 | "version": "4.0.0", 2142 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz", 2143 | "integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==", 2144 | "dev": true, 2145 | "dependencies": { 2146 | "find-up": "^6.0.0", 2147 | "load-json-file": "^7.0.0" 2148 | }, 2149 | "engines": { 2150 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2151 | }, 2152 | "funding": { 2153 | "url": "https://github.com/sponsors/sindresorhus" 2154 | } 2155 | }, 2156 | "node_modules/plur": { 2157 | "version": "5.1.0", 2158 | "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", 2159 | "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", 2160 | "dev": true, 2161 | "dependencies": { 2162 | "irregular-plurals": "^3.3.0" 2163 | }, 2164 | "engines": { 2165 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2166 | }, 2167 | "funding": { 2168 | "url": "https://github.com/sponsors/sindresorhus" 2169 | } 2170 | }, 2171 | "node_modules/pretty-format": { 2172 | "version": "29.5.0", 2173 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", 2174 | "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", 2175 | "dev": true, 2176 | "dependencies": { 2177 | "@jest/schemas": "^29.4.3", 2178 | "ansi-styles": "^5.0.0", 2179 | "react-is": "^18.0.0" 2180 | }, 2181 | "engines": { 2182 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2183 | } 2184 | }, 2185 | "node_modules/pretty-format/node_modules/ansi-styles": { 2186 | "version": "5.2.0", 2187 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 2188 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 2189 | "dev": true, 2190 | "engines": { 2191 | "node": ">=10" 2192 | }, 2193 | "funding": { 2194 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2195 | } 2196 | }, 2197 | "node_modules/pretty-ms": { 2198 | "version": "8.0.0", 2199 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", 2200 | "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==", 2201 | "dev": true, 2202 | "dependencies": { 2203 | "parse-ms": "^3.0.0" 2204 | }, 2205 | "engines": { 2206 | "node": ">=14.16" 2207 | }, 2208 | "funding": { 2209 | "url": "https://github.com/sponsors/sindresorhus" 2210 | } 2211 | }, 2212 | "node_modules/queue-microtask": { 2213 | "version": "1.2.3", 2214 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2215 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2216 | "dev": true, 2217 | "funding": [ 2218 | { 2219 | "type": "github", 2220 | "url": "https://github.com/sponsors/feross" 2221 | }, 2222 | { 2223 | "type": "patreon", 2224 | "url": "https://www.patreon.com/feross" 2225 | }, 2226 | { 2227 | "type": "consulting", 2228 | "url": "https://feross.org/support" 2229 | } 2230 | ] 2231 | }, 2232 | "node_modules/quick-lru": { 2233 | "version": "4.0.1", 2234 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", 2235 | "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", 2236 | "dev": true, 2237 | "engines": { 2238 | "node": ">=8" 2239 | } 2240 | }, 2241 | "node_modules/react-is": { 2242 | "version": "18.2.0", 2243 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", 2244 | "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", 2245 | "dev": true 2246 | }, 2247 | "node_modules/read-pkg": { 2248 | "version": "5.2.0", 2249 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", 2250 | "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", 2251 | "dev": true, 2252 | "dependencies": { 2253 | "@types/normalize-package-data": "^2.4.0", 2254 | "normalize-package-data": "^2.5.0", 2255 | "parse-json": "^5.0.0", 2256 | "type-fest": "^0.6.0" 2257 | }, 2258 | "engines": { 2259 | "node": ">=8" 2260 | } 2261 | }, 2262 | "node_modules/read-pkg-up": { 2263 | "version": "7.0.1", 2264 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", 2265 | "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", 2266 | "dev": true, 2267 | "dependencies": { 2268 | "find-up": "^4.1.0", 2269 | "read-pkg": "^5.2.0", 2270 | "type-fest": "^0.8.1" 2271 | }, 2272 | "engines": { 2273 | "node": ">=8" 2274 | }, 2275 | "funding": { 2276 | "url": "https://github.com/sponsors/sindresorhus" 2277 | } 2278 | }, 2279 | "node_modules/read-pkg-up/node_modules/find-up": { 2280 | "version": "4.1.0", 2281 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 2282 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 2283 | "dev": true, 2284 | "dependencies": { 2285 | "locate-path": "^5.0.0", 2286 | "path-exists": "^4.0.0" 2287 | }, 2288 | "engines": { 2289 | "node": ">=8" 2290 | } 2291 | }, 2292 | "node_modules/read-pkg-up/node_modules/locate-path": { 2293 | "version": "5.0.0", 2294 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2295 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2296 | "dev": true, 2297 | "dependencies": { 2298 | "p-locate": "^4.1.0" 2299 | }, 2300 | "engines": { 2301 | "node": ">=8" 2302 | } 2303 | }, 2304 | "node_modules/read-pkg-up/node_modules/p-limit": { 2305 | "version": "2.3.0", 2306 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2307 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2308 | "dev": true, 2309 | "dependencies": { 2310 | "p-try": "^2.0.0" 2311 | }, 2312 | "engines": { 2313 | "node": ">=6" 2314 | }, 2315 | "funding": { 2316 | "url": "https://github.com/sponsors/sindresorhus" 2317 | } 2318 | }, 2319 | "node_modules/read-pkg-up/node_modules/p-locate": { 2320 | "version": "4.1.0", 2321 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 2322 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 2323 | "dev": true, 2324 | "dependencies": { 2325 | "p-limit": "^2.2.0" 2326 | }, 2327 | "engines": { 2328 | "node": ">=8" 2329 | } 2330 | }, 2331 | "node_modules/read-pkg-up/node_modules/path-exists": { 2332 | "version": "4.0.0", 2333 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2334 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2335 | "dev": true, 2336 | "engines": { 2337 | "node": ">=8" 2338 | } 2339 | }, 2340 | "node_modules/read-pkg-up/node_modules/type-fest": { 2341 | "version": "0.8.1", 2342 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2343 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2344 | "dev": true, 2345 | "engines": { 2346 | "node": ">=8" 2347 | } 2348 | }, 2349 | "node_modules/read-pkg/node_modules/hosted-git-info": { 2350 | "version": "2.8.9", 2351 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 2352 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 2353 | "dev": true 2354 | }, 2355 | "node_modules/read-pkg/node_modules/normalize-package-data": { 2356 | "version": "2.5.0", 2357 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2358 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2359 | "dev": true, 2360 | "dependencies": { 2361 | "hosted-git-info": "^2.1.4", 2362 | "resolve": "^1.10.0", 2363 | "semver": "2 || 3 || 4 || 5", 2364 | "validate-npm-package-license": "^3.0.1" 2365 | } 2366 | }, 2367 | "node_modules/read-pkg/node_modules/semver": { 2368 | "version": "5.7.1", 2369 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2370 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2371 | "dev": true, 2372 | "bin": { 2373 | "semver": "bin/semver" 2374 | } 2375 | }, 2376 | "node_modules/read-pkg/node_modules/type-fest": { 2377 | "version": "0.6.0", 2378 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", 2379 | "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", 2380 | "dev": true, 2381 | "engines": { 2382 | "node": ">=8" 2383 | } 2384 | }, 2385 | "node_modules/readdirp": { 2386 | "version": "3.6.0", 2387 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2388 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2389 | "dev": true, 2390 | "dependencies": { 2391 | "picomatch": "^2.2.1" 2392 | }, 2393 | "engines": { 2394 | "node": ">=8.10.0" 2395 | } 2396 | }, 2397 | "node_modules/redent": { 2398 | "version": "3.0.0", 2399 | "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", 2400 | "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", 2401 | "dev": true, 2402 | "dependencies": { 2403 | "indent-string": "^4.0.0", 2404 | "strip-indent": "^3.0.0" 2405 | }, 2406 | "engines": { 2407 | "node": ">=8" 2408 | } 2409 | }, 2410 | "node_modules/redent/node_modules/indent-string": { 2411 | "version": "4.0.0", 2412 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 2413 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 2414 | "dev": true, 2415 | "engines": { 2416 | "node": ">=8" 2417 | } 2418 | }, 2419 | "node_modules/require-directory": { 2420 | "version": "2.1.1", 2421 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2422 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 2423 | "dev": true, 2424 | "engines": { 2425 | "node": ">=0.10.0" 2426 | } 2427 | }, 2428 | "node_modules/resolve": { 2429 | "version": "1.22.1", 2430 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2431 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2432 | "dev": true, 2433 | "dependencies": { 2434 | "is-core-module": "^2.9.0", 2435 | "path-parse": "^1.0.7", 2436 | "supports-preserve-symlinks-flag": "^1.0.0" 2437 | }, 2438 | "bin": { 2439 | "resolve": "bin/resolve" 2440 | }, 2441 | "funding": { 2442 | "url": "https://github.com/sponsors/ljharb" 2443 | } 2444 | }, 2445 | "node_modules/resolve-cwd": { 2446 | "version": "3.0.0", 2447 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 2448 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 2449 | "dev": true, 2450 | "dependencies": { 2451 | "resolve-from": "^5.0.0" 2452 | }, 2453 | "engines": { 2454 | "node": ">=8" 2455 | } 2456 | }, 2457 | "node_modules/resolve-from": { 2458 | "version": "5.0.0", 2459 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 2460 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 2461 | "dev": true, 2462 | "engines": { 2463 | "node": ">=8" 2464 | } 2465 | }, 2466 | "node_modules/reusify": { 2467 | "version": "1.0.4", 2468 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2469 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2470 | "dev": true, 2471 | "engines": { 2472 | "iojs": ">=1.0.0", 2473 | "node": ">=0.10.0" 2474 | } 2475 | }, 2476 | "node_modules/rimraf": { 2477 | "version": "3.0.2", 2478 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2479 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2480 | "dev": true, 2481 | "dependencies": { 2482 | "glob": "^7.1.3" 2483 | }, 2484 | "bin": { 2485 | "rimraf": "bin.js" 2486 | }, 2487 | "funding": { 2488 | "url": "https://github.com/sponsors/isaacs" 2489 | } 2490 | }, 2491 | "node_modules/run-parallel": { 2492 | "version": "1.2.0", 2493 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2494 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2495 | "dev": true, 2496 | "funding": [ 2497 | { 2498 | "type": "github", 2499 | "url": "https://github.com/sponsors/feross" 2500 | }, 2501 | { 2502 | "type": "patreon", 2503 | "url": "https://www.patreon.com/feross" 2504 | }, 2505 | { 2506 | "type": "consulting", 2507 | "url": "https://feross.org/support" 2508 | } 2509 | ], 2510 | "dependencies": { 2511 | "queue-microtask": "^1.2.2" 2512 | } 2513 | }, 2514 | "node_modules/semver": { 2515 | "version": "7.3.8", 2516 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 2517 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 2518 | "dev": true, 2519 | "dependencies": { 2520 | "lru-cache": "^6.0.0" 2521 | }, 2522 | "bin": { 2523 | "semver": "bin/semver.js" 2524 | }, 2525 | "engines": { 2526 | "node": ">=10" 2527 | } 2528 | }, 2529 | "node_modules/serialize-error": { 2530 | "version": "7.0.1", 2531 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", 2532 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", 2533 | "dev": true, 2534 | "dependencies": { 2535 | "type-fest": "^0.13.1" 2536 | }, 2537 | "engines": { 2538 | "node": ">=10" 2539 | }, 2540 | "funding": { 2541 | "url": "https://github.com/sponsors/sindresorhus" 2542 | } 2543 | }, 2544 | "node_modules/signal-exit": { 2545 | "version": "3.0.7", 2546 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2547 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2548 | "dev": true 2549 | }, 2550 | "node_modules/slash": { 2551 | "version": "3.0.0", 2552 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2553 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2554 | "dev": true, 2555 | "engines": { 2556 | "node": ">=8" 2557 | } 2558 | }, 2559 | "node_modules/slice-ansi": { 2560 | "version": "5.0.0", 2561 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 2562 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 2563 | "dev": true, 2564 | "dependencies": { 2565 | "ansi-styles": "^6.0.0", 2566 | "is-fullwidth-code-point": "^4.0.0" 2567 | }, 2568 | "engines": { 2569 | "node": ">=12" 2570 | }, 2571 | "funding": { 2572 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 2573 | } 2574 | }, 2575 | "node_modules/spdx-correct": { 2576 | "version": "3.2.0", 2577 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", 2578 | "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", 2579 | "dev": true, 2580 | "dependencies": { 2581 | "spdx-expression-parse": "^3.0.0", 2582 | "spdx-license-ids": "^3.0.0" 2583 | } 2584 | }, 2585 | "node_modules/spdx-exceptions": { 2586 | "version": "2.3.0", 2587 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2588 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2589 | "dev": true 2590 | }, 2591 | "node_modules/spdx-expression-parse": { 2592 | "version": "3.0.1", 2593 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2594 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2595 | "dev": true, 2596 | "dependencies": { 2597 | "spdx-exceptions": "^2.1.0", 2598 | "spdx-license-ids": "^3.0.0" 2599 | } 2600 | }, 2601 | "node_modules/spdx-license-ids": { 2602 | "version": "3.0.13", 2603 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", 2604 | "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", 2605 | "dev": true 2606 | }, 2607 | "node_modules/sprintf-js": { 2608 | "version": "1.0.3", 2609 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2610 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 2611 | "dev": true 2612 | }, 2613 | "node_modules/stack-utils": { 2614 | "version": "2.0.6", 2615 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", 2616 | "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", 2617 | "dev": true, 2618 | "dependencies": { 2619 | "escape-string-regexp": "^2.0.0" 2620 | }, 2621 | "engines": { 2622 | "node": ">=10" 2623 | } 2624 | }, 2625 | "node_modules/stack-utils/node_modules/escape-string-regexp": { 2626 | "version": "2.0.0", 2627 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 2628 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 2629 | "dev": true, 2630 | "engines": { 2631 | "node": ">=8" 2632 | } 2633 | }, 2634 | "node_modules/string-width": { 2635 | "version": "5.1.2", 2636 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2637 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2638 | "dev": true, 2639 | "dependencies": { 2640 | "eastasianwidth": "^0.2.0", 2641 | "emoji-regex": "^9.2.2", 2642 | "strip-ansi": "^7.0.1" 2643 | }, 2644 | "engines": { 2645 | "node": ">=12" 2646 | }, 2647 | "funding": { 2648 | "url": "https://github.com/sponsors/sindresorhus" 2649 | } 2650 | }, 2651 | "node_modules/strip-ansi": { 2652 | "version": "7.0.1", 2653 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 2654 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 2655 | "dev": true, 2656 | "dependencies": { 2657 | "ansi-regex": "^6.0.1" 2658 | }, 2659 | "engines": { 2660 | "node": ">=12" 2661 | }, 2662 | "funding": { 2663 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2664 | } 2665 | }, 2666 | "node_modules/strip-indent": { 2667 | "version": "3.0.0", 2668 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 2669 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 2670 | "dev": true, 2671 | "dependencies": { 2672 | "min-indent": "^1.0.0" 2673 | }, 2674 | "engines": { 2675 | "node": ">=8" 2676 | } 2677 | }, 2678 | "node_modules/supertap": { 2679 | "version": "3.0.1", 2680 | "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", 2681 | "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", 2682 | "dev": true, 2683 | "dependencies": { 2684 | "indent-string": "^5.0.0", 2685 | "js-yaml": "^3.14.1", 2686 | "serialize-error": "^7.0.1", 2687 | "strip-ansi": "^7.0.1" 2688 | }, 2689 | "engines": { 2690 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2691 | } 2692 | }, 2693 | "node_modules/supports-color": { 2694 | "version": "7.2.0", 2695 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2696 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2697 | "dev": true, 2698 | "dependencies": { 2699 | "has-flag": "^4.0.0" 2700 | }, 2701 | "engines": { 2702 | "node": ">=8" 2703 | } 2704 | }, 2705 | "node_modules/supports-hyperlinks": { 2706 | "version": "2.3.0", 2707 | "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", 2708 | "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", 2709 | "dev": true, 2710 | "dependencies": { 2711 | "has-flag": "^4.0.0", 2712 | "supports-color": "^7.0.0" 2713 | }, 2714 | "engines": { 2715 | "node": ">=8" 2716 | } 2717 | }, 2718 | "node_modules/supports-preserve-symlinks-flag": { 2719 | "version": "1.0.0", 2720 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2721 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2722 | "dev": true, 2723 | "engines": { 2724 | "node": ">= 0.4" 2725 | }, 2726 | "funding": { 2727 | "url": "https://github.com/sponsors/ljharb" 2728 | } 2729 | }, 2730 | "node_modules/temp-dir": { 2731 | "version": "3.0.0", 2732 | "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", 2733 | "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", 2734 | "dev": true, 2735 | "engines": { 2736 | "node": ">=14.16" 2737 | } 2738 | }, 2739 | "node_modules/time-zone": { 2740 | "version": "1.0.0", 2741 | "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", 2742 | "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", 2743 | "dev": true, 2744 | "engines": { 2745 | "node": ">=4" 2746 | } 2747 | }, 2748 | "node_modules/to-regex-range": { 2749 | "version": "5.0.1", 2750 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2751 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2752 | "dev": true, 2753 | "dependencies": { 2754 | "is-number": "^7.0.0" 2755 | }, 2756 | "engines": { 2757 | "node": ">=8.0" 2758 | } 2759 | }, 2760 | "node_modules/trim-newlines": { 2761 | "version": "3.0.1", 2762 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", 2763 | "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", 2764 | "dev": true, 2765 | "engines": { 2766 | "node": ">=8" 2767 | } 2768 | }, 2769 | "node_modules/tsd": { 2770 | "version": "0.28.1", 2771 | "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", 2772 | "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", 2773 | "dev": true, 2774 | "dependencies": { 2775 | "@tsd/typescript": "~5.0.2", 2776 | "eslint-formatter-pretty": "^4.1.0", 2777 | "globby": "^11.0.1", 2778 | "jest-diff": "^29.0.3", 2779 | "meow": "^9.0.0", 2780 | "path-exists": "^4.0.0", 2781 | "read-pkg-up": "^7.0.0" 2782 | }, 2783 | "bin": { 2784 | "tsd": "dist/cli.js" 2785 | }, 2786 | "engines": { 2787 | "node": ">=14.16" 2788 | } 2789 | }, 2790 | "node_modules/tsd/node_modules/globby": { 2791 | "version": "11.1.0", 2792 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 2793 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 2794 | "dev": true, 2795 | "dependencies": { 2796 | "array-union": "^2.1.0", 2797 | "dir-glob": "^3.0.1", 2798 | "fast-glob": "^3.2.9", 2799 | "ignore": "^5.2.0", 2800 | "merge2": "^1.4.1", 2801 | "slash": "^3.0.0" 2802 | }, 2803 | "engines": { 2804 | "node": ">=10" 2805 | }, 2806 | "funding": { 2807 | "url": "https://github.com/sponsors/sindresorhus" 2808 | } 2809 | }, 2810 | "node_modules/tsd/node_modules/path-exists": { 2811 | "version": "4.0.0", 2812 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2813 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2814 | "dev": true, 2815 | "engines": { 2816 | "node": ">=8" 2817 | } 2818 | }, 2819 | "node_modules/type-fest": { 2820 | "version": "0.13.1", 2821 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", 2822 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", 2823 | "dev": true, 2824 | "engines": { 2825 | "node": ">=10" 2826 | }, 2827 | "funding": { 2828 | "url": "https://github.com/sponsors/sindresorhus" 2829 | } 2830 | }, 2831 | "node_modules/typescript": { 2832 | "version": "5.0.3", 2833 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", 2834 | "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", 2835 | "dev": true, 2836 | "bin": { 2837 | "tsc": "bin/tsc", 2838 | "tsserver": "bin/tsserver" 2839 | }, 2840 | "engines": { 2841 | "node": ">=12.20" 2842 | } 2843 | }, 2844 | "node_modules/validate-npm-package-license": { 2845 | "version": "3.0.4", 2846 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2847 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2848 | "dev": true, 2849 | "dependencies": { 2850 | "spdx-correct": "^3.0.0", 2851 | "spdx-expression-parse": "^3.0.0" 2852 | } 2853 | }, 2854 | "node_modules/well-known-symbols": { 2855 | "version": "2.0.0", 2856 | "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", 2857 | "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", 2858 | "dev": true, 2859 | "engines": { 2860 | "node": ">=6" 2861 | } 2862 | }, 2863 | "node_modules/word-wrap": { 2864 | "version": "1.2.3", 2865 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2866 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2867 | "dev": true, 2868 | "engines": { 2869 | "node": ">=0.10.0" 2870 | } 2871 | }, 2872 | "node_modules/wordwrap": { 2873 | "version": "1.0.0", 2874 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2875 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2876 | "dev": true 2877 | }, 2878 | "node_modules/wrap-ansi": { 2879 | "version": "7.0.0", 2880 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2881 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2882 | "dev": true, 2883 | "dependencies": { 2884 | "ansi-styles": "^4.0.0", 2885 | "string-width": "^4.1.0", 2886 | "strip-ansi": "^6.0.0" 2887 | }, 2888 | "engines": { 2889 | "node": ">=10" 2890 | }, 2891 | "funding": { 2892 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2893 | } 2894 | }, 2895 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 2896 | "version": "5.0.1", 2897 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2898 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2899 | "dev": true, 2900 | "engines": { 2901 | "node": ">=8" 2902 | } 2903 | }, 2904 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 2905 | "version": "4.3.0", 2906 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2907 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2908 | "dev": true, 2909 | "dependencies": { 2910 | "color-convert": "^2.0.1" 2911 | }, 2912 | "engines": { 2913 | "node": ">=8" 2914 | }, 2915 | "funding": { 2916 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2917 | } 2918 | }, 2919 | "node_modules/wrap-ansi/node_modules/emoji-regex": { 2920 | "version": "8.0.0", 2921 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2922 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2923 | "dev": true 2924 | }, 2925 | "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { 2926 | "version": "3.0.0", 2927 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2928 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2929 | "dev": true, 2930 | "engines": { 2931 | "node": ">=8" 2932 | } 2933 | }, 2934 | "node_modules/wrap-ansi/node_modules/string-width": { 2935 | "version": "4.2.3", 2936 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2937 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2938 | "dev": true, 2939 | "dependencies": { 2940 | "emoji-regex": "^8.0.0", 2941 | "is-fullwidth-code-point": "^3.0.0", 2942 | "strip-ansi": "^6.0.1" 2943 | }, 2944 | "engines": { 2945 | "node": ">=8" 2946 | } 2947 | }, 2948 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 2949 | "version": "6.0.1", 2950 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2951 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2952 | "dev": true, 2953 | "dependencies": { 2954 | "ansi-regex": "^5.0.1" 2955 | }, 2956 | "engines": { 2957 | "node": ">=8" 2958 | } 2959 | }, 2960 | "node_modules/wrap-text": { 2961 | "version": "1.0.9", 2962 | "resolved": "https://registry.npmjs.org/wrap-text/-/wrap-text-1.0.9.tgz", 2963 | "integrity": "sha512-NWfjspSgMDXQIMpKM56AwCQPI01OMFRYYJBh6dGNCfH7AOl+j/VqqbiopgJ4VuQfSluqLc+2ekqaPNpYAGZ/Vg==", 2964 | "dev": true 2965 | }, 2966 | "node_modules/wrappy": { 2967 | "version": "1.0.2", 2968 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2969 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2970 | "dev": true 2971 | }, 2972 | "node_modules/write-file-atomic": { 2973 | "version": "5.0.0", 2974 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", 2975 | "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", 2976 | "dev": true, 2977 | "dependencies": { 2978 | "imurmurhash": "^0.1.4", 2979 | "signal-exit": "^3.0.7" 2980 | }, 2981 | "engines": { 2982 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2983 | } 2984 | }, 2985 | "node_modules/y18n": { 2986 | "version": "5.0.8", 2987 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2988 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2989 | "dev": true, 2990 | "engines": { 2991 | "node": ">=10" 2992 | } 2993 | }, 2994 | "node_modules/yallist": { 2995 | "version": "4.0.0", 2996 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2997 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2998 | "dev": true 2999 | }, 3000 | "node_modules/yargs": { 3001 | "version": "17.7.1", 3002 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", 3003 | "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", 3004 | "dev": true, 3005 | "dependencies": { 3006 | "cliui": "^8.0.1", 3007 | "escalade": "^3.1.1", 3008 | "get-caller-file": "^2.0.5", 3009 | "require-directory": "^2.1.1", 3010 | "string-width": "^4.2.3", 3011 | "y18n": "^5.0.5", 3012 | "yargs-parser": "^21.1.1" 3013 | }, 3014 | "engines": { 3015 | "node": ">=12" 3016 | } 3017 | }, 3018 | "node_modules/yargs-parser": { 3019 | "version": "21.1.1", 3020 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 3021 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 3022 | "dev": true, 3023 | "engines": { 3024 | "node": ">=12" 3025 | } 3026 | }, 3027 | "node_modules/yargs/node_modules/ansi-regex": { 3028 | "version": "5.0.1", 3029 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3030 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3031 | "dev": true, 3032 | "engines": { 3033 | "node": ">=8" 3034 | } 3035 | }, 3036 | "node_modules/yargs/node_modules/emoji-regex": { 3037 | "version": "8.0.0", 3038 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3039 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3040 | "dev": true 3041 | }, 3042 | "node_modules/yargs/node_modules/is-fullwidth-code-point": { 3043 | "version": "3.0.0", 3044 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3045 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3046 | "dev": true, 3047 | "engines": { 3048 | "node": ">=8" 3049 | } 3050 | }, 3051 | "node_modules/yargs/node_modules/string-width": { 3052 | "version": "4.2.3", 3053 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3054 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3055 | "dev": true, 3056 | "dependencies": { 3057 | "emoji-regex": "^8.0.0", 3058 | "is-fullwidth-code-point": "^3.0.0", 3059 | "strip-ansi": "^6.0.1" 3060 | }, 3061 | "engines": { 3062 | "node": ">=8" 3063 | } 3064 | }, 3065 | "node_modules/yargs/node_modules/strip-ansi": { 3066 | "version": "6.0.1", 3067 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3068 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3069 | "dev": true, 3070 | "dependencies": { 3071 | "ansi-regex": "^5.0.1" 3072 | }, 3073 | "engines": { 3074 | "node": ">=8" 3075 | } 3076 | }, 3077 | "node_modules/yocto-queue": { 3078 | "version": "1.0.0", 3079 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", 3080 | "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", 3081 | "dev": true, 3082 | "engines": { 3083 | "node": ">=12.20" 3084 | }, 3085 | "funding": { 3086 | "url": "https://github.com/sponsors/sindresorhus" 3087 | } 3088 | } 3089 | } 3090 | } 3091 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fast-word-wrap", 3 | "version": "1.1.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "ava --verbose" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/alepinio/fast-word-wrap.git" 12 | }, 13 | "keywords": [ 14 | "word", 15 | "line", 16 | "paragraph", 17 | "text", 18 | "split", 19 | "wrap", 20 | "benchmark" 21 | ], 22 | "author": "alepinio", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/alepinio/fast-word-wrap/issues" 26 | }, 27 | "homepage": "https://github.com/alepinio/fast-word-wrap#readme", 28 | "devDependencies": { 29 | "ava": "^5.2.0", 30 | "tsd": "^0.28.1", 31 | "typescript": "^5.0.3", 32 | "word-wrap": "^1.2.3", 33 | "wordwrap": "^1.0.0", 34 | "wrap-text": "^1.0.9" 35 | }, 36 | "types": "index.d.ts" 37 | } 38 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # fast-word-wrap 2 | 3 | a fast and simple node.js package for getting a paragraph wrapped at a fixed line length 4 | 5 | `fast-word-wrap` has been proven (see [benchmark](#benchmark)) to be faster than [wordwrap](https://github.com/substack/node-wordwrap) (31x), [wrap-text](https://github.com/IonicaBizau/wrap-text) (11x) and [word-wrap](https://github.com/jonschlinkert/word-wrap) (10x) 6 | 7 | ## toc 8 | 9 | - [installation](#installation) 10 | - [usage](#usage) 11 | * [wrapping strings containing newlines](#wrapping-strings-containing-newlines) 12 | - [testing](#testing) 13 | * [unit](#unit) 14 | * [benchmark](#benchmark) 15 | * [about the sample text and the golden master](#about-the-sample-text-and-the-golden-master) 16 | 17 | ## installation 18 | 19 | ```console 20 | $ npm install fast-word-wrap 21 | ``` 22 | 23 | ## usage 24 | 25 | ```js 26 | const wrap = require("fast-word-wrap"); 27 | 28 | const str = "The quick brown fox jumps over the lazy dog."; // the newline-free string to wrap 29 | const cpl = 10; // the maximum number of characters per line 30 | 31 | result = wrap(str, cpl); 32 | 33 | console.log(result); // "The quick\nbrown fox\njumps over\nthe lazy\ndog.\n" 34 | ``` 35 | 36 | outputs 37 | 38 | ```console 39 | The quick 40 | brown fox 41 | jumps over 42 | the lazy 43 | dog. 44 | ``` 45 | 46 | ### wrapping strings containing newlines 47 | 48 | `fast-word-wrap` won't work correctly if the input string contains newlines; if that's the case, simply do 49 | 50 | ```js 51 | partials = []; 52 | for (p of str.split("\n").filter(s => s)) { 53 | partials.push(wrap(p, cpl)); 54 | } 55 | 56 | result = partials.join(""); 57 | ``` 58 | 59 | ## testing 60 | 61 | ### unit 62 | 63 | ```console 64 | $ npm test test/unit.js 65 | ``` 66 | 67 | outputs 68 | 69 | ```console 70 | 71 | > fast-word-wrap@1.1.0 test 72 | > ava --verbose "test/unit.js" 73 | 74 | 75 | ✔ no wrap 76 | ℹ The quick brown fox jumps over the lazy dog. 77 | 78 | ✔ wrap 79 | ℹ The quick 80 | brown fox 81 | jumps over 82 | the lazy 83 | dog. 84 | 85 | ✔ do your best 86 | ℹ The 87 | quick 88 | brown 89 | fox 90 | jumps 91 | over 92 | the 93 | lazy 94 | dog. 95 | 96 | ✔ wrap a fragment of "El inmortal" by Jorge Luis Borges 97 | ℹ [output omitted for brevity in readme] 98 | 99 | ─ 100 | 101 | 4 tests passed 102 | ``` 103 | 104 | ### benchmark 105 | 106 | ```console 107 | $ npm test test/benchmark.js 108 | ``` 109 | 110 | outputs in my laptop 111 | 112 | ```console 113 | 114 | > fast-word-wrap@1.1.0 test 115 | > ava --verbose test/benchmark.js 116 | 117 | 118 | ✔ wrap faster than others (2.5s) 119 | ℹ 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 120 | ℹ wrapping 10000 times with each package a fragment of "El inmortal" by Jorge Luis Borges... 121 | ℹ wordwrap took 1500.74 ms 122 | ℹ wrap-text took 532.84 ms 123 | ℹ word-wrap took 506.52 ms 124 | ℹ fast-word-wrap took 47.02 ms 125 | ─ 126 | 127 | 1 test passed 128 | ``` 129 | 130 | ![barh](https://github.com/alepinio/fast-word-wrap/blob/assets/barh.png) 131 | 132 | ### about the sample text and the golden master 133 | 134 | the fragment used for testing is a transcription I did from my copy of "Nueva antología personal" by Jorge Luis Borges (ed. Emecé, 1st edition, 1968); I manually wrapped it at 80 characters per line to get the golden master 135 | -------------------------------------------------------------------------------- /test/benchmark.js: -------------------------------------------------------------------------------- 1 | const test = require("ava"); 2 | const fs = require("fs"); 3 | const os = require("os"); 4 | const {performance} = require('perf_hooks'); 5 | 6 | const wrap = require("../index.js"); 7 | 8 | test("wrap faster than others", t => { 9 | t.log(`${os.cpus()[0].model}`); 10 | 11 | const str = fs.readFileSync("test/el-inmortal-jorge-luis-borges-fragment.txt").toString(); 12 | const cpl = 80; 13 | 14 | const N = 10000; 15 | t.log(`wrapping ${N} times with each package a fragment of \"El inmortal\" by Jorge Luis Borges...`); 16 | 17 | // wrap with wordwrap 18 | const wrap_wordwrap = require("wordwrap")(cpl + 1); // it looks like it takes the newline into account 19 | t0 = performance.now(); 20 | wordwrap = ""; 21 | for (let n = 0; n < N; ++n) { 22 | wordwrap = wrap_wordwrap(str); 23 | } 24 | time_wordwrap = performance.now() - t0; 25 | t.log(`wordwrap took ${time_wordwrap.toFixed(2)} ms`); 26 | 27 | // wrap with wrap-text 28 | const wrap_wrap_dash_text = require("wrap-text"); 29 | t0 = performance.now(); 30 | wrap_dash_text = ""; 31 | for (let n = 0; n < N; ++n) { 32 | let partials = []; 33 | for (p of str.split("\n").filter(s => s)) { 34 | partials.push(wrap_wrap_dash_text(p, cpl - 1)); // with "cpl - 1" i have the string wrapped at "cpl" characters per line...I don't know why 35 | partials.push("\n"); 36 | } 37 | wrap_dash_text = partials.join(""); 38 | } 39 | time_wrap_dash_text = performance.now() - t0; 40 | t.log(`wrap-text took ${time_wrap_dash_text.toFixed(2)} ms`); 41 | 42 | // wrap with word-wrap 43 | const wrap_word_dash_wrap = require("word-wrap"); 44 | t0 = performance.now(); 45 | word_dash_wrap = ""; 46 | for (let n = 0; n < N; ++n) { 47 | word_dash_wrap = wrap_word_dash_wrap(str, {indent: "", trim: true, width: cpl}); 48 | } 49 | time_word_dash_wrap = performance.now() - t0; 50 | t.log(`word-wrap took ${time_word_dash_wrap.toFixed(2)} ms`); 51 | 52 | // wrap with fast-word-wrap 53 | t0 = performance.now(); 54 | result = ""; 55 | for (let n = 0; n < N; ++n) { 56 | partials = []; 57 | for (p of str.split("\n").filter(s => s)) { 58 | partials.push(wrap(p, cpl)); 59 | } 60 | result = partials.join(""); 61 | } 62 | time = performance.now() - t0; 63 | t.log(`fast-word-wrap took ${time.toFixed(2)} ms`); 64 | 65 | const expected = fs.readFileSync("test/golden-master.txt").toString(); 66 | 67 | // check correctness 68 | t.is(result, expected); 69 | t.is(wordwrap, expected); 70 | t.is(word_dash_wrap + "\n", expected); // newline added because word-wrap doesn't append one at the end of the output 71 | t.is(wrap_dash_text, expected); 72 | 73 | // check performance 74 | t.true(time < time_wordwrap); 75 | t.true(time < time_word_dash_wrap); 76 | t.true(time < time_wrap_dash_text); 77 | }); 78 | -------------------------------------------------------------------------------- /test/el-inmortal-jorge-luis-borges-fragment.txt: -------------------------------------------------------------------------------- 1 | Todo me fue dilucidado, aquel día. Los trogloditas eran los Inmortales; el riacho de aguas arenosas, el Río que buscaba el jinete. En cuanto a la ciudad cuyo renombre se había dilatado hasta el Ganges, nueve siglos haría que los Inmortales la habían asolado. Con las reliquias de su ruina erigieron, en el mismo lugar, la desatinada ciudad que yo recorrí: suerte de parodia o reverso y también templo de los dioses irracionales que manejan el mundo y de los que nada sabemos, salvo que no se parecen al hombre. Aquella fundación fue el último símbolo a que condescendieron los Inmortales; marca una etapa en que, juzgando que toda empresa es vana, determinaron vivir en el pensamiento, en la pura especulación. Erigieron la fábrica, la olvidaron y fueron a morar en las cuevas. Absortos, casi no percibían el mundo físico. 2 | Esas cosas Homero las refirió, como quien habla con un niño. También me refirió su vejez y el postrer viaje que emprendió, movido, como Ulises, por el propósito de llegar a los hombres que no saben lo que es el mar ni comen carne sazonada con sal ni sospechan lo que es un remo. Habitó un siglo en la Ciudad de los Inmortales. Cuando la derribaron, aconsejó la fundación de la otra. Ello no debe sorprendernos; es fama que después de cantar la guerra de Ilión, cantó la guerra de las ranas y los ratones. Fue como un dios que creara el cosmos y luego el caos. 3 | Ser inmortal es baladí; menos el hombre, todas las criaturas lo son, pues ignoran la muerte; lo divino, lo terrible, lo incomprensible, es saberse inmortal. He notado que, pese a las religiones, esa convicción es rarísima. Israelitas, cristianos y musulmanes profesan la inmortalidad, pero la veneración que tributan al primer siglo prueba que sólo creen en él, ya que destinan todos los demás, en número infinito, a premiarlo o a castigarlo. Más razonable me parece la rueda de ciertas religiones del Indostán; en esa rueda, que no tiene principio ni fin, cada vida es efecto de la anterior y engendra la siguiente, pero ninguna determina el conjunto... Adoctrinada por un ejercicio de siglos, la república de hombres inmortales había logrado la perfección de la tolerancia y casi del desdén. Sabía que en un plazo infinito le ocurren a todo hombre todas las cosas. Por sus pasadas o futuras virtudes, todo hombre es acreedor a toda bondad, pero también a toda traición, por sus infamias del pasado o del porvenir. Así como en los juegos de azar las cifras pares y las cifras impares tienden al equilibrio, así también se anulan y se corrigen el ingenio y la estolidez, y acaso el rústico poema del Cid es el contrapeso exigido por un solo epíteto de las Églogas o por una sentencia de Heráclito. El pensamiento más fugaz obedece a un dibujo invisible y puede coronar, o inaugurar, una forma secreta. Sé de quienes obraban el mal para que en los siglos futuros resultara el bien, o hubiera resultado en los ya pretéritos... Encarados así, todos nuestros actos son justos, pero también son indiferentes. No hay méritos morales o intelectuales. Homero compuso la Odisea; postulado un plazo infinito, con infinitas circunstancias y cambios, lo imposible es no componer, siquiera una vez, la Odisea. Nadie es alguien, un solo hombre inmortal es todos los hombres. Como Cornelio Agrippa, soy dios, soy héroe, soy filósofo, soy demonio y soy mundo, lo cual es una fatigosa manera de decir que no soy. 4 | El concepto del mundo como sistema de precisas compensaciones influyó vastamente en los Inmortales. En primer término, los hizo invulnerables a la piedad. He mencionado las antiguas canteras que rompían los campos de la otra margen; un hombre se despeñó en la más honda; no podía lastimarse ni morir, pero lo abrasaba la sed; antes de que le arrojaran una cuerda pasaron setenta años. Tampoco interesaba el propio destino. El cuerpo era un sumiso animal doméstico y le bastaba, cada mes, la limosna de unas horas de sueño, de un poco de agua y de una piltrafa de carne. Que nadie quiera rebajarnos a ascetas. No hay placer más complejo que el pensamiento y a él nos entregábamos. A veces, un estímulo extraordinario nos restituía al mundo físico. Por ejemplo, aquella mañana, el viejo goce elemental de la lluvia. Esos lapsos eran rarísimos; todos los Inmortales eran capaces de perfecta quietud; recuerdo alguno a quien jamás he visto de pie: un pájaro anidaba en su pecho. 5 | Entre los corolarios de la doctrina de que no hay cosa que no esté compensada por otra, hay uno de muy poca importancia teórica, pero que nos indujo, a fines o a principios del siglo X, a dispersarnos por la faz de la Tierra. Cabe en estas palabras: Existe un río cuyas aguas dan la inmortalidad; en alguna región habrá otro río cuyas aguas la borren. El número de ríos no es infinito; un viajero inmortal que recorra el mundo acabará, algún día, por haber bebido de todos. Nos propusimos descubrir ese río. 6 | La muerte (o su alusión) hace preciosos y patéticos a los hombres. Éstos conmueven por su condición de fantasmas; cada acto que ejecutan puede ser último; no hay rostro que no esté por desdibujarse como el rostro de un sueño. Todo, entre los mortales, tiene el valor de lo irrecuperable y de lo azaroso. Entre los Inmortales, en cambio, cada acto (y cada pensamiento) es el eco de otros que en el pasado lo antecedieron, sin principio visible, o el fiel presagio de otros que en el futuro lo repetirán hasta el vértigo. No hay cosa que no esté como perdida entre infatigables espejos. Nada puede ocurrir una sola vez, nada es preciosamente precario. Lo elegíaco, lo grave, lo ceremonial, no rigen para los Inmortales. Homero y yo nos separamos en las puertas del Tánger; creo que no nos dijimos adiós. 7 | -------------------------------------------------------------------------------- /test/golden-master.txt: -------------------------------------------------------------------------------- 1 | Todo me fue dilucidado, aquel día. Los trogloditas eran los Inmortales; el 2 | riacho de aguas arenosas, el Río que buscaba el jinete. En cuanto a la ciudad 3 | cuyo renombre se había dilatado hasta el Ganges, nueve siglos haría que los 4 | Inmortales la habían asolado. Con las reliquias de su ruina erigieron, en el 5 | mismo lugar, la desatinada ciudad que yo recorrí: suerte de parodia o reverso y 6 | también templo de los dioses irracionales que manejan el mundo y de los que nada 7 | sabemos, salvo que no se parecen al hombre. Aquella fundación fue el último 8 | símbolo a que condescendieron los Inmortales; marca una etapa en que, juzgando 9 | que toda empresa es vana, determinaron vivir en el pensamiento, en la pura 10 | especulación. Erigieron la fábrica, la olvidaron y fueron a morar en las cuevas. 11 | Absortos, casi no percibían el mundo físico. 12 | Esas cosas Homero las refirió, como quien habla con un niño. También me refirió 13 | su vejez y el postrer viaje que emprendió, movido, como Ulises, por el propósito 14 | de llegar a los hombres que no saben lo que es el mar ni comen carne sazonada 15 | con sal ni sospechan lo que es un remo. Habitó un siglo en la Ciudad de los 16 | Inmortales. Cuando la derribaron, aconsejó la fundación de la otra. Ello no debe 17 | sorprendernos; es fama que después de cantar la guerra de Ilión, cantó la guerra 18 | de las ranas y los ratones. Fue como un dios que creara el cosmos y luego el 19 | caos. 20 | Ser inmortal es baladí; menos el hombre, todas las criaturas lo son, pues 21 | ignoran la muerte; lo divino, lo terrible, lo incomprensible, es saberse 22 | inmortal. He notado que, pese a las religiones, esa convicción es rarísima. 23 | Israelitas, cristianos y musulmanes profesan la inmortalidad, pero la veneración 24 | que tributan al primer siglo prueba que sólo creen en él, ya que destinan todos 25 | los demás, en número infinito, a premiarlo o a castigarlo. Más razonable me 26 | parece la rueda de ciertas religiones del Indostán; en esa rueda, que no tiene 27 | principio ni fin, cada vida es efecto de la anterior y engendra la siguiente, 28 | pero ninguna determina el conjunto... Adoctrinada por un ejercicio de siglos, la 29 | república de hombres inmortales había logrado la perfección de la tolerancia y 30 | casi del desdén. Sabía que en un plazo infinito le ocurren a todo hombre todas 31 | las cosas. Por sus pasadas o futuras virtudes, todo hombre es acreedor a toda 32 | bondad, pero también a toda traición, por sus infamias del pasado o del 33 | porvenir. Así como en los juegos de azar las cifras pares y las cifras impares 34 | tienden al equilibrio, así también se anulan y se corrigen el ingenio y la 35 | estolidez, y acaso el rústico poema del Cid es el contrapeso exigido por un solo 36 | epíteto de las Églogas o por una sentencia de Heráclito. El pensamiento más 37 | fugaz obedece a un dibujo invisible y puede coronar, o inaugurar, una forma 38 | secreta. Sé de quienes obraban el mal para que en los siglos futuros resultara 39 | el bien, o hubiera resultado en los ya pretéritos... Encarados así, todos 40 | nuestros actos son justos, pero también son indiferentes. No hay méritos morales 41 | o intelectuales. Homero compuso la Odisea; postulado un plazo infinito, con 42 | infinitas circunstancias y cambios, lo imposible es no componer, siquiera una 43 | vez, la Odisea. Nadie es alguien, un solo hombre inmortal es todos los hombres. 44 | Como Cornelio Agrippa, soy dios, soy héroe, soy filósofo, soy demonio y soy 45 | mundo, lo cual es una fatigosa manera de decir que no soy. 46 | El concepto del mundo como sistema de precisas compensaciones influyó vastamente 47 | en los Inmortales. En primer término, los hizo invulnerables a la piedad. He 48 | mencionado las antiguas canteras que rompían los campos de la otra margen; un 49 | hombre se despeñó en la más honda; no podía lastimarse ni morir, pero lo 50 | abrasaba la sed; antes de que le arrojaran una cuerda pasaron setenta años. 51 | Tampoco interesaba el propio destino. El cuerpo era un sumiso animal doméstico y 52 | le bastaba, cada mes, la limosna de unas horas de sueño, de un poco de agua y de 53 | una piltrafa de carne. Que nadie quiera rebajarnos a ascetas. No hay placer más 54 | complejo que el pensamiento y a él nos entregábamos. A veces, un estímulo 55 | extraordinario nos restituía al mundo físico. Por ejemplo, aquella mañana, el 56 | viejo goce elemental de la lluvia. Esos lapsos eran rarísimos; todos los 57 | Inmortales eran capaces de perfecta quietud; recuerdo alguno a quien jamás he 58 | visto de pie: un pájaro anidaba en su pecho. 59 | Entre los corolarios de la doctrina de que no hay cosa que no esté compensada 60 | por otra, hay uno de muy poca importancia teórica, pero que nos indujo, a fines 61 | o a principios del siglo X, a dispersarnos por la faz de la Tierra. Cabe en 62 | estas palabras: Existe un río cuyas aguas dan la inmortalidad; en alguna región 63 | habrá otro río cuyas aguas la borren. El número de ríos no es infinito; un 64 | viajero inmortal que recorra el mundo acabará, algún día, por haber bebido de 65 | todos. Nos propusimos descubrir ese río. 66 | La muerte (o su alusión) hace preciosos y patéticos a los hombres. Éstos 67 | conmueven por su condición de fantasmas; cada acto que ejecutan puede ser 68 | último; no hay rostro que no esté por desdibujarse como el rostro de un sueño. 69 | Todo, entre los mortales, tiene el valor de lo irrecuperable y de lo azaroso. 70 | Entre los Inmortales, en cambio, cada acto (y cada pensamiento) es el eco de 71 | otros que en el pasado lo antecedieron, sin principio visible, o el fiel 72 | presagio de otros que en el futuro lo repetirán hasta el vértigo. No hay cosa 73 | que no esté como perdida entre infatigables espejos. Nada puede ocurrir una sola 74 | vez, nada es preciosamente precario. Lo elegíaco, lo grave, lo ceremonial, no 75 | rigen para los Inmortales. Homero y yo nos separamos en las puertas del Tánger; 76 | creo que no nos dijimos adiós. 77 | -------------------------------------------------------------------------------- /test/unit.js: -------------------------------------------------------------------------------- 1 | const test = require("ava"); 2 | const fs = require("fs"); 3 | 4 | const wrap = require("../index.js"); 5 | 6 | test("no wrap", t => { 7 | const str = "The quick brown fox jumps over the lazy dog." 8 | const cpl = str.length; 9 | 10 | const result = wrap(str, cpl); 11 | 12 | const expected = str + "\n"; 13 | 14 | t.is(result, expected); 15 | 16 | t.log(result); 17 | }); 18 | 19 | test("wrap", t => { 20 | const str = "The quick brown fox jumps over the lazy dog." 21 | const cpl = 10; 22 | 23 | const result = wrap(str, cpl); 24 | 25 | const expected = "The quick\nbrown fox\njumps over\nthe lazy\ndog.\n"; 26 | 27 | t.is(result, expected); 28 | 29 | t.log(result); 30 | }); 31 | 32 | test("do your best", t => { 33 | const str = "The quick brown fox jumps over the lazy dog." 34 | const cpl = 3; 35 | 36 | const result = wrap(str, cpl); 37 | 38 | const expected = "The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog.\n"; 39 | 40 | t.is(result, expected); 41 | 42 | t.log(result); 43 | }); 44 | 45 | test("wrap a fragment of \"El inmortal\" by Jorge Luis Borges", t => { 46 | const str = fs.readFileSync("test/el-inmortal-jorge-luis-borges-fragment.txt").toString(); 47 | const cpl = 80; 48 | 49 | let partials = []; 50 | for (p of str.split("\n").filter(s => s)) { 51 | partials.push(wrap(p, cpl)); 52 | } 53 | const result = partials.join(""); 54 | 55 | const expected = fs.readFileSync("test/golden-master.txt").toString(); 56 | 57 | t.is(result, expected); 58 | 59 | t.log(result); 60 | }); 61 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | // https://www.typescriptlang.org/docs/handbook/declaration-files/dts-from-js.html 2 | { 3 | "include": ["*.js"], 4 | "compilerOptions": { 5 | "allowJs": true, 6 | "declaration": true, 7 | "emitDeclarationOnly": true 8 | } 9 | } 10 | --------------------------------------------------------------------------------