├── .gitignore ├── .prettierrc ├── .travis.yml ├── LICENSE ├── README.md ├── jest.json ├── package-lock.json ├── package.json ├── scripts └── build.sh ├── src ├── index.ts ├── interfaces │ ├── index.ts │ ├── rpc-client-options.interface.ts │ ├── rpc-request.interface.ts │ ├── rpc-response-error.interface.ts │ └── rpc-response.interface.ts ├── rpc-client.ts ├── rpc-error-codes.enum.ts └── rpc-error.ts ├── tests └── rpc-client.spec.ts ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | dist -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 100, 4 | "trailingComma": "all" 5 | } 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '8' 4 | - '9' 5 | - '10' 6 | install: 7 | - npm install 8 | script: 9 | - npm test 10 | after_success: 11 | - npm run test:coverage 12 | - 'npm install coveralls && cat ./coverage/lcov.info | coveralls' 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Shady Khalifa 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSONRPC Typescript 2 | 3 | [![Build Status](https://travis-ci.org/shekohex/jsonrpc-ts.svg?branch=master)](https://travis-ci.org/shekohex/jsonrpc-ts) [![Greenkeeper badge](https://badges.greenkeeper.io/shekohex/jsonrpc-ts.svg)](https://greenkeeper.io/) 4 | [![Coverage Status](https://coveralls.io/repos/github/shekohex/jsonrpc-ts/badge.svg?branch=master)](https://coveralls.io/github/shekohex/jsonrpc-ts?branch=master) 5 | [![npm version](https://badge.fury.io/js/jsonrpc-ts.svg)](https://badge.fury.io/js/jsonrpc-ts) 6 | 7 | Strongly 💪 Typed JSON RPC 2.0 Client for Nodejs 8 | 9 | Fully tested to comply with the [official JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification) 10 | 11 | ## Quick Overview 12 | 13 | By Declaring events using a simple interface mapping methods names to their parameters to get Strongly Typed, Fast and Modern Rpc client for your service. 14 | 15 | ## Install 16 | 17 | ``` 18 | npm i jsonrpc-ts 19 | ``` 20 | 21 | ## Usage 22 | 23 | First you need to define your Methods, that could be achieved by creating an interface of methods name and there parameters. 24 | 25 | ```ts 26 | // we have a service that can do math, 27 | // and it has this methods 28 | interface MathService { 29 | // a method called sum that accepts 2 args of type number 30 | sum: [number, number]; 31 | // methods can have named paramerter too. 32 | sub: { left: number; right: number }; 33 | // or if you need return type, you can have that too :) 34 | sumWithReturnType: ({ x, y }: { x: number; y: number }) => number; 35 | } 36 | ``` 37 | 38 | then import `RpcClient` and start making requests 39 | 40 | ```ts 41 | import { RpcClient } from 'jsonrpc-ts'; 42 | 43 | const rpcClient = new RpcClient({ url: '...' }); 44 | // now you have a strongly typed methods. 45 | // try to change [3, 2] to ['3', '2'] and the typescript compiler will catch you ! 46 | const response = await rpcClient.makeRequest({ 47 | method: 'sum', 48 | params: [3, 2], 49 | id: 1, 50 | jsonrpc: '2.0', 51 | }); 52 | // response.data.result === 5 53 | 54 | // response2.data.result has type of number :) 55 | const response2 = await rpcClient.makeRequest({ 56 | method: 'sumWithReturnType', 57 | params: { x: 3, y: 2 }, 58 | id: 2, 59 | jsonrpc: '2.0', 60 | }); 61 | // response2.data.result === 5 62 | ``` 63 | -------------------------------------------------------------------------------- /jest.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleFileExtensions": ["js", "json", "ts"], 3 | "rootDir": ".", 4 | "testRegex": ".spec.ts$", 5 | "transform": { 6 | "^.+\\.ts?$": "ts-jest" 7 | }, 8 | "globals": { 9 | "ts-jest": { 10 | "diagnostics": false 11 | } 12 | }, 13 | "collectCoverageFrom": [ 14 | "src/**/*.ts", 15 | "!src/index.ts", 16 | "!src/**/index.ts", 17 | "!src/**/*.interface.ts", 18 | "!src/**/*.enum.ts", 19 | "!**/node_modules/**", 20 | "!**/vendor/**" 21 | ], 22 | "coverageReporters": [ 23 | "json", 24 | "lcov" 25 | ], 26 | "coverageDirectory": "./coverage", 27 | "testEnvironment": "node" 28 | } 29 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsonrpc-ts", 3 | "version": "0.2.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "jsonrpc-ts", 9 | "version": "0.2.1", 10 | "license": "MIT", 11 | "dependencies": { 12 | "axios": "^1.5.1", 13 | "typescript": "^5.2" 14 | }, 15 | "devDependencies": { 16 | "@types/jest": "^24.9.1", 17 | "@types/node": "^12.12.48", 18 | "coveralls": "^3.1.0", 19 | "http-jsonrpc-server": "^1.1.0", 20 | "jest": "^29.7.0", 21 | "ts-jest": "^29.1.1" 22 | } 23 | }, 24 | "node_modules/@ampproject/remapping": { 25 | "version": "2.2.1", 26 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", 27 | "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", 28 | "dev": true, 29 | "dependencies": { 30 | "@jridgewell/gen-mapping": "^0.3.0", 31 | "@jridgewell/trace-mapping": "^0.3.9" 32 | }, 33 | "engines": { 34 | "node": ">=6.0.0" 35 | } 36 | }, 37 | "node_modules/@babel/code-frame": { 38 | "version": "7.22.13", 39 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", 40 | "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", 41 | "dev": true, 42 | "dependencies": { 43 | "@babel/highlight": "^7.22.13", 44 | "chalk": "^2.4.2" 45 | }, 46 | "engines": { 47 | "node": ">=6.9.0" 48 | } 49 | }, 50 | "node_modules/@babel/code-frame/node_modules/ansi-styles": { 51 | "version": "3.2.1", 52 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 53 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 54 | "dev": true, 55 | "dependencies": { 56 | "color-convert": "^1.9.0" 57 | }, 58 | "engines": { 59 | "node": ">=4" 60 | } 61 | }, 62 | "node_modules/@babel/code-frame/node_modules/chalk": { 63 | "version": "2.4.2", 64 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 65 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 66 | "dev": true, 67 | "dependencies": { 68 | "ansi-styles": "^3.2.1", 69 | "escape-string-regexp": "^1.0.5", 70 | "supports-color": "^5.3.0" 71 | }, 72 | "engines": { 73 | "node": ">=4" 74 | } 75 | }, 76 | "node_modules/@babel/code-frame/node_modules/color-convert": { 77 | "version": "1.9.3", 78 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 79 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 80 | "dev": true, 81 | "dependencies": { 82 | "color-name": "1.1.3" 83 | } 84 | }, 85 | "node_modules/@babel/code-frame/node_modules/color-name": { 86 | "version": "1.1.3", 87 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 88 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 89 | "dev": true 90 | }, 91 | "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { 92 | "version": "1.0.5", 93 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 94 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 95 | "dev": true, 96 | "engines": { 97 | "node": ">=0.8.0" 98 | } 99 | }, 100 | "node_modules/@babel/code-frame/node_modules/has-flag": { 101 | "version": "3.0.0", 102 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 103 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 104 | "dev": true, 105 | "engines": { 106 | "node": ">=4" 107 | } 108 | }, 109 | "node_modules/@babel/code-frame/node_modules/supports-color": { 110 | "version": "5.5.0", 111 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 112 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 113 | "dev": true, 114 | "dependencies": { 115 | "has-flag": "^3.0.0" 116 | }, 117 | "engines": { 118 | "node": ">=4" 119 | } 120 | }, 121 | "node_modules/@babel/compat-data": { 122 | "version": "7.22.20", 123 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", 124 | "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", 125 | "dev": true, 126 | "engines": { 127 | "node": ">=6.9.0" 128 | } 129 | }, 130 | "node_modules/@babel/core": { 131 | "version": "7.23.0", 132 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", 133 | "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", 134 | "dev": true, 135 | "dependencies": { 136 | "@ampproject/remapping": "^2.2.0", 137 | "@babel/code-frame": "^7.22.13", 138 | "@babel/generator": "^7.23.0", 139 | "@babel/helper-compilation-targets": "^7.22.15", 140 | "@babel/helper-module-transforms": "^7.23.0", 141 | "@babel/helpers": "^7.23.0", 142 | "@babel/parser": "^7.23.0", 143 | "@babel/template": "^7.22.15", 144 | "@babel/traverse": "^7.23.0", 145 | "@babel/types": "^7.23.0", 146 | "convert-source-map": "^2.0.0", 147 | "debug": "^4.1.0", 148 | "gensync": "^1.0.0-beta.2", 149 | "json5": "^2.2.3", 150 | "semver": "^6.3.1" 151 | }, 152 | "engines": { 153 | "node": ">=6.9.0" 154 | }, 155 | "funding": { 156 | "type": "opencollective", 157 | "url": "https://opencollective.com/babel" 158 | } 159 | }, 160 | "node_modules/@babel/generator": { 161 | "version": "7.23.0", 162 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", 163 | "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", 164 | "dev": true, 165 | "dependencies": { 166 | "@babel/types": "^7.23.0", 167 | "@jridgewell/gen-mapping": "^0.3.2", 168 | "@jridgewell/trace-mapping": "^0.3.17", 169 | "jsesc": "^2.5.1" 170 | }, 171 | "engines": { 172 | "node": ">=6.9.0" 173 | } 174 | }, 175 | "node_modules/@babel/helper-compilation-targets": { 176 | "version": "7.22.15", 177 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", 178 | "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", 179 | "dev": true, 180 | "dependencies": { 181 | "@babel/compat-data": "^7.22.9", 182 | "@babel/helper-validator-option": "^7.22.15", 183 | "browserslist": "^4.21.9", 184 | "lru-cache": "^5.1.1", 185 | "semver": "^6.3.1" 186 | }, 187 | "engines": { 188 | "node": ">=6.9.0" 189 | } 190 | }, 191 | "node_modules/@babel/helper-environment-visitor": { 192 | "version": "7.22.20", 193 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", 194 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", 195 | "dev": true, 196 | "engines": { 197 | "node": ">=6.9.0" 198 | } 199 | }, 200 | "node_modules/@babel/helper-function-name": { 201 | "version": "7.23.0", 202 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", 203 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", 204 | "dev": true, 205 | "dependencies": { 206 | "@babel/template": "^7.22.15", 207 | "@babel/types": "^7.23.0" 208 | }, 209 | "engines": { 210 | "node": ">=6.9.0" 211 | } 212 | }, 213 | "node_modules/@babel/helper-hoist-variables": { 214 | "version": "7.22.5", 215 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", 216 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", 217 | "dev": true, 218 | "dependencies": { 219 | "@babel/types": "^7.22.5" 220 | }, 221 | "engines": { 222 | "node": ">=6.9.0" 223 | } 224 | }, 225 | "node_modules/@babel/helper-module-imports": { 226 | "version": "7.22.15", 227 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", 228 | "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", 229 | "dev": true, 230 | "dependencies": { 231 | "@babel/types": "^7.22.15" 232 | }, 233 | "engines": { 234 | "node": ">=6.9.0" 235 | } 236 | }, 237 | "node_modules/@babel/helper-module-transforms": { 238 | "version": "7.23.0", 239 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", 240 | "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", 241 | "dev": true, 242 | "dependencies": { 243 | "@babel/helper-environment-visitor": "^7.22.20", 244 | "@babel/helper-module-imports": "^7.22.15", 245 | "@babel/helper-simple-access": "^7.22.5", 246 | "@babel/helper-split-export-declaration": "^7.22.6", 247 | "@babel/helper-validator-identifier": "^7.22.20" 248 | }, 249 | "engines": { 250 | "node": ">=6.9.0" 251 | }, 252 | "peerDependencies": { 253 | "@babel/core": "^7.0.0" 254 | } 255 | }, 256 | "node_modules/@babel/helper-plugin-utils": { 257 | "version": "7.22.5", 258 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", 259 | "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", 260 | "dev": true, 261 | "engines": { 262 | "node": ">=6.9.0" 263 | } 264 | }, 265 | "node_modules/@babel/helper-simple-access": { 266 | "version": "7.22.5", 267 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", 268 | "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", 269 | "dev": true, 270 | "dependencies": { 271 | "@babel/types": "^7.22.5" 272 | }, 273 | "engines": { 274 | "node": ">=6.9.0" 275 | } 276 | }, 277 | "node_modules/@babel/helper-split-export-declaration": { 278 | "version": "7.22.6", 279 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", 280 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", 281 | "dev": true, 282 | "dependencies": { 283 | "@babel/types": "^7.22.5" 284 | }, 285 | "engines": { 286 | "node": ">=6.9.0" 287 | } 288 | }, 289 | "node_modules/@babel/helper-string-parser": { 290 | "version": "7.22.5", 291 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", 292 | "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", 293 | "dev": true, 294 | "engines": { 295 | "node": ">=6.9.0" 296 | } 297 | }, 298 | "node_modules/@babel/helper-validator-identifier": { 299 | "version": "7.22.20", 300 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 301 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 302 | "dev": true, 303 | "engines": { 304 | "node": ">=6.9.0" 305 | } 306 | }, 307 | "node_modules/@babel/helper-validator-option": { 308 | "version": "7.22.15", 309 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", 310 | "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", 311 | "dev": true, 312 | "engines": { 313 | "node": ">=6.9.0" 314 | } 315 | }, 316 | "node_modules/@babel/helpers": { 317 | "version": "7.23.1", 318 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", 319 | "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", 320 | "dev": true, 321 | "dependencies": { 322 | "@babel/template": "^7.22.15", 323 | "@babel/traverse": "^7.23.0", 324 | "@babel/types": "^7.23.0" 325 | }, 326 | "engines": { 327 | "node": ">=6.9.0" 328 | } 329 | }, 330 | "node_modules/@babel/highlight": { 331 | "version": "7.22.20", 332 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", 333 | "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", 334 | "dev": true, 335 | "dependencies": { 336 | "@babel/helper-validator-identifier": "^7.22.20", 337 | "chalk": "^2.4.2", 338 | "js-tokens": "^4.0.0" 339 | }, 340 | "engines": { 341 | "node": ">=6.9.0" 342 | } 343 | }, 344 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 345 | "version": "3.2.1", 346 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 347 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 348 | "dev": true, 349 | "dependencies": { 350 | "color-convert": "^1.9.0" 351 | }, 352 | "engines": { 353 | "node": ">=4" 354 | } 355 | }, 356 | "node_modules/@babel/highlight/node_modules/chalk": { 357 | "version": "2.4.2", 358 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 359 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 360 | "dev": true, 361 | "dependencies": { 362 | "ansi-styles": "^3.2.1", 363 | "escape-string-regexp": "^1.0.5", 364 | "supports-color": "^5.3.0" 365 | }, 366 | "engines": { 367 | "node": ">=4" 368 | } 369 | }, 370 | "node_modules/@babel/highlight/node_modules/color-convert": { 371 | "version": "1.9.3", 372 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 373 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 374 | "dev": true, 375 | "dependencies": { 376 | "color-name": "1.1.3" 377 | } 378 | }, 379 | "node_modules/@babel/highlight/node_modules/color-name": { 380 | "version": "1.1.3", 381 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 382 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 383 | "dev": true 384 | }, 385 | "node_modules/@babel/highlight/node_modules/escape-string-regexp": { 386 | "version": "1.0.5", 387 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 388 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 389 | "dev": true, 390 | "engines": { 391 | "node": ">=0.8.0" 392 | } 393 | }, 394 | "node_modules/@babel/highlight/node_modules/has-flag": { 395 | "version": "3.0.0", 396 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 397 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 398 | "dev": true, 399 | "engines": { 400 | "node": ">=4" 401 | } 402 | }, 403 | "node_modules/@babel/highlight/node_modules/supports-color": { 404 | "version": "5.5.0", 405 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 406 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 407 | "dev": true, 408 | "dependencies": { 409 | "has-flag": "^3.0.0" 410 | }, 411 | "engines": { 412 | "node": ">=4" 413 | } 414 | }, 415 | "node_modules/@babel/parser": { 416 | "version": "7.23.0", 417 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", 418 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", 419 | "dev": true, 420 | "bin": { 421 | "parser": "bin/babel-parser.js" 422 | }, 423 | "engines": { 424 | "node": ">=6.0.0" 425 | } 426 | }, 427 | "node_modules/@babel/plugin-syntax-async-generators": { 428 | "version": "7.8.4", 429 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", 430 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", 431 | "dev": true, 432 | "dependencies": { 433 | "@babel/helper-plugin-utils": "^7.8.0" 434 | }, 435 | "peerDependencies": { 436 | "@babel/core": "^7.0.0-0" 437 | } 438 | }, 439 | "node_modules/@babel/plugin-syntax-bigint": { 440 | "version": "7.8.3", 441 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", 442 | "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", 443 | "dev": true, 444 | "dependencies": { 445 | "@babel/helper-plugin-utils": "^7.8.0" 446 | }, 447 | "peerDependencies": { 448 | "@babel/core": "^7.0.0-0" 449 | } 450 | }, 451 | "node_modules/@babel/plugin-syntax-class-properties": { 452 | "version": "7.12.13", 453 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", 454 | "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", 455 | "dev": true, 456 | "dependencies": { 457 | "@babel/helper-plugin-utils": "^7.12.13" 458 | }, 459 | "peerDependencies": { 460 | "@babel/core": "^7.0.0-0" 461 | } 462 | }, 463 | "node_modules/@babel/plugin-syntax-import-meta": { 464 | "version": "7.10.4", 465 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", 466 | "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", 467 | "dev": true, 468 | "dependencies": { 469 | "@babel/helper-plugin-utils": "^7.10.4" 470 | }, 471 | "peerDependencies": { 472 | "@babel/core": "^7.0.0-0" 473 | } 474 | }, 475 | "node_modules/@babel/plugin-syntax-json-strings": { 476 | "version": "7.8.3", 477 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", 478 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", 479 | "dev": true, 480 | "dependencies": { 481 | "@babel/helper-plugin-utils": "^7.8.0" 482 | }, 483 | "peerDependencies": { 484 | "@babel/core": "^7.0.0-0" 485 | } 486 | }, 487 | "node_modules/@babel/plugin-syntax-jsx": { 488 | "version": "7.22.5", 489 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", 490 | "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", 491 | "dev": true, 492 | "dependencies": { 493 | "@babel/helper-plugin-utils": "^7.22.5" 494 | }, 495 | "engines": { 496 | "node": ">=6.9.0" 497 | }, 498 | "peerDependencies": { 499 | "@babel/core": "^7.0.0-0" 500 | } 501 | }, 502 | "node_modules/@babel/plugin-syntax-logical-assignment-operators": { 503 | "version": "7.10.4", 504 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", 505 | "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", 506 | "dev": true, 507 | "dependencies": { 508 | "@babel/helper-plugin-utils": "^7.10.4" 509 | }, 510 | "peerDependencies": { 511 | "@babel/core": "^7.0.0-0" 512 | } 513 | }, 514 | "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { 515 | "version": "7.8.3", 516 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", 517 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", 518 | "dev": true, 519 | "dependencies": { 520 | "@babel/helper-plugin-utils": "^7.8.0" 521 | }, 522 | "peerDependencies": { 523 | "@babel/core": "^7.0.0-0" 524 | } 525 | }, 526 | "node_modules/@babel/plugin-syntax-numeric-separator": { 527 | "version": "7.10.4", 528 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", 529 | "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", 530 | "dev": true, 531 | "dependencies": { 532 | "@babel/helper-plugin-utils": "^7.10.4" 533 | }, 534 | "peerDependencies": { 535 | "@babel/core": "^7.0.0-0" 536 | } 537 | }, 538 | "node_modules/@babel/plugin-syntax-object-rest-spread": { 539 | "version": "7.8.3", 540 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 541 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 542 | "dev": true, 543 | "dependencies": { 544 | "@babel/helper-plugin-utils": "^7.8.0" 545 | }, 546 | "peerDependencies": { 547 | "@babel/core": "^7.0.0-0" 548 | } 549 | }, 550 | "node_modules/@babel/plugin-syntax-optional-catch-binding": { 551 | "version": "7.8.3", 552 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", 553 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", 554 | "dev": true, 555 | "dependencies": { 556 | "@babel/helper-plugin-utils": "^7.8.0" 557 | }, 558 | "peerDependencies": { 559 | "@babel/core": "^7.0.0-0" 560 | } 561 | }, 562 | "node_modules/@babel/plugin-syntax-optional-chaining": { 563 | "version": "7.8.3", 564 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", 565 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", 566 | "dev": true, 567 | "dependencies": { 568 | "@babel/helper-plugin-utils": "^7.8.0" 569 | }, 570 | "peerDependencies": { 571 | "@babel/core": "^7.0.0-0" 572 | } 573 | }, 574 | "node_modules/@babel/plugin-syntax-top-level-await": { 575 | "version": "7.14.5", 576 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", 577 | "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", 578 | "dev": true, 579 | "dependencies": { 580 | "@babel/helper-plugin-utils": "^7.14.5" 581 | }, 582 | "engines": { 583 | "node": ">=6.9.0" 584 | }, 585 | "peerDependencies": { 586 | "@babel/core": "^7.0.0-0" 587 | } 588 | }, 589 | "node_modules/@babel/plugin-syntax-typescript": { 590 | "version": "7.22.5", 591 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", 592 | "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", 593 | "dev": true, 594 | "dependencies": { 595 | "@babel/helper-plugin-utils": "^7.22.5" 596 | }, 597 | "engines": { 598 | "node": ">=6.9.0" 599 | }, 600 | "peerDependencies": { 601 | "@babel/core": "^7.0.0-0" 602 | } 603 | }, 604 | "node_modules/@babel/template": { 605 | "version": "7.22.15", 606 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", 607 | "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", 608 | "dev": true, 609 | "dependencies": { 610 | "@babel/code-frame": "^7.22.13", 611 | "@babel/parser": "^7.22.15", 612 | "@babel/types": "^7.22.15" 613 | }, 614 | "engines": { 615 | "node": ">=6.9.0" 616 | } 617 | }, 618 | "node_modules/@babel/traverse": { 619 | "version": "7.23.0", 620 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", 621 | "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", 622 | "dev": true, 623 | "dependencies": { 624 | "@babel/code-frame": "^7.22.13", 625 | "@babel/generator": "^7.23.0", 626 | "@babel/helper-environment-visitor": "^7.22.20", 627 | "@babel/helper-function-name": "^7.23.0", 628 | "@babel/helper-hoist-variables": "^7.22.5", 629 | "@babel/helper-split-export-declaration": "^7.22.6", 630 | "@babel/parser": "^7.23.0", 631 | "@babel/types": "^7.23.0", 632 | "debug": "^4.1.0", 633 | "globals": "^11.1.0" 634 | }, 635 | "engines": { 636 | "node": ">=6.9.0" 637 | } 638 | }, 639 | "node_modules/@babel/types": { 640 | "version": "7.23.0", 641 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", 642 | "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", 643 | "dev": true, 644 | "dependencies": { 645 | "@babel/helper-string-parser": "^7.22.5", 646 | "@babel/helper-validator-identifier": "^7.22.20", 647 | "to-fast-properties": "^2.0.0" 648 | }, 649 | "engines": { 650 | "node": ">=6.9.0" 651 | } 652 | }, 653 | "node_modules/@bcoe/v8-coverage": { 654 | "version": "0.2.3", 655 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 656 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 657 | "dev": true 658 | }, 659 | "node_modules/@istanbuljs/load-nyc-config": { 660 | "version": "1.1.0", 661 | "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", 662 | "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", 663 | "dev": true, 664 | "dependencies": { 665 | "camelcase": "^5.3.1", 666 | "find-up": "^4.1.0", 667 | "get-package-type": "^0.1.0", 668 | "js-yaml": "^3.13.1", 669 | "resolve-from": "^5.0.0" 670 | }, 671 | "engines": { 672 | "node": ">=8" 673 | } 674 | }, 675 | "node_modules/@istanbuljs/schema": { 676 | "version": "0.1.3", 677 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 678 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 679 | "dev": true, 680 | "engines": { 681 | "node": ">=8" 682 | } 683 | }, 684 | "node_modules/@jest/console": { 685 | "version": "29.7.0", 686 | "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", 687 | "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", 688 | "dev": true, 689 | "dependencies": { 690 | "@jest/types": "^29.6.3", 691 | "@types/node": "*", 692 | "chalk": "^4.0.0", 693 | "jest-message-util": "^29.7.0", 694 | "jest-util": "^29.7.0", 695 | "slash": "^3.0.0" 696 | }, 697 | "engines": { 698 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 699 | } 700 | }, 701 | "node_modules/@jest/core": { 702 | "version": "29.7.0", 703 | "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", 704 | "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", 705 | "dev": true, 706 | "dependencies": { 707 | "@jest/console": "^29.7.0", 708 | "@jest/reporters": "^29.7.0", 709 | "@jest/test-result": "^29.7.0", 710 | "@jest/transform": "^29.7.0", 711 | "@jest/types": "^29.6.3", 712 | "@types/node": "*", 713 | "ansi-escapes": "^4.2.1", 714 | "chalk": "^4.0.0", 715 | "ci-info": "^3.2.0", 716 | "exit": "^0.1.2", 717 | "graceful-fs": "^4.2.9", 718 | "jest-changed-files": "^29.7.0", 719 | "jest-config": "^29.7.0", 720 | "jest-haste-map": "^29.7.0", 721 | "jest-message-util": "^29.7.0", 722 | "jest-regex-util": "^29.6.3", 723 | "jest-resolve": "^29.7.0", 724 | "jest-resolve-dependencies": "^29.7.0", 725 | "jest-runner": "^29.7.0", 726 | "jest-runtime": "^29.7.0", 727 | "jest-snapshot": "^29.7.0", 728 | "jest-util": "^29.7.0", 729 | "jest-validate": "^29.7.0", 730 | "jest-watcher": "^29.7.0", 731 | "micromatch": "^4.0.4", 732 | "pretty-format": "^29.7.0", 733 | "slash": "^3.0.0", 734 | "strip-ansi": "^6.0.0" 735 | }, 736 | "engines": { 737 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 738 | }, 739 | "peerDependencies": { 740 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 741 | }, 742 | "peerDependenciesMeta": { 743 | "node-notifier": { 744 | "optional": true 745 | } 746 | } 747 | }, 748 | "node_modules/@jest/environment": { 749 | "version": "29.7.0", 750 | "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", 751 | "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", 752 | "dev": true, 753 | "dependencies": { 754 | "@jest/fake-timers": "^29.7.0", 755 | "@jest/types": "^29.6.3", 756 | "@types/node": "*", 757 | "jest-mock": "^29.7.0" 758 | }, 759 | "engines": { 760 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 761 | } 762 | }, 763 | "node_modules/@jest/expect": { 764 | "version": "29.7.0", 765 | "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", 766 | "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", 767 | "dev": true, 768 | "dependencies": { 769 | "expect": "^29.7.0", 770 | "jest-snapshot": "^29.7.0" 771 | }, 772 | "engines": { 773 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 774 | } 775 | }, 776 | "node_modules/@jest/expect-utils": { 777 | "version": "29.7.0", 778 | "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", 779 | "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", 780 | "dev": true, 781 | "dependencies": { 782 | "jest-get-type": "^29.6.3" 783 | }, 784 | "engines": { 785 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 786 | } 787 | }, 788 | "node_modules/@jest/fake-timers": { 789 | "version": "29.7.0", 790 | "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", 791 | "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", 792 | "dev": true, 793 | "dependencies": { 794 | "@jest/types": "^29.6.3", 795 | "@sinonjs/fake-timers": "^10.0.2", 796 | "@types/node": "*", 797 | "jest-message-util": "^29.7.0", 798 | "jest-mock": "^29.7.0", 799 | "jest-util": "^29.7.0" 800 | }, 801 | "engines": { 802 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 803 | } 804 | }, 805 | "node_modules/@jest/globals": { 806 | "version": "29.7.0", 807 | "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", 808 | "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", 809 | "dev": true, 810 | "dependencies": { 811 | "@jest/environment": "^29.7.0", 812 | "@jest/expect": "^29.7.0", 813 | "@jest/types": "^29.6.3", 814 | "jest-mock": "^29.7.0" 815 | }, 816 | "engines": { 817 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 818 | } 819 | }, 820 | "node_modules/@jest/reporters": { 821 | "version": "29.7.0", 822 | "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", 823 | "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", 824 | "dev": true, 825 | "dependencies": { 826 | "@bcoe/v8-coverage": "^0.2.3", 827 | "@jest/console": "^29.7.0", 828 | "@jest/test-result": "^29.7.0", 829 | "@jest/transform": "^29.7.0", 830 | "@jest/types": "^29.6.3", 831 | "@jridgewell/trace-mapping": "^0.3.18", 832 | "@types/node": "*", 833 | "chalk": "^4.0.0", 834 | "collect-v8-coverage": "^1.0.0", 835 | "exit": "^0.1.2", 836 | "glob": "^7.1.3", 837 | "graceful-fs": "^4.2.9", 838 | "istanbul-lib-coverage": "^3.0.0", 839 | "istanbul-lib-instrument": "^6.0.0", 840 | "istanbul-lib-report": "^3.0.0", 841 | "istanbul-lib-source-maps": "^4.0.0", 842 | "istanbul-reports": "^3.1.3", 843 | "jest-message-util": "^29.7.0", 844 | "jest-util": "^29.7.0", 845 | "jest-worker": "^29.7.0", 846 | "slash": "^3.0.0", 847 | "string-length": "^4.0.1", 848 | "strip-ansi": "^6.0.0", 849 | "v8-to-istanbul": "^9.0.1" 850 | }, 851 | "engines": { 852 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 853 | }, 854 | "peerDependencies": { 855 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 856 | }, 857 | "peerDependenciesMeta": { 858 | "node-notifier": { 859 | "optional": true 860 | } 861 | } 862 | }, 863 | "node_modules/@jest/schemas": { 864 | "version": "29.6.3", 865 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", 866 | "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", 867 | "dev": true, 868 | "dependencies": { 869 | "@sinclair/typebox": "^0.27.8" 870 | }, 871 | "engines": { 872 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 873 | } 874 | }, 875 | "node_modules/@jest/source-map": { 876 | "version": "29.6.3", 877 | "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", 878 | "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", 879 | "dev": true, 880 | "dependencies": { 881 | "@jridgewell/trace-mapping": "^0.3.18", 882 | "callsites": "^3.0.0", 883 | "graceful-fs": "^4.2.9" 884 | }, 885 | "engines": { 886 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 887 | } 888 | }, 889 | "node_modules/@jest/test-result": { 890 | "version": "29.7.0", 891 | "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", 892 | "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", 893 | "dev": true, 894 | "dependencies": { 895 | "@jest/console": "^29.7.0", 896 | "@jest/types": "^29.6.3", 897 | "@types/istanbul-lib-coverage": "^2.0.0", 898 | "collect-v8-coverage": "^1.0.0" 899 | }, 900 | "engines": { 901 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 902 | } 903 | }, 904 | "node_modules/@jest/test-sequencer": { 905 | "version": "29.7.0", 906 | "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", 907 | "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", 908 | "dev": true, 909 | "dependencies": { 910 | "@jest/test-result": "^29.7.0", 911 | "graceful-fs": "^4.2.9", 912 | "jest-haste-map": "^29.7.0", 913 | "slash": "^3.0.0" 914 | }, 915 | "engines": { 916 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 917 | } 918 | }, 919 | "node_modules/@jest/transform": { 920 | "version": "29.7.0", 921 | "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", 922 | "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", 923 | "dev": true, 924 | "dependencies": { 925 | "@babel/core": "^7.11.6", 926 | "@jest/types": "^29.6.3", 927 | "@jridgewell/trace-mapping": "^0.3.18", 928 | "babel-plugin-istanbul": "^6.1.1", 929 | "chalk": "^4.0.0", 930 | "convert-source-map": "^2.0.0", 931 | "fast-json-stable-stringify": "^2.1.0", 932 | "graceful-fs": "^4.2.9", 933 | "jest-haste-map": "^29.7.0", 934 | "jest-regex-util": "^29.6.3", 935 | "jest-util": "^29.7.0", 936 | "micromatch": "^4.0.4", 937 | "pirates": "^4.0.4", 938 | "slash": "^3.0.0", 939 | "write-file-atomic": "^4.0.2" 940 | }, 941 | "engines": { 942 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 943 | } 944 | }, 945 | "node_modules/@jest/types": { 946 | "version": "29.6.3", 947 | "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", 948 | "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", 949 | "dev": true, 950 | "dependencies": { 951 | "@jest/schemas": "^29.6.3", 952 | "@types/istanbul-lib-coverage": "^2.0.0", 953 | "@types/istanbul-reports": "^3.0.0", 954 | "@types/node": "*", 955 | "@types/yargs": "^17.0.8", 956 | "chalk": "^4.0.0" 957 | }, 958 | "engines": { 959 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 960 | } 961 | }, 962 | "node_modules/@jridgewell/gen-mapping": { 963 | "version": "0.3.3", 964 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 965 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 966 | "dev": true, 967 | "dependencies": { 968 | "@jridgewell/set-array": "^1.0.1", 969 | "@jridgewell/sourcemap-codec": "^1.4.10", 970 | "@jridgewell/trace-mapping": "^0.3.9" 971 | }, 972 | "engines": { 973 | "node": ">=6.0.0" 974 | } 975 | }, 976 | "node_modules/@jridgewell/resolve-uri": { 977 | "version": "3.1.1", 978 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 979 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 980 | "dev": true, 981 | "engines": { 982 | "node": ">=6.0.0" 983 | } 984 | }, 985 | "node_modules/@jridgewell/set-array": { 986 | "version": "1.1.2", 987 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 988 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 989 | "dev": true, 990 | "engines": { 991 | "node": ">=6.0.0" 992 | } 993 | }, 994 | "node_modules/@jridgewell/sourcemap-codec": { 995 | "version": "1.4.15", 996 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 997 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 998 | "dev": true 999 | }, 1000 | "node_modules/@jridgewell/trace-mapping": { 1001 | "version": "0.3.19", 1002 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", 1003 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", 1004 | "dev": true, 1005 | "dependencies": { 1006 | "@jridgewell/resolve-uri": "^3.1.0", 1007 | "@jridgewell/sourcemap-codec": "^1.4.14" 1008 | } 1009 | }, 1010 | "node_modules/@sinclair/typebox": { 1011 | "version": "0.27.8", 1012 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", 1013 | "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", 1014 | "dev": true 1015 | }, 1016 | "node_modules/@sinonjs/commons": { 1017 | "version": "3.0.0", 1018 | "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", 1019 | "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", 1020 | "dev": true, 1021 | "dependencies": { 1022 | "type-detect": "4.0.8" 1023 | } 1024 | }, 1025 | "node_modules/@sinonjs/fake-timers": { 1026 | "version": "10.3.0", 1027 | "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", 1028 | "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", 1029 | "dev": true, 1030 | "dependencies": { 1031 | "@sinonjs/commons": "^3.0.0" 1032 | } 1033 | }, 1034 | "node_modules/@types/babel__core": { 1035 | "version": "7.20.2", 1036 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", 1037 | "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", 1038 | "dev": true, 1039 | "dependencies": { 1040 | "@babel/parser": "^7.20.7", 1041 | "@babel/types": "^7.20.7", 1042 | "@types/babel__generator": "*", 1043 | "@types/babel__template": "*", 1044 | "@types/babel__traverse": "*" 1045 | } 1046 | }, 1047 | "node_modules/@types/babel__generator": { 1048 | "version": "7.6.5", 1049 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", 1050 | "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", 1051 | "dev": true, 1052 | "dependencies": { 1053 | "@babel/types": "^7.0.0" 1054 | } 1055 | }, 1056 | "node_modules/@types/babel__template": { 1057 | "version": "7.4.2", 1058 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", 1059 | "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", 1060 | "dev": true, 1061 | "dependencies": { 1062 | "@babel/parser": "^7.1.0", 1063 | "@babel/types": "^7.0.0" 1064 | } 1065 | }, 1066 | "node_modules/@types/babel__traverse": { 1067 | "version": "7.20.2", 1068 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", 1069 | "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", 1070 | "dev": true, 1071 | "dependencies": { 1072 | "@babel/types": "^7.20.7" 1073 | } 1074 | }, 1075 | "node_modules/@types/graceful-fs": { 1076 | "version": "4.1.7", 1077 | "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", 1078 | "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", 1079 | "dev": true, 1080 | "dependencies": { 1081 | "@types/node": "*" 1082 | } 1083 | }, 1084 | "node_modules/@types/istanbul-lib-coverage": { 1085 | "version": "2.0.4", 1086 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 1087 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", 1088 | "dev": true 1089 | }, 1090 | "node_modules/@types/istanbul-lib-report": { 1091 | "version": "3.0.1", 1092 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 1093 | "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", 1094 | "dev": true, 1095 | "dependencies": { 1096 | "@types/istanbul-lib-coverage": "*" 1097 | } 1098 | }, 1099 | "node_modules/@types/istanbul-reports": { 1100 | "version": "3.0.2", 1101 | "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", 1102 | "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", 1103 | "dev": true, 1104 | "dependencies": { 1105 | "@types/istanbul-lib-report": "*" 1106 | } 1107 | }, 1108 | "node_modules/@types/jest": { 1109 | "version": "24.9.1", 1110 | "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", 1111 | "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", 1112 | "dev": true, 1113 | "dependencies": { 1114 | "jest-diff": "^24.3.0" 1115 | } 1116 | }, 1117 | "node_modules/@types/node": { 1118 | "version": "12.20.55", 1119 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", 1120 | "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", 1121 | "dev": true 1122 | }, 1123 | "node_modules/@types/stack-utils": { 1124 | "version": "2.0.1", 1125 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", 1126 | "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", 1127 | "dev": true 1128 | }, 1129 | "node_modules/@types/yargs": { 1130 | "version": "17.0.25", 1131 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.25.tgz", 1132 | "integrity": "sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==", 1133 | "dev": true, 1134 | "dependencies": { 1135 | "@types/yargs-parser": "*" 1136 | } 1137 | }, 1138 | "node_modules/@types/yargs-parser": { 1139 | "version": "21.0.1", 1140 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", 1141 | "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", 1142 | "dev": true 1143 | }, 1144 | "node_modules/ajv": { 1145 | "version": "6.12.6", 1146 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1147 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1148 | "dev": true, 1149 | "dependencies": { 1150 | "fast-deep-equal": "^3.1.1", 1151 | "fast-json-stable-stringify": "^2.0.0", 1152 | "json-schema-traverse": "^0.4.1", 1153 | "uri-js": "^4.2.2" 1154 | }, 1155 | "funding": { 1156 | "type": "github", 1157 | "url": "https://github.com/sponsors/epoberezkin" 1158 | } 1159 | }, 1160 | "node_modules/ansi-escapes": { 1161 | "version": "4.3.2", 1162 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 1163 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 1164 | "dev": true, 1165 | "dependencies": { 1166 | "type-fest": "^0.21.3" 1167 | }, 1168 | "engines": { 1169 | "node": ">=8" 1170 | }, 1171 | "funding": { 1172 | "url": "https://github.com/sponsors/sindresorhus" 1173 | } 1174 | }, 1175 | "node_modules/ansi-regex": { 1176 | "version": "5.0.1", 1177 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1178 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1179 | "dev": true, 1180 | "engines": { 1181 | "node": ">=8" 1182 | } 1183 | }, 1184 | "node_modules/ansi-styles": { 1185 | "version": "4.3.0", 1186 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1187 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1188 | "dev": true, 1189 | "dependencies": { 1190 | "color-convert": "^2.0.1" 1191 | }, 1192 | "engines": { 1193 | "node": ">=8" 1194 | }, 1195 | "funding": { 1196 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1197 | } 1198 | }, 1199 | "node_modules/anymatch": { 1200 | "version": "3.1.3", 1201 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1202 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1203 | "dev": true, 1204 | "dependencies": { 1205 | "normalize-path": "^3.0.0", 1206 | "picomatch": "^2.0.4" 1207 | }, 1208 | "engines": { 1209 | "node": ">= 8" 1210 | } 1211 | }, 1212 | "node_modules/argparse": { 1213 | "version": "1.0.10", 1214 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1215 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1216 | "dev": true, 1217 | "dependencies": { 1218 | "sprintf-js": "~1.0.2" 1219 | } 1220 | }, 1221 | "node_modules/asn1": { 1222 | "version": "0.2.6", 1223 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 1224 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 1225 | "dev": true, 1226 | "dependencies": { 1227 | "safer-buffer": "~2.1.0" 1228 | } 1229 | }, 1230 | "node_modules/assert-plus": { 1231 | "version": "1.0.0", 1232 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1233 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 1234 | "dev": true, 1235 | "engines": { 1236 | "node": ">=0.8" 1237 | } 1238 | }, 1239 | "node_modules/asynckit": { 1240 | "version": "0.4.0", 1241 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1242 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 1243 | }, 1244 | "node_modules/aws-sign2": { 1245 | "version": "0.7.0", 1246 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 1247 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 1248 | "dev": true, 1249 | "engines": { 1250 | "node": "*" 1251 | } 1252 | }, 1253 | "node_modules/aws4": { 1254 | "version": "1.12.0", 1255 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", 1256 | "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", 1257 | "dev": true 1258 | }, 1259 | "node_modules/axios": { 1260 | "version": "1.5.1", 1261 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", 1262 | "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", 1263 | "dependencies": { 1264 | "follow-redirects": "^1.15.0", 1265 | "form-data": "^4.0.0", 1266 | "proxy-from-env": "^1.1.0" 1267 | } 1268 | }, 1269 | "node_modules/axios/node_modules/form-data": { 1270 | "version": "4.0.0", 1271 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1272 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1273 | "dependencies": { 1274 | "asynckit": "^0.4.0", 1275 | "combined-stream": "^1.0.8", 1276 | "mime-types": "^2.1.12" 1277 | }, 1278 | "engines": { 1279 | "node": ">= 6" 1280 | } 1281 | }, 1282 | "node_modules/babel-jest": { 1283 | "version": "29.7.0", 1284 | "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", 1285 | "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", 1286 | "dev": true, 1287 | "dependencies": { 1288 | "@jest/transform": "^29.7.0", 1289 | "@types/babel__core": "^7.1.14", 1290 | "babel-plugin-istanbul": "^6.1.1", 1291 | "babel-preset-jest": "^29.6.3", 1292 | "chalk": "^4.0.0", 1293 | "graceful-fs": "^4.2.9", 1294 | "slash": "^3.0.0" 1295 | }, 1296 | "engines": { 1297 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1298 | }, 1299 | "peerDependencies": { 1300 | "@babel/core": "^7.8.0" 1301 | } 1302 | }, 1303 | "node_modules/babel-plugin-istanbul": { 1304 | "version": "6.1.1", 1305 | "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", 1306 | "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", 1307 | "dev": true, 1308 | "dependencies": { 1309 | "@babel/helper-plugin-utils": "^7.0.0", 1310 | "@istanbuljs/load-nyc-config": "^1.0.0", 1311 | "@istanbuljs/schema": "^0.1.2", 1312 | "istanbul-lib-instrument": "^5.0.4", 1313 | "test-exclude": "^6.0.0" 1314 | }, 1315 | "engines": { 1316 | "node": ">=8" 1317 | } 1318 | }, 1319 | "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { 1320 | "version": "5.2.1", 1321 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", 1322 | "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", 1323 | "dev": true, 1324 | "dependencies": { 1325 | "@babel/core": "^7.12.3", 1326 | "@babel/parser": "^7.14.7", 1327 | "@istanbuljs/schema": "^0.1.2", 1328 | "istanbul-lib-coverage": "^3.2.0", 1329 | "semver": "^6.3.0" 1330 | }, 1331 | "engines": { 1332 | "node": ">=8" 1333 | } 1334 | }, 1335 | "node_modules/babel-plugin-jest-hoist": { 1336 | "version": "29.6.3", 1337 | "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", 1338 | "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", 1339 | "dev": true, 1340 | "dependencies": { 1341 | "@babel/template": "^7.3.3", 1342 | "@babel/types": "^7.3.3", 1343 | "@types/babel__core": "^7.1.14", 1344 | "@types/babel__traverse": "^7.0.6" 1345 | }, 1346 | "engines": { 1347 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1348 | } 1349 | }, 1350 | "node_modules/babel-preset-current-node-syntax": { 1351 | "version": "1.0.1", 1352 | "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", 1353 | "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", 1354 | "dev": true, 1355 | "dependencies": { 1356 | "@babel/plugin-syntax-async-generators": "^7.8.4", 1357 | "@babel/plugin-syntax-bigint": "^7.8.3", 1358 | "@babel/plugin-syntax-class-properties": "^7.8.3", 1359 | "@babel/plugin-syntax-import-meta": "^7.8.3", 1360 | "@babel/plugin-syntax-json-strings": "^7.8.3", 1361 | "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", 1362 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", 1363 | "@babel/plugin-syntax-numeric-separator": "^7.8.3", 1364 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3", 1365 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", 1366 | "@babel/plugin-syntax-optional-chaining": "^7.8.3", 1367 | "@babel/plugin-syntax-top-level-await": "^7.8.3" 1368 | }, 1369 | "peerDependencies": { 1370 | "@babel/core": "^7.0.0" 1371 | } 1372 | }, 1373 | "node_modules/babel-preset-jest": { 1374 | "version": "29.6.3", 1375 | "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", 1376 | "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", 1377 | "dev": true, 1378 | "dependencies": { 1379 | "babel-plugin-jest-hoist": "^29.6.3", 1380 | "babel-preset-current-node-syntax": "^1.0.0" 1381 | }, 1382 | "engines": { 1383 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1384 | }, 1385 | "peerDependencies": { 1386 | "@babel/core": "^7.0.0" 1387 | } 1388 | }, 1389 | "node_modules/balanced-match": { 1390 | "version": "1.0.2", 1391 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1392 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1393 | "dev": true 1394 | }, 1395 | "node_modules/bcrypt-pbkdf": { 1396 | "version": "1.0.2", 1397 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 1398 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 1399 | "dev": true, 1400 | "dependencies": { 1401 | "tweetnacl": "^0.14.3" 1402 | } 1403 | }, 1404 | "node_modules/brace-expansion": { 1405 | "version": "1.1.11", 1406 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1407 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1408 | "dev": true, 1409 | "dependencies": { 1410 | "balanced-match": "^1.0.0", 1411 | "concat-map": "0.0.1" 1412 | } 1413 | }, 1414 | "node_modules/braces": { 1415 | "version": "3.0.2", 1416 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1417 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1418 | "dev": true, 1419 | "dependencies": { 1420 | "fill-range": "^7.0.1" 1421 | }, 1422 | "engines": { 1423 | "node": ">=8" 1424 | } 1425 | }, 1426 | "node_modules/browserslist": { 1427 | "version": "4.22.0", 1428 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.0.tgz", 1429 | "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", 1430 | "dev": true, 1431 | "funding": [ 1432 | { 1433 | "type": "opencollective", 1434 | "url": "https://opencollective.com/browserslist" 1435 | }, 1436 | { 1437 | "type": "tidelift", 1438 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1439 | }, 1440 | { 1441 | "type": "github", 1442 | "url": "https://github.com/sponsors/ai" 1443 | } 1444 | ], 1445 | "dependencies": { 1446 | "caniuse-lite": "^1.0.30001539", 1447 | "electron-to-chromium": "^1.4.530", 1448 | "node-releases": "^2.0.13", 1449 | "update-browserslist-db": "^1.0.13" 1450 | }, 1451 | "bin": { 1452 | "browserslist": "cli.js" 1453 | }, 1454 | "engines": { 1455 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1456 | } 1457 | }, 1458 | "node_modules/bs-logger": { 1459 | "version": "0.2.6", 1460 | "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", 1461 | "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", 1462 | "dev": true, 1463 | "dependencies": { 1464 | "fast-json-stable-stringify": "2.x" 1465 | }, 1466 | "engines": { 1467 | "node": ">= 6" 1468 | } 1469 | }, 1470 | "node_modules/bser": { 1471 | "version": "2.1.1", 1472 | "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", 1473 | "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", 1474 | "dev": true, 1475 | "dependencies": { 1476 | "node-int64": "^0.4.0" 1477 | } 1478 | }, 1479 | "node_modules/buffer-from": { 1480 | "version": "1.1.2", 1481 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1482 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1483 | "dev": true 1484 | }, 1485 | "node_modules/callsites": { 1486 | "version": "3.1.0", 1487 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1488 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1489 | "dev": true, 1490 | "engines": { 1491 | "node": ">=6" 1492 | } 1493 | }, 1494 | "node_modules/camelcase": { 1495 | "version": "5.3.1", 1496 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 1497 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 1498 | "dev": true, 1499 | "engines": { 1500 | "node": ">=6" 1501 | } 1502 | }, 1503 | "node_modules/caniuse-lite": { 1504 | "version": "1.0.30001540", 1505 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz", 1506 | "integrity": "sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw==", 1507 | "dev": true, 1508 | "funding": [ 1509 | { 1510 | "type": "opencollective", 1511 | "url": "https://opencollective.com/browserslist" 1512 | }, 1513 | { 1514 | "type": "tidelift", 1515 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1516 | }, 1517 | { 1518 | "type": "github", 1519 | "url": "https://github.com/sponsors/ai" 1520 | } 1521 | ] 1522 | }, 1523 | "node_modules/caseless": { 1524 | "version": "0.12.0", 1525 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 1526 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", 1527 | "dev": true 1528 | }, 1529 | "node_modules/chalk": { 1530 | "version": "4.1.2", 1531 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1532 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1533 | "dev": true, 1534 | "dependencies": { 1535 | "ansi-styles": "^4.1.0", 1536 | "supports-color": "^7.1.0" 1537 | }, 1538 | "engines": { 1539 | "node": ">=10" 1540 | }, 1541 | "funding": { 1542 | "url": "https://github.com/chalk/chalk?sponsor=1" 1543 | } 1544 | }, 1545 | "node_modules/char-regex": { 1546 | "version": "1.0.2", 1547 | "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", 1548 | "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", 1549 | "dev": true, 1550 | "engines": { 1551 | "node": ">=10" 1552 | } 1553 | }, 1554 | "node_modules/ci-info": { 1555 | "version": "3.8.0", 1556 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", 1557 | "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", 1558 | "dev": true, 1559 | "funding": [ 1560 | { 1561 | "type": "github", 1562 | "url": "https://github.com/sponsors/sibiraj-s" 1563 | } 1564 | ], 1565 | "engines": { 1566 | "node": ">=8" 1567 | } 1568 | }, 1569 | "node_modules/cjs-module-lexer": { 1570 | "version": "1.2.3", 1571 | "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", 1572 | "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", 1573 | "dev": true 1574 | }, 1575 | "node_modules/cliui": { 1576 | "version": "8.0.1", 1577 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1578 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1579 | "dev": true, 1580 | "dependencies": { 1581 | "string-width": "^4.2.0", 1582 | "strip-ansi": "^6.0.1", 1583 | "wrap-ansi": "^7.0.0" 1584 | }, 1585 | "engines": { 1586 | "node": ">=12" 1587 | } 1588 | }, 1589 | "node_modules/co": { 1590 | "version": "4.6.0", 1591 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 1592 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", 1593 | "dev": true, 1594 | "engines": { 1595 | "iojs": ">= 1.0.0", 1596 | "node": ">= 0.12.0" 1597 | } 1598 | }, 1599 | "node_modules/collect-v8-coverage": { 1600 | "version": "1.0.2", 1601 | "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", 1602 | "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", 1603 | "dev": true 1604 | }, 1605 | "node_modules/color-convert": { 1606 | "version": "2.0.1", 1607 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1608 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1609 | "dev": true, 1610 | "dependencies": { 1611 | "color-name": "~1.1.4" 1612 | }, 1613 | "engines": { 1614 | "node": ">=7.0.0" 1615 | } 1616 | }, 1617 | "node_modules/color-name": { 1618 | "version": "1.1.4", 1619 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1620 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1621 | "dev": true 1622 | }, 1623 | "node_modules/combined-stream": { 1624 | "version": "1.0.8", 1625 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1626 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1627 | "dependencies": { 1628 | "delayed-stream": "~1.0.0" 1629 | }, 1630 | "engines": { 1631 | "node": ">= 0.8" 1632 | } 1633 | }, 1634 | "node_modules/concat-map": { 1635 | "version": "0.0.1", 1636 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1637 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1638 | "dev": true 1639 | }, 1640 | "node_modules/convert-source-map": { 1641 | "version": "2.0.0", 1642 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1643 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1644 | "dev": true 1645 | }, 1646 | "node_modules/core-util-is": { 1647 | "version": "1.0.2", 1648 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1649 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 1650 | "dev": true 1651 | }, 1652 | "node_modules/coveralls": { 1653 | "version": "3.1.1", 1654 | "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", 1655 | "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", 1656 | "dev": true, 1657 | "dependencies": { 1658 | "js-yaml": "^3.13.1", 1659 | "lcov-parse": "^1.0.0", 1660 | "log-driver": "^1.2.7", 1661 | "minimist": "^1.2.5", 1662 | "request": "^2.88.2" 1663 | }, 1664 | "bin": { 1665 | "coveralls": "bin/coveralls.js" 1666 | }, 1667 | "engines": { 1668 | "node": ">=6" 1669 | } 1670 | }, 1671 | "node_modules/create-jest": { 1672 | "version": "29.7.0", 1673 | "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", 1674 | "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", 1675 | "dev": true, 1676 | "dependencies": { 1677 | "@jest/types": "^29.6.3", 1678 | "chalk": "^4.0.0", 1679 | "exit": "^0.1.2", 1680 | "graceful-fs": "^4.2.9", 1681 | "jest-config": "^29.7.0", 1682 | "jest-util": "^29.7.0", 1683 | "prompts": "^2.0.1" 1684 | }, 1685 | "bin": { 1686 | "create-jest": "bin/create-jest.js" 1687 | }, 1688 | "engines": { 1689 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1690 | } 1691 | }, 1692 | "node_modules/cross-spawn": { 1693 | "version": "7.0.3", 1694 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1695 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1696 | "dev": true, 1697 | "dependencies": { 1698 | "path-key": "^3.1.0", 1699 | "shebang-command": "^2.0.0", 1700 | "which": "^2.0.1" 1701 | }, 1702 | "engines": { 1703 | "node": ">= 8" 1704 | } 1705 | }, 1706 | "node_modules/dashdash": { 1707 | "version": "1.14.1", 1708 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 1709 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 1710 | "dev": true, 1711 | "dependencies": { 1712 | "assert-plus": "^1.0.0" 1713 | }, 1714 | "engines": { 1715 | "node": ">=0.10" 1716 | } 1717 | }, 1718 | "node_modules/debug": { 1719 | "version": "4.3.4", 1720 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1721 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1722 | "dev": true, 1723 | "dependencies": { 1724 | "ms": "2.1.2" 1725 | }, 1726 | "engines": { 1727 | "node": ">=6.0" 1728 | }, 1729 | "peerDependenciesMeta": { 1730 | "supports-color": { 1731 | "optional": true 1732 | } 1733 | } 1734 | }, 1735 | "node_modules/dedent": { 1736 | "version": "1.5.1", 1737 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", 1738 | "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", 1739 | "dev": true, 1740 | "peerDependencies": { 1741 | "babel-plugin-macros": "^3.1.0" 1742 | }, 1743 | "peerDependenciesMeta": { 1744 | "babel-plugin-macros": { 1745 | "optional": true 1746 | } 1747 | } 1748 | }, 1749 | "node_modules/deepmerge": { 1750 | "version": "4.3.1", 1751 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1752 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1753 | "dev": true, 1754 | "engines": { 1755 | "node": ">=0.10.0" 1756 | } 1757 | }, 1758 | "node_modules/delayed-stream": { 1759 | "version": "1.0.0", 1760 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1761 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 1762 | "engines": { 1763 | "node": ">=0.4.0" 1764 | } 1765 | }, 1766 | "node_modules/detect-newline": { 1767 | "version": "3.1.0", 1768 | "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", 1769 | "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", 1770 | "dev": true, 1771 | "engines": { 1772 | "node": ">=8" 1773 | } 1774 | }, 1775 | "node_modules/diff-sequences": { 1776 | "version": "24.9.0", 1777 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", 1778 | "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", 1779 | "dev": true, 1780 | "engines": { 1781 | "node": ">= 6" 1782 | } 1783 | }, 1784 | "node_modules/ecc-jsbn": { 1785 | "version": "0.1.2", 1786 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 1787 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 1788 | "dev": true, 1789 | "dependencies": { 1790 | "jsbn": "~0.1.0", 1791 | "safer-buffer": "^2.1.0" 1792 | } 1793 | }, 1794 | "node_modules/electron-to-chromium": { 1795 | "version": "1.4.531", 1796 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.531.tgz", 1797 | "integrity": "sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ==", 1798 | "dev": true 1799 | }, 1800 | "node_modules/emittery": { 1801 | "version": "0.13.1", 1802 | "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", 1803 | "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", 1804 | "dev": true, 1805 | "engines": { 1806 | "node": ">=12" 1807 | }, 1808 | "funding": { 1809 | "url": "https://github.com/sindresorhus/emittery?sponsor=1" 1810 | } 1811 | }, 1812 | "node_modules/emoji-regex": { 1813 | "version": "8.0.0", 1814 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1815 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1816 | "dev": true 1817 | }, 1818 | "node_modules/error-ex": { 1819 | "version": "1.3.2", 1820 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1821 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1822 | "dev": true, 1823 | "dependencies": { 1824 | "is-arrayish": "^0.2.1" 1825 | } 1826 | }, 1827 | "node_modules/escalade": { 1828 | "version": "3.1.1", 1829 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1830 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1831 | "dev": true, 1832 | "engines": { 1833 | "node": ">=6" 1834 | } 1835 | }, 1836 | "node_modules/escape-string-regexp": { 1837 | "version": "2.0.0", 1838 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 1839 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 1840 | "dev": true, 1841 | "engines": { 1842 | "node": ">=8" 1843 | } 1844 | }, 1845 | "node_modules/esprima": { 1846 | "version": "4.0.1", 1847 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1848 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1849 | "dev": true, 1850 | "bin": { 1851 | "esparse": "bin/esparse.js", 1852 | "esvalidate": "bin/esvalidate.js" 1853 | }, 1854 | "engines": { 1855 | "node": ">=4" 1856 | } 1857 | }, 1858 | "node_modules/execa": { 1859 | "version": "5.1.1", 1860 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 1861 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 1862 | "dev": true, 1863 | "dependencies": { 1864 | "cross-spawn": "^7.0.3", 1865 | "get-stream": "^6.0.0", 1866 | "human-signals": "^2.1.0", 1867 | "is-stream": "^2.0.0", 1868 | "merge-stream": "^2.0.0", 1869 | "npm-run-path": "^4.0.1", 1870 | "onetime": "^5.1.2", 1871 | "signal-exit": "^3.0.3", 1872 | "strip-final-newline": "^2.0.0" 1873 | }, 1874 | "engines": { 1875 | "node": ">=10" 1876 | }, 1877 | "funding": { 1878 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 1879 | } 1880 | }, 1881 | "node_modules/exit": { 1882 | "version": "0.1.2", 1883 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 1884 | "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", 1885 | "dev": true, 1886 | "engines": { 1887 | "node": ">= 0.8.0" 1888 | } 1889 | }, 1890 | "node_modules/expect": { 1891 | "version": "29.7.0", 1892 | "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", 1893 | "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", 1894 | "dev": true, 1895 | "dependencies": { 1896 | "@jest/expect-utils": "^29.7.0", 1897 | "jest-get-type": "^29.6.3", 1898 | "jest-matcher-utils": "^29.7.0", 1899 | "jest-message-util": "^29.7.0", 1900 | "jest-util": "^29.7.0" 1901 | }, 1902 | "engines": { 1903 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1904 | } 1905 | }, 1906 | "node_modules/extend": { 1907 | "version": "3.0.2", 1908 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1909 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1910 | "dev": true 1911 | }, 1912 | "node_modules/extsprintf": { 1913 | "version": "1.3.0", 1914 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 1915 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 1916 | "dev": true, 1917 | "engines": [ 1918 | "node >=0.6.0" 1919 | ] 1920 | }, 1921 | "node_modules/fast-deep-equal": { 1922 | "version": "3.1.3", 1923 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1924 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1925 | "dev": true 1926 | }, 1927 | "node_modules/fast-json-stable-stringify": { 1928 | "version": "2.1.0", 1929 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1930 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1931 | "dev": true 1932 | }, 1933 | "node_modules/fb-watchman": { 1934 | "version": "2.0.2", 1935 | "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", 1936 | "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", 1937 | "dev": true, 1938 | "dependencies": { 1939 | "bser": "2.1.1" 1940 | } 1941 | }, 1942 | "node_modules/fill-range": { 1943 | "version": "7.0.1", 1944 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1945 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1946 | "dev": true, 1947 | "dependencies": { 1948 | "to-regex-range": "^5.0.1" 1949 | }, 1950 | "engines": { 1951 | "node": ">=8" 1952 | } 1953 | }, 1954 | "node_modules/find-up": { 1955 | "version": "4.1.0", 1956 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1957 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1958 | "dev": true, 1959 | "dependencies": { 1960 | "locate-path": "^5.0.0", 1961 | "path-exists": "^4.0.0" 1962 | }, 1963 | "engines": { 1964 | "node": ">=8" 1965 | } 1966 | }, 1967 | "node_modules/follow-redirects": { 1968 | "version": "1.15.3", 1969 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", 1970 | "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", 1971 | "funding": [ 1972 | { 1973 | "type": "individual", 1974 | "url": "https://github.com/sponsors/RubenVerborgh" 1975 | } 1976 | ], 1977 | "engines": { 1978 | "node": ">=4.0" 1979 | }, 1980 | "peerDependenciesMeta": { 1981 | "debug": { 1982 | "optional": true 1983 | } 1984 | } 1985 | }, 1986 | "node_modules/forever-agent": { 1987 | "version": "0.6.1", 1988 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1989 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 1990 | "dev": true, 1991 | "engines": { 1992 | "node": "*" 1993 | } 1994 | }, 1995 | "node_modules/fs.realpath": { 1996 | "version": "1.0.0", 1997 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1998 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1999 | "dev": true 2000 | }, 2001 | "node_modules/fsevents": { 2002 | "version": "2.3.3", 2003 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2004 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2005 | "dev": true, 2006 | "hasInstallScript": true, 2007 | "optional": true, 2008 | "os": [ 2009 | "darwin" 2010 | ], 2011 | "engines": { 2012 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2013 | } 2014 | }, 2015 | "node_modules/function-bind": { 2016 | "version": "1.1.1", 2017 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2018 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2019 | "dev": true 2020 | }, 2021 | "node_modules/gensync": { 2022 | "version": "1.0.0-beta.2", 2023 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2024 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2025 | "dev": true, 2026 | "engines": { 2027 | "node": ">=6.9.0" 2028 | } 2029 | }, 2030 | "node_modules/get-caller-file": { 2031 | "version": "2.0.5", 2032 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2033 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2034 | "dev": true, 2035 | "engines": { 2036 | "node": "6.* || 8.* || >= 10.*" 2037 | } 2038 | }, 2039 | "node_modules/get-package-type": { 2040 | "version": "0.1.0", 2041 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 2042 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 2043 | "dev": true, 2044 | "engines": { 2045 | "node": ">=8.0.0" 2046 | } 2047 | }, 2048 | "node_modules/get-stream": { 2049 | "version": "6.0.1", 2050 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 2051 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 2052 | "dev": true, 2053 | "engines": { 2054 | "node": ">=10" 2055 | }, 2056 | "funding": { 2057 | "url": "https://github.com/sponsors/sindresorhus" 2058 | } 2059 | }, 2060 | "node_modules/getpass": { 2061 | "version": "0.1.7", 2062 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 2063 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 2064 | "dev": true, 2065 | "dependencies": { 2066 | "assert-plus": "^1.0.0" 2067 | } 2068 | }, 2069 | "node_modules/glob": { 2070 | "version": "7.2.3", 2071 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2072 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2073 | "dev": true, 2074 | "dependencies": { 2075 | "fs.realpath": "^1.0.0", 2076 | "inflight": "^1.0.4", 2077 | "inherits": "2", 2078 | "minimatch": "^3.1.1", 2079 | "once": "^1.3.0", 2080 | "path-is-absolute": "^1.0.0" 2081 | }, 2082 | "engines": { 2083 | "node": "*" 2084 | }, 2085 | "funding": { 2086 | "url": "https://github.com/sponsors/isaacs" 2087 | } 2088 | }, 2089 | "node_modules/globals": { 2090 | "version": "11.12.0", 2091 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2092 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2093 | "dev": true, 2094 | "engines": { 2095 | "node": ">=4" 2096 | } 2097 | }, 2098 | "node_modules/graceful-fs": { 2099 | "version": "4.2.11", 2100 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 2101 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 2102 | "dev": true 2103 | }, 2104 | "node_modules/har-schema": { 2105 | "version": "2.0.0", 2106 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 2107 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 2108 | "dev": true, 2109 | "engines": { 2110 | "node": ">=4" 2111 | } 2112 | }, 2113 | "node_modules/har-validator": { 2114 | "version": "5.1.5", 2115 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 2116 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 2117 | "deprecated": "this library is no longer supported", 2118 | "dev": true, 2119 | "dependencies": { 2120 | "ajv": "^6.12.3", 2121 | "har-schema": "^2.0.0" 2122 | }, 2123 | "engines": { 2124 | "node": ">=6" 2125 | } 2126 | }, 2127 | "node_modules/has": { 2128 | "version": "1.0.3", 2129 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2130 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2131 | "dev": true, 2132 | "dependencies": { 2133 | "function-bind": "^1.1.1" 2134 | }, 2135 | "engines": { 2136 | "node": ">= 0.4.0" 2137 | } 2138 | }, 2139 | "node_modules/has-flag": { 2140 | "version": "4.0.0", 2141 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2142 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2143 | "dev": true, 2144 | "engines": { 2145 | "node": ">=8" 2146 | } 2147 | }, 2148 | "node_modules/html-escaper": { 2149 | "version": "2.0.2", 2150 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2151 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2152 | "dev": true 2153 | }, 2154 | "node_modules/http-jsonrpc-server": { 2155 | "version": "1.1.2", 2156 | "resolved": "https://registry.npmjs.org/http-jsonrpc-server/-/http-jsonrpc-server-1.1.2.tgz", 2157 | "integrity": "sha512-ZL8G+C+SS/5KAPb4t2erKeu6zlbMc1UaTEv7DhYFuPaLy9Ejam5x0OftUS6UFBSbLCX9a4mmmraN8k+TdOMHBw==", 2158 | "dev": true, 2159 | "engines": { 2160 | "node": ">=6.0.0" 2161 | } 2162 | }, 2163 | "node_modules/http-signature": { 2164 | "version": "1.2.0", 2165 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 2166 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 2167 | "dev": true, 2168 | "dependencies": { 2169 | "assert-plus": "^1.0.0", 2170 | "jsprim": "^1.2.2", 2171 | "sshpk": "^1.7.0" 2172 | }, 2173 | "engines": { 2174 | "node": ">=0.8", 2175 | "npm": ">=1.3.7" 2176 | } 2177 | }, 2178 | "node_modules/human-signals": { 2179 | "version": "2.1.0", 2180 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 2181 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 2182 | "dev": true, 2183 | "engines": { 2184 | "node": ">=10.17.0" 2185 | } 2186 | }, 2187 | "node_modules/import-local": { 2188 | "version": "3.1.0", 2189 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", 2190 | "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", 2191 | "dev": true, 2192 | "dependencies": { 2193 | "pkg-dir": "^4.2.0", 2194 | "resolve-cwd": "^3.0.0" 2195 | }, 2196 | "bin": { 2197 | "import-local-fixture": "fixtures/cli.js" 2198 | }, 2199 | "engines": { 2200 | "node": ">=8" 2201 | }, 2202 | "funding": { 2203 | "url": "https://github.com/sponsors/sindresorhus" 2204 | } 2205 | }, 2206 | "node_modules/imurmurhash": { 2207 | "version": "0.1.4", 2208 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2209 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2210 | "dev": true, 2211 | "engines": { 2212 | "node": ">=0.8.19" 2213 | } 2214 | }, 2215 | "node_modules/inflight": { 2216 | "version": "1.0.6", 2217 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2218 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 2219 | "dev": true, 2220 | "dependencies": { 2221 | "once": "^1.3.0", 2222 | "wrappy": "1" 2223 | } 2224 | }, 2225 | "node_modules/inherits": { 2226 | "version": "2.0.4", 2227 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2228 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2229 | "dev": true 2230 | }, 2231 | "node_modules/is-arrayish": { 2232 | "version": "0.2.1", 2233 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2234 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 2235 | "dev": true 2236 | }, 2237 | "node_modules/is-core-module": { 2238 | "version": "2.13.0", 2239 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", 2240 | "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", 2241 | "dev": true, 2242 | "dependencies": { 2243 | "has": "^1.0.3" 2244 | }, 2245 | "funding": { 2246 | "url": "https://github.com/sponsors/ljharb" 2247 | } 2248 | }, 2249 | "node_modules/is-fullwidth-code-point": { 2250 | "version": "3.0.0", 2251 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2252 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2253 | "dev": true, 2254 | "engines": { 2255 | "node": ">=8" 2256 | } 2257 | }, 2258 | "node_modules/is-generator-fn": { 2259 | "version": "2.1.0", 2260 | "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", 2261 | "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", 2262 | "dev": true, 2263 | "engines": { 2264 | "node": ">=6" 2265 | } 2266 | }, 2267 | "node_modules/is-number": { 2268 | "version": "7.0.0", 2269 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2270 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2271 | "dev": true, 2272 | "engines": { 2273 | "node": ">=0.12.0" 2274 | } 2275 | }, 2276 | "node_modules/is-stream": { 2277 | "version": "2.0.1", 2278 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2279 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2280 | "dev": true, 2281 | "engines": { 2282 | "node": ">=8" 2283 | }, 2284 | "funding": { 2285 | "url": "https://github.com/sponsors/sindresorhus" 2286 | } 2287 | }, 2288 | "node_modules/is-typedarray": { 2289 | "version": "1.0.0", 2290 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2291 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 2292 | "dev": true 2293 | }, 2294 | "node_modules/isexe": { 2295 | "version": "2.0.0", 2296 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2297 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2298 | "dev": true 2299 | }, 2300 | "node_modules/isstream": { 2301 | "version": "0.1.2", 2302 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 2303 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 2304 | "dev": true 2305 | }, 2306 | "node_modules/istanbul-lib-coverage": { 2307 | "version": "3.2.0", 2308 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", 2309 | "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", 2310 | "dev": true, 2311 | "engines": { 2312 | "node": ">=8" 2313 | } 2314 | }, 2315 | "node_modules/istanbul-lib-instrument": { 2316 | "version": "6.0.0", 2317 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", 2318 | "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", 2319 | "dev": true, 2320 | "dependencies": { 2321 | "@babel/core": "^7.12.3", 2322 | "@babel/parser": "^7.14.7", 2323 | "@istanbuljs/schema": "^0.1.2", 2324 | "istanbul-lib-coverage": "^3.2.0", 2325 | "semver": "^7.5.4" 2326 | }, 2327 | "engines": { 2328 | "node": ">=10" 2329 | } 2330 | }, 2331 | "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { 2332 | "version": "6.0.0", 2333 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2334 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2335 | "dev": true, 2336 | "dependencies": { 2337 | "yallist": "^4.0.0" 2338 | }, 2339 | "engines": { 2340 | "node": ">=10" 2341 | } 2342 | }, 2343 | "node_modules/istanbul-lib-instrument/node_modules/semver": { 2344 | "version": "7.5.4", 2345 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 2346 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 2347 | "dev": true, 2348 | "dependencies": { 2349 | "lru-cache": "^6.0.0" 2350 | }, 2351 | "bin": { 2352 | "semver": "bin/semver.js" 2353 | }, 2354 | "engines": { 2355 | "node": ">=10" 2356 | } 2357 | }, 2358 | "node_modules/istanbul-lib-instrument/node_modules/yallist": { 2359 | "version": "4.0.0", 2360 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2361 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2362 | "dev": true 2363 | }, 2364 | "node_modules/istanbul-lib-report": { 2365 | "version": "3.0.1", 2366 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 2367 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 2368 | "dev": true, 2369 | "dependencies": { 2370 | "istanbul-lib-coverage": "^3.0.0", 2371 | "make-dir": "^4.0.0", 2372 | "supports-color": "^7.1.0" 2373 | }, 2374 | "engines": { 2375 | "node": ">=10" 2376 | } 2377 | }, 2378 | "node_modules/istanbul-lib-source-maps": { 2379 | "version": "4.0.1", 2380 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", 2381 | "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", 2382 | "dev": true, 2383 | "dependencies": { 2384 | "debug": "^4.1.1", 2385 | "istanbul-lib-coverage": "^3.0.0", 2386 | "source-map": "^0.6.1" 2387 | }, 2388 | "engines": { 2389 | "node": ">=10" 2390 | } 2391 | }, 2392 | "node_modules/istanbul-reports": { 2393 | "version": "3.1.6", 2394 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", 2395 | "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", 2396 | "dev": true, 2397 | "dependencies": { 2398 | "html-escaper": "^2.0.0", 2399 | "istanbul-lib-report": "^3.0.0" 2400 | }, 2401 | "engines": { 2402 | "node": ">=8" 2403 | } 2404 | }, 2405 | "node_modules/jest": { 2406 | "version": "29.7.0", 2407 | "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", 2408 | "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", 2409 | "dev": true, 2410 | "dependencies": { 2411 | "@jest/core": "^29.7.0", 2412 | "@jest/types": "^29.6.3", 2413 | "import-local": "^3.0.2", 2414 | "jest-cli": "^29.7.0" 2415 | }, 2416 | "bin": { 2417 | "jest": "bin/jest.js" 2418 | }, 2419 | "engines": { 2420 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2421 | }, 2422 | "peerDependencies": { 2423 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 2424 | }, 2425 | "peerDependenciesMeta": { 2426 | "node-notifier": { 2427 | "optional": true 2428 | } 2429 | } 2430 | }, 2431 | "node_modules/jest-changed-files": { 2432 | "version": "29.7.0", 2433 | "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", 2434 | "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", 2435 | "dev": true, 2436 | "dependencies": { 2437 | "execa": "^5.0.0", 2438 | "jest-util": "^29.7.0", 2439 | "p-limit": "^3.1.0" 2440 | }, 2441 | "engines": { 2442 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2443 | } 2444 | }, 2445 | "node_modules/jest-circus": { 2446 | "version": "29.7.0", 2447 | "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", 2448 | "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", 2449 | "dev": true, 2450 | "dependencies": { 2451 | "@jest/environment": "^29.7.0", 2452 | "@jest/expect": "^29.7.0", 2453 | "@jest/test-result": "^29.7.0", 2454 | "@jest/types": "^29.6.3", 2455 | "@types/node": "*", 2456 | "chalk": "^4.0.0", 2457 | "co": "^4.6.0", 2458 | "dedent": "^1.0.0", 2459 | "is-generator-fn": "^2.0.0", 2460 | "jest-each": "^29.7.0", 2461 | "jest-matcher-utils": "^29.7.0", 2462 | "jest-message-util": "^29.7.0", 2463 | "jest-runtime": "^29.7.0", 2464 | "jest-snapshot": "^29.7.0", 2465 | "jest-util": "^29.7.0", 2466 | "p-limit": "^3.1.0", 2467 | "pretty-format": "^29.7.0", 2468 | "pure-rand": "^6.0.0", 2469 | "slash": "^3.0.0", 2470 | "stack-utils": "^2.0.3" 2471 | }, 2472 | "engines": { 2473 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2474 | } 2475 | }, 2476 | "node_modules/jest-cli": { 2477 | "version": "29.7.0", 2478 | "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", 2479 | "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", 2480 | "dev": true, 2481 | "dependencies": { 2482 | "@jest/core": "^29.7.0", 2483 | "@jest/test-result": "^29.7.0", 2484 | "@jest/types": "^29.6.3", 2485 | "chalk": "^4.0.0", 2486 | "create-jest": "^29.7.0", 2487 | "exit": "^0.1.2", 2488 | "import-local": "^3.0.2", 2489 | "jest-config": "^29.7.0", 2490 | "jest-util": "^29.7.0", 2491 | "jest-validate": "^29.7.0", 2492 | "yargs": "^17.3.1" 2493 | }, 2494 | "bin": { 2495 | "jest": "bin/jest.js" 2496 | }, 2497 | "engines": { 2498 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2499 | }, 2500 | "peerDependencies": { 2501 | "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" 2502 | }, 2503 | "peerDependenciesMeta": { 2504 | "node-notifier": { 2505 | "optional": true 2506 | } 2507 | } 2508 | }, 2509 | "node_modules/jest-config": { 2510 | "version": "29.7.0", 2511 | "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", 2512 | "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", 2513 | "dev": true, 2514 | "dependencies": { 2515 | "@babel/core": "^7.11.6", 2516 | "@jest/test-sequencer": "^29.7.0", 2517 | "@jest/types": "^29.6.3", 2518 | "babel-jest": "^29.7.0", 2519 | "chalk": "^4.0.0", 2520 | "ci-info": "^3.2.0", 2521 | "deepmerge": "^4.2.2", 2522 | "glob": "^7.1.3", 2523 | "graceful-fs": "^4.2.9", 2524 | "jest-circus": "^29.7.0", 2525 | "jest-environment-node": "^29.7.0", 2526 | "jest-get-type": "^29.6.3", 2527 | "jest-regex-util": "^29.6.3", 2528 | "jest-resolve": "^29.7.0", 2529 | "jest-runner": "^29.7.0", 2530 | "jest-util": "^29.7.0", 2531 | "jest-validate": "^29.7.0", 2532 | "micromatch": "^4.0.4", 2533 | "parse-json": "^5.2.0", 2534 | "pretty-format": "^29.7.0", 2535 | "slash": "^3.0.0", 2536 | "strip-json-comments": "^3.1.1" 2537 | }, 2538 | "engines": { 2539 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2540 | }, 2541 | "peerDependencies": { 2542 | "@types/node": "*", 2543 | "ts-node": ">=9.0.0" 2544 | }, 2545 | "peerDependenciesMeta": { 2546 | "@types/node": { 2547 | "optional": true 2548 | }, 2549 | "ts-node": { 2550 | "optional": true 2551 | } 2552 | } 2553 | }, 2554 | "node_modules/jest-diff": { 2555 | "version": "24.9.0", 2556 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", 2557 | "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", 2558 | "dev": true, 2559 | "dependencies": { 2560 | "chalk": "^2.0.1", 2561 | "diff-sequences": "^24.9.0", 2562 | "jest-get-type": "^24.9.0", 2563 | "pretty-format": "^24.9.0" 2564 | }, 2565 | "engines": { 2566 | "node": ">= 6" 2567 | } 2568 | }, 2569 | "node_modules/jest-diff/node_modules/@jest/types": { 2570 | "version": "24.9.0", 2571 | "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", 2572 | "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", 2573 | "dev": true, 2574 | "dependencies": { 2575 | "@types/istanbul-lib-coverage": "^2.0.0", 2576 | "@types/istanbul-reports": "^1.1.1", 2577 | "@types/yargs": "^13.0.0" 2578 | }, 2579 | "engines": { 2580 | "node": ">= 6" 2581 | } 2582 | }, 2583 | "node_modules/jest-diff/node_modules/@types/istanbul-reports": { 2584 | "version": "1.1.2", 2585 | "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", 2586 | "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", 2587 | "dev": true, 2588 | "dependencies": { 2589 | "@types/istanbul-lib-coverage": "*", 2590 | "@types/istanbul-lib-report": "*" 2591 | } 2592 | }, 2593 | "node_modules/jest-diff/node_modules/@types/yargs": { 2594 | "version": "13.0.12", 2595 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", 2596 | "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", 2597 | "dev": true, 2598 | "dependencies": { 2599 | "@types/yargs-parser": "*" 2600 | } 2601 | }, 2602 | "node_modules/jest-diff/node_modules/ansi-regex": { 2603 | "version": "4.1.1", 2604 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 2605 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 2606 | "dev": true, 2607 | "engines": { 2608 | "node": ">=6" 2609 | } 2610 | }, 2611 | "node_modules/jest-diff/node_modules/ansi-styles": { 2612 | "version": "3.2.1", 2613 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2614 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2615 | "dev": true, 2616 | "dependencies": { 2617 | "color-convert": "^1.9.0" 2618 | }, 2619 | "engines": { 2620 | "node": ">=4" 2621 | } 2622 | }, 2623 | "node_modules/jest-diff/node_modules/chalk": { 2624 | "version": "2.4.2", 2625 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2626 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2627 | "dev": true, 2628 | "dependencies": { 2629 | "ansi-styles": "^3.2.1", 2630 | "escape-string-regexp": "^1.0.5", 2631 | "supports-color": "^5.3.0" 2632 | }, 2633 | "engines": { 2634 | "node": ">=4" 2635 | } 2636 | }, 2637 | "node_modules/jest-diff/node_modules/color-convert": { 2638 | "version": "1.9.3", 2639 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2640 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2641 | "dev": true, 2642 | "dependencies": { 2643 | "color-name": "1.1.3" 2644 | } 2645 | }, 2646 | "node_modules/jest-diff/node_modules/color-name": { 2647 | "version": "1.1.3", 2648 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2649 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2650 | "dev": true 2651 | }, 2652 | "node_modules/jest-diff/node_modules/escape-string-regexp": { 2653 | "version": "1.0.5", 2654 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2655 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2656 | "dev": true, 2657 | "engines": { 2658 | "node": ">=0.8.0" 2659 | } 2660 | }, 2661 | "node_modules/jest-diff/node_modules/has-flag": { 2662 | "version": "3.0.0", 2663 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2664 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2665 | "dev": true, 2666 | "engines": { 2667 | "node": ">=4" 2668 | } 2669 | }, 2670 | "node_modules/jest-diff/node_modules/jest-get-type": { 2671 | "version": "24.9.0", 2672 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", 2673 | "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", 2674 | "dev": true, 2675 | "engines": { 2676 | "node": ">= 6" 2677 | } 2678 | }, 2679 | "node_modules/jest-diff/node_modules/pretty-format": { 2680 | "version": "24.9.0", 2681 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", 2682 | "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", 2683 | "dev": true, 2684 | "dependencies": { 2685 | "@jest/types": "^24.9.0", 2686 | "ansi-regex": "^4.0.0", 2687 | "ansi-styles": "^3.2.0", 2688 | "react-is": "^16.8.4" 2689 | }, 2690 | "engines": { 2691 | "node": ">= 6" 2692 | } 2693 | }, 2694 | "node_modules/jest-diff/node_modules/react-is": { 2695 | "version": "16.13.1", 2696 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2697 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 2698 | "dev": true 2699 | }, 2700 | "node_modules/jest-diff/node_modules/supports-color": { 2701 | "version": "5.5.0", 2702 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2703 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2704 | "dev": true, 2705 | "dependencies": { 2706 | "has-flag": "^3.0.0" 2707 | }, 2708 | "engines": { 2709 | "node": ">=4" 2710 | } 2711 | }, 2712 | "node_modules/jest-docblock": { 2713 | "version": "29.7.0", 2714 | "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", 2715 | "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", 2716 | "dev": true, 2717 | "dependencies": { 2718 | "detect-newline": "^3.0.0" 2719 | }, 2720 | "engines": { 2721 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2722 | } 2723 | }, 2724 | "node_modules/jest-each": { 2725 | "version": "29.7.0", 2726 | "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", 2727 | "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", 2728 | "dev": true, 2729 | "dependencies": { 2730 | "@jest/types": "^29.6.3", 2731 | "chalk": "^4.0.0", 2732 | "jest-get-type": "^29.6.3", 2733 | "jest-util": "^29.7.0", 2734 | "pretty-format": "^29.7.0" 2735 | }, 2736 | "engines": { 2737 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2738 | } 2739 | }, 2740 | "node_modules/jest-environment-node": { 2741 | "version": "29.7.0", 2742 | "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", 2743 | "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", 2744 | "dev": true, 2745 | "dependencies": { 2746 | "@jest/environment": "^29.7.0", 2747 | "@jest/fake-timers": "^29.7.0", 2748 | "@jest/types": "^29.6.3", 2749 | "@types/node": "*", 2750 | "jest-mock": "^29.7.0", 2751 | "jest-util": "^29.7.0" 2752 | }, 2753 | "engines": { 2754 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2755 | } 2756 | }, 2757 | "node_modules/jest-get-type": { 2758 | "version": "29.6.3", 2759 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", 2760 | "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", 2761 | "dev": true, 2762 | "engines": { 2763 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2764 | } 2765 | }, 2766 | "node_modules/jest-haste-map": { 2767 | "version": "29.7.0", 2768 | "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", 2769 | "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", 2770 | "dev": true, 2771 | "dependencies": { 2772 | "@jest/types": "^29.6.3", 2773 | "@types/graceful-fs": "^4.1.3", 2774 | "@types/node": "*", 2775 | "anymatch": "^3.0.3", 2776 | "fb-watchman": "^2.0.0", 2777 | "graceful-fs": "^4.2.9", 2778 | "jest-regex-util": "^29.6.3", 2779 | "jest-util": "^29.7.0", 2780 | "jest-worker": "^29.7.0", 2781 | "micromatch": "^4.0.4", 2782 | "walker": "^1.0.8" 2783 | }, 2784 | "engines": { 2785 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2786 | }, 2787 | "optionalDependencies": { 2788 | "fsevents": "^2.3.2" 2789 | } 2790 | }, 2791 | "node_modules/jest-leak-detector": { 2792 | "version": "29.7.0", 2793 | "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", 2794 | "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", 2795 | "dev": true, 2796 | "dependencies": { 2797 | "jest-get-type": "^29.6.3", 2798 | "pretty-format": "^29.7.0" 2799 | }, 2800 | "engines": { 2801 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2802 | } 2803 | }, 2804 | "node_modules/jest-matcher-utils": { 2805 | "version": "29.7.0", 2806 | "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", 2807 | "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", 2808 | "dev": true, 2809 | "dependencies": { 2810 | "chalk": "^4.0.0", 2811 | "jest-diff": "^29.7.0", 2812 | "jest-get-type": "^29.6.3", 2813 | "pretty-format": "^29.7.0" 2814 | }, 2815 | "engines": { 2816 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2817 | } 2818 | }, 2819 | "node_modules/jest-matcher-utils/node_modules/diff-sequences": { 2820 | "version": "29.6.3", 2821 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", 2822 | "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", 2823 | "dev": true, 2824 | "engines": { 2825 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2826 | } 2827 | }, 2828 | "node_modules/jest-matcher-utils/node_modules/jest-diff": { 2829 | "version": "29.7.0", 2830 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", 2831 | "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", 2832 | "dev": true, 2833 | "dependencies": { 2834 | "chalk": "^4.0.0", 2835 | "diff-sequences": "^29.6.3", 2836 | "jest-get-type": "^29.6.3", 2837 | "pretty-format": "^29.7.0" 2838 | }, 2839 | "engines": { 2840 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2841 | } 2842 | }, 2843 | "node_modules/jest-message-util": { 2844 | "version": "29.7.0", 2845 | "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", 2846 | "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", 2847 | "dev": true, 2848 | "dependencies": { 2849 | "@babel/code-frame": "^7.12.13", 2850 | "@jest/types": "^29.6.3", 2851 | "@types/stack-utils": "^2.0.0", 2852 | "chalk": "^4.0.0", 2853 | "graceful-fs": "^4.2.9", 2854 | "micromatch": "^4.0.4", 2855 | "pretty-format": "^29.7.0", 2856 | "slash": "^3.0.0", 2857 | "stack-utils": "^2.0.3" 2858 | }, 2859 | "engines": { 2860 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2861 | } 2862 | }, 2863 | "node_modules/jest-mock": { 2864 | "version": "29.7.0", 2865 | "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", 2866 | "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", 2867 | "dev": true, 2868 | "dependencies": { 2869 | "@jest/types": "^29.6.3", 2870 | "@types/node": "*", 2871 | "jest-util": "^29.7.0" 2872 | }, 2873 | "engines": { 2874 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2875 | } 2876 | }, 2877 | "node_modules/jest-pnp-resolver": { 2878 | "version": "1.2.3", 2879 | "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", 2880 | "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", 2881 | "dev": true, 2882 | "engines": { 2883 | "node": ">=6" 2884 | }, 2885 | "peerDependencies": { 2886 | "jest-resolve": "*" 2887 | }, 2888 | "peerDependenciesMeta": { 2889 | "jest-resolve": { 2890 | "optional": true 2891 | } 2892 | } 2893 | }, 2894 | "node_modules/jest-regex-util": { 2895 | "version": "29.6.3", 2896 | "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", 2897 | "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", 2898 | "dev": true, 2899 | "engines": { 2900 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2901 | } 2902 | }, 2903 | "node_modules/jest-resolve": { 2904 | "version": "29.7.0", 2905 | "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", 2906 | "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", 2907 | "dev": true, 2908 | "dependencies": { 2909 | "chalk": "^4.0.0", 2910 | "graceful-fs": "^4.2.9", 2911 | "jest-haste-map": "^29.7.0", 2912 | "jest-pnp-resolver": "^1.2.2", 2913 | "jest-util": "^29.7.0", 2914 | "jest-validate": "^29.7.0", 2915 | "resolve": "^1.20.0", 2916 | "resolve.exports": "^2.0.0", 2917 | "slash": "^3.0.0" 2918 | }, 2919 | "engines": { 2920 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2921 | } 2922 | }, 2923 | "node_modules/jest-resolve-dependencies": { 2924 | "version": "29.7.0", 2925 | "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", 2926 | "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", 2927 | "dev": true, 2928 | "dependencies": { 2929 | "jest-regex-util": "^29.6.3", 2930 | "jest-snapshot": "^29.7.0" 2931 | }, 2932 | "engines": { 2933 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2934 | } 2935 | }, 2936 | "node_modules/jest-runner": { 2937 | "version": "29.7.0", 2938 | "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", 2939 | "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", 2940 | "dev": true, 2941 | "dependencies": { 2942 | "@jest/console": "^29.7.0", 2943 | "@jest/environment": "^29.7.0", 2944 | "@jest/test-result": "^29.7.0", 2945 | "@jest/transform": "^29.7.0", 2946 | "@jest/types": "^29.6.3", 2947 | "@types/node": "*", 2948 | "chalk": "^4.0.0", 2949 | "emittery": "^0.13.1", 2950 | "graceful-fs": "^4.2.9", 2951 | "jest-docblock": "^29.7.0", 2952 | "jest-environment-node": "^29.7.0", 2953 | "jest-haste-map": "^29.7.0", 2954 | "jest-leak-detector": "^29.7.0", 2955 | "jest-message-util": "^29.7.0", 2956 | "jest-resolve": "^29.7.0", 2957 | "jest-runtime": "^29.7.0", 2958 | "jest-util": "^29.7.0", 2959 | "jest-watcher": "^29.7.0", 2960 | "jest-worker": "^29.7.0", 2961 | "p-limit": "^3.1.0", 2962 | "source-map-support": "0.5.13" 2963 | }, 2964 | "engines": { 2965 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2966 | } 2967 | }, 2968 | "node_modules/jest-runtime": { 2969 | "version": "29.7.0", 2970 | "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", 2971 | "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", 2972 | "dev": true, 2973 | "dependencies": { 2974 | "@jest/environment": "^29.7.0", 2975 | "@jest/fake-timers": "^29.7.0", 2976 | "@jest/globals": "^29.7.0", 2977 | "@jest/source-map": "^29.6.3", 2978 | "@jest/test-result": "^29.7.0", 2979 | "@jest/transform": "^29.7.0", 2980 | "@jest/types": "^29.6.3", 2981 | "@types/node": "*", 2982 | "chalk": "^4.0.0", 2983 | "cjs-module-lexer": "^1.0.0", 2984 | "collect-v8-coverage": "^1.0.0", 2985 | "glob": "^7.1.3", 2986 | "graceful-fs": "^4.2.9", 2987 | "jest-haste-map": "^29.7.0", 2988 | "jest-message-util": "^29.7.0", 2989 | "jest-mock": "^29.7.0", 2990 | "jest-regex-util": "^29.6.3", 2991 | "jest-resolve": "^29.7.0", 2992 | "jest-snapshot": "^29.7.0", 2993 | "jest-util": "^29.7.0", 2994 | "slash": "^3.0.0", 2995 | "strip-bom": "^4.0.0" 2996 | }, 2997 | "engines": { 2998 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2999 | } 3000 | }, 3001 | "node_modules/jest-snapshot": { 3002 | "version": "29.7.0", 3003 | "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", 3004 | "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", 3005 | "dev": true, 3006 | "dependencies": { 3007 | "@babel/core": "^7.11.6", 3008 | "@babel/generator": "^7.7.2", 3009 | "@babel/plugin-syntax-jsx": "^7.7.2", 3010 | "@babel/plugin-syntax-typescript": "^7.7.2", 3011 | "@babel/types": "^7.3.3", 3012 | "@jest/expect-utils": "^29.7.0", 3013 | "@jest/transform": "^29.7.0", 3014 | "@jest/types": "^29.6.3", 3015 | "babel-preset-current-node-syntax": "^1.0.0", 3016 | "chalk": "^4.0.0", 3017 | "expect": "^29.7.0", 3018 | "graceful-fs": "^4.2.9", 3019 | "jest-diff": "^29.7.0", 3020 | "jest-get-type": "^29.6.3", 3021 | "jest-matcher-utils": "^29.7.0", 3022 | "jest-message-util": "^29.7.0", 3023 | "jest-util": "^29.7.0", 3024 | "natural-compare": "^1.4.0", 3025 | "pretty-format": "^29.7.0", 3026 | "semver": "^7.5.3" 3027 | }, 3028 | "engines": { 3029 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3030 | } 3031 | }, 3032 | "node_modules/jest-snapshot/node_modules/diff-sequences": { 3033 | "version": "29.6.3", 3034 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", 3035 | "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", 3036 | "dev": true, 3037 | "engines": { 3038 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3039 | } 3040 | }, 3041 | "node_modules/jest-snapshot/node_modules/jest-diff": { 3042 | "version": "29.7.0", 3043 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", 3044 | "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", 3045 | "dev": true, 3046 | "dependencies": { 3047 | "chalk": "^4.0.0", 3048 | "diff-sequences": "^29.6.3", 3049 | "jest-get-type": "^29.6.3", 3050 | "pretty-format": "^29.7.0" 3051 | }, 3052 | "engines": { 3053 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3054 | } 3055 | }, 3056 | "node_modules/jest-snapshot/node_modules/lru-cache": { 3057 | "version": "6.0.0", 3058 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3059 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3060 | "dev": true, 3061 | "dependencies": { 3062 | "yallist": "^4.0.0" 3063 | }, 3064 | "engines": { 3065 | "node": ">=10" 3066 | } 3067 | }, 3068 | "node_modules/jest-snapshot/node_modules/semver": { 3069 | "version": "7.5.4", 3070 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 3071 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 3072 | "dev": true, 3073 | "dependencies": { 3074 | "lru-cache": "^6.0.0" 3075 | }, 3076 | "bin": { 3077 | "semver": "bin/semver.js" 3078 | }, 3079 | "engines": { 3080 | "node": ">=10" 3081 | } 3082 | }, 3083 | "node_modules/jest-snapshot/node_modules/yallist": { 3084 | "version": "4.0.0", 3085 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3086 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3087 | "dev": true 3088 | }, 3089 | "node_modules/jest-util": { 3090 | "version": "29.7.0", 3091 | "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", 3092 | "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", 3093 | "dev": true, 3094 | "dependencies": { 3095 | "@jest/types": "^29.6.3", 3096 | "@types/node": "*", 3097 | "chalk": "^4.0.0", 3098 | "ci-info": "^3.2.0", 3099 | "graceful-fs": "^4.2.9", 3100 | "picomatch": "^2.2.3" 3101 | }, 3102 | "engines": { 3103 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3104 | } 3105 | }, 3106 | "node_modules/jest-validate": { 3107 | "version": "29.7.0", 3108 | "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", 3109 | "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", 3110 | "dev": true, 3111 | "dependencies": { 3112 | "@jest/types": "^29.6.3", 3113 | "camelcase": "^6.2.0", 3114 | "chalk": "^4.0.0", 3115 | "jest-get-type": "^29.6.3", 3116 | "leven": "^3.1.0", 3117 | "pretty-format": "^29.7.0" 3118 | }, 3119 | "engines": { 3120 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3121 | } 3122 | }, 3123 | "node_modules/jest-validate/node_modules/camelcase": { 3124 | "version": "6.3.0", 3125 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 3126 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 3127 | "dev": true, 3128 | "engines": { 3129 | "node": ">=10" 3130 | }, 3131 | "funding": { 3132 | "url": "https://github.com/sponsors/sindresorhus" 3133 | } 3134 | }, 3135 | "node_modules/jest-watcher": { 3136 | "version": "29.7.0", 3137 | "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", 3138 | "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", 3139 | "dev": true, 3140 | "dependencies": { 3141 | "@jest/test-result": "^29.7.0", 3142 | "@jest/types": "^29.6.3", 3143 | "@types/node": "*", 3144 | "ansi-escapes": "^4.2.1", 3145 | "chalk": "^4.0.0", 3146 | "emittery": "^0.13.1", 3147 | "jest-util": "^29.7.0", 3148 | "string-length": "^4.0.1" 3149 | }, 3150 | "engines": { 3151 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3152 | } 3153 | }, 3154 | "node_modules/jest-worker": { 3155 | "version": "29.7.0", 3156 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", 3157 | "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", 3158 | "dev": true, 3159 | "dependencies": { 3160 | "@types/node": "*", 3161 | "jest-util": "^29.7.0", 3162 | "merge-stream": "^2.0.0", 3163 | "supports-color": "^8.0.0" 3164 | }, 3165 | "engines": { 3166 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3167 | } 3168 | }, 3169 | "node_modules/jest-worker/node_modules/supports-color": { 3170 | "version": "8.1.1", 3171 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 3172 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 3173 | "dev": true, 3174 | "dependencies": { 3175 | "has-flag": "^4.0.0" 3176 | }, 3177 | "engines": { 3178 | "node": ">=10" 3179 | }, 3180 | "funding": { 3181 | "url": "https://github.com/chalk/supports-color?sponsor=1" 3182 | } 3183 | }, 3184 | "node_modules/js-tokens": { 3185 | "version": "4.0.0", 3186 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3187 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3188 | "dev": true 3189 | }, 3190 | "node_modules/js-yaml": { 3191 | "version": "3.14.1", 3192 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 3193 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 3194 | "dev": true, 3195 | "dependencies": { 3196 | "argparse": "^1.0.7", 3197 | "esprima": "^4.0.0" 3198 | }, 3199 | "bin": { 3200 | "js-yaml": "bin/js-yaml.js" 3201 | } 3202 | }, 3203 | "node_modules/jsbn": { 3204 | "version": "0.1.1", 3205 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 3206 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", 3207 | "dev": true 3208 | }, 3209 | "node_modules/jsesc": { 3210 | "version": "2.5.2", 3211 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 3212 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 3213 | "dev": true, 3214 | "bin": { 3215 | "jsesc": "bin/jsesc" 3216 | }, 3217 | "engines": { 3218 | "node": ">=4" 3219 | } 3220 | }, 3221 | "node_modules/json-parse-even-better-errors": { 3222 | "version": "2.3.1", 3223 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 3224 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 3225 | "dev": true 3226 | }, 3227 | "node_modules/json-schema": { 3228 | "version": "0.4.0", 3229 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 3230 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 3231 | "dev": true 3232 | }, 3233 | "node_modules/json-schema-traverse": { 3234 | "version": "0.4.1", 3235 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3236 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3237 | "dev": true 3238 | }, 3239 | "node_modules/json-stringify-safe": { 3240 | "version": "5.0.1", 3241 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 3242 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 3243 | "dev": true 3244 | }, 3245 | "node_modules/json5": { 3246 | "version": "2.2.3", 3247 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 3248 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 3249 | "dev": true, 3250 | "bin": { 3251 | "json5": "lib/cli.js" 3252 | }, 3253 | "engines": { 3254 | "node": ">=6" 3255 | } 3256 | }, 3257 | "node_modules/jsprim": { 3258 | "version": "1.4.2", 3259 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 3260 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 3261 | "dev": true, 3262 | "dependencies": { 3263 | "assert-plus": "1.0.0", 3264 | "extsprintf": "1.3.0", 3265 | "json-schema": "0.4.0", 3266 | "verror": "1.10.0" 3267 | }, 3268 | "engines": { 3269 | "node": ">=0.6.0" 3270 | } 3271 | }, 3272 | "node_modules/kleur": { 3273 | "version": "3.0.3", 3274 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 3275 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", 3276 | "dev": true, 3277 | "engines": { 3278 | "node": ">=6" 3279 | } 3280 | }, 3281 | "node_modules/lcov-parse": { 3282 | "version": "1.0.0", 3283 | "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", 3284 | "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", 3285 | "dev": true, 3286 | "bin": { 3287 | "lcov-parse": "bin/cli.js" 3288 | } 3289 | }, 3290 | "node_modules/leven": { 3291 | "version": "3.1.0", 3292 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 3293 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", 3294 | "dev": true, 3295 | "engines": { 3296 | "node": ">=6" 3297 | } 3298 | }, 3299 | "node_modules/lines-and-columns": { 3300 | "version": "1.2.4", 3301 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 3302 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3303 | "dev": true 3304 | }, 3305 | "node_modules/locate-path": { 3306 | "version": "5.0.0", 3307 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 3308 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 3309 | "dev": true, 3310 | "dependencies": { 3311 | "p-locate": "^4.1.0" 3312 | }, 3313 | "engines": { 3314 | "node": ">=8" 3315 | } 3316 | }, 3317 | "node_modules/lodash.memoize": { 3318 | "version": "4.1.2", 3319 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 3320 | "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", 3321 | "dev": true 3322 | }, 3323 | "node_modules/log-driver": { 3324 | "version": "1.2.7", 3325 | "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", 3326 | "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", 3327 | "dev": true, 3328 | "engines": { 3329 | "node": ">=0.8.6" 3330 | } 3331 | }, 3332 | "node_modules/lru-cache": { 3333 | "version": "5.1.1", 3334 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 3335 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 3336 | "dev": true, 3337 | "dependencies": { 3338 | "yallist": "^3.0.2" 3339 | } 3340 | }, 3341 | "node_modules/make-dir": { 3342 | "version": "4.0.0", 3343 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 3344 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 3345 | "dev": true, 3346 | "dependencies": { 3347 | "semver": "^7.5.3" 3348 | }, 3349 | "engines": { 3350 | "node": ">=10" 3351 | }, 3352 | "funding": { 3353 | "url": "https://github.com/sponsors/sindresorhus" 3354 | } 3355 | }, 3356 | "node_modules/make-dir/node_modules/lru-cache": { 3357 | "version": "6.0.0", 3358 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3359 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3360 | "dev": true, 3361 | "dependencies": { 3362 | "yallist": "^4.0.0" 3363 | }, 3364 | "engines": { 3365 | "node": ">=10" 3366 | } 3367 | }, 3368 | "node_modules/make-dir/node_modules/semver": { 3369 | "version": "7.5.4", 3370 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 3371 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 3372 | "dev": true, 3373 | "dependencies": { 3374 | "lru-cache": "^6.0.0" 3375 | }, 3376 | "bin": { 3377 | "semver": "bin/semver.js" 3378 | }, 3379 | "engines": { 3380 | "node": ">=10" 3381 | } 3382 | }, 3383 | "node_modules/make-dir/node_modules/yallist": { 3384 | "version": "4.0.0", 3385 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3386 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3387 | "dev": true 3388 | }, 3389 | "node_modules/make-error": { 3390 | "version": "1.3.6", 3391 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 3392 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 3393 | "dev": true 3394 | }, 3395 | "node_modules/makeerror": { 3396 | "version": "1.0.12", 3397 | "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", 3398 | "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", 3399 | "dev": true, 3400 | "dependencies": { 3401 | "tmpl": "1.0.5" 3402 | } 3403 | }, 3404 | "node_modules/merge-stream": { 3405 | "version": "2.0.0", 3406 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 3407 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 3408 | "dev": true 3409 | }, 3410 | "node_modules/micromatch": { 3411 | "version": "4.0.5", 3412 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 3413 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 3414 | "dev": true, 3415 | "dependencies": { 3416 | "braces": "^3.0.2", 3417 | "picomatch": "^2.3.1" 3418 | }, 3419 | "engines": { 3420 | "node": ">=8.6" 3421 | } 3422 | }, 3423 | "node_modules/mime-db": { 3424 | "version": "1.52.0", 3425 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 3426 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 3427 | "engines": { 3428 | "node": ">= 0.6" 3429 | } 3430 | }, 3431 | "node_modules/mime-types": { 3432 | "version": "2.1.35", 3433 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 3434 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 3435 | "dependencies": { 3436 | "mime-db": "1.52.0" 3437 | }, 3438 | "engines": { 3439 | "node": ">= 0.6" 3440 | } 3441 | }, 3442 | "node_modules/mimic-fn": { 3443 | "version": "2.1.0", 3444 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 3445 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 3446 | "dev": true, 3447 | "engines": { 3448 | "node": ">=6" 3449 | } 3450 | }, 3451 | "node_modules/minimatch": { 3452 | "version": "3.1.2", 3453 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3454 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3455 | "dev": true, 3456 | "dependencies": { 3457 | "brace-expansion": "^1.1.7" 3458 | }, 3459 | "engines": { 3460 | "node": "*" 3461 | } 3462 | }, 3463 | "node_modules/minimist": { 3464 | "version": "1.2.8", 3465 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3466 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3467 | "dev": true, 3468 | "funding": { 3469 | "url": "https://github.com/sponsors/ljharb" 3470 | } 3471 | }, 3472 | "node_modules/ms": { 3473 | "version": "2.1.2", 3474 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3475 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3476 | "dev": true 3477 | }, 3478 | "node_modules/natural-compare": { 3479 | "version": "1.4.0", 3480 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3481 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 3482 | "dev": true 3483 | }, 3484 | "node_modules/node-int64": { 3485 | "version": "0.4.0", 3486 | "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", 3487 | "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", 3488 | "dev": true 3489 | }, 3490 | "node_modules/node-releases": { 3491 | "version": "2.0.13", 3492 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", 3493 | "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", 3494 | "dev": true 3495 | }, 3496 | "node_modules/normalize-path": { 3497 | "version": "3.0.0", 3498 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3499 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3500 | "dev": true, 3501 | "engines": { 3502 | "node": ">=0.10.0" 3503 | } 3504 | }, 3505 | "node_modules/npm-run-path": { 3506 | "version": "4.0.1", 3507 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 3508 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 3509 | "dev": true, 3510 | "dependencies": { 3511 | "path-key": "^3.0.0" 3512 | }, 3513 | "engines": { 3514 | "node": ">=8" 3515 | } 3516 | }, 3517 | "node_modules/oauth-sign": { 3518 | "version": "0.9.0", 3519 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 3520 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 3521 | "dev": true, 3522 | "engines": { 3523 | "node": "*" 3524 | } 3525 | }, 3526 | "node_modules/once": { 3527 | "version": "1.4.0", 3528 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3529 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3530 | "dev": true, 3531 | "dependencies": { 3532 | "wrappy": "1" 3533 | } 3534 | }, 3535 | "node_modules/onetime": { 3536 | "version": "5.1.2", 3537 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3538 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3539 | "dev": true, 3540 | "dependencies": { 3541 | "mimic-fn": "^2.1.0" 3542 | }, 3543 | "engines": { 3544 | "node": ">=6" 3545 | }, 3546 | "funding": { 3547 | "url": "https://github.com/sponsors/sindresorhus" 3548 | } 3549 | }, 3550 | "node_modules/p-limit": { 3551 | "version": "3.1.0", 3552 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3553 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3554 | "dev": true, 3555 | "dependencies": { 3556 | "yocto-queue": "^0.1.0" 3557 | }, 3558 | "engines": { 3559 | "node": ">=10" 3560 | }, 3561 | "funding": { 3562 | "url": "https://github.com/sponsors/sindresorhus" 3563 | } 3564 | }, 3565 | "node_modules/p-locate": { 3566 | "version": "4.1.0", 3567 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 3568 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 3569 | "dev": true, 3570 | "dependencies": { 3571 | "p-limit": "^2.2.0" 3572 | }, 3573 | "engines": { 3574 | "node": ">=8" 3575 | } 3576 | }, 3577 | "node_modules/p-locate/node_modules/p-limit": { 3578 | "version": "2.3.0", 3579 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 3580 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 3581 | "dev": true, 3582 | "dependencies": { 3583 | "p-try": "^2.0.0" 3584 | }, 3585 | "engines": { 3586 | "node": ">=6" 3587 | }, 3588 | "funding": { 3589 | "url": "https://github.com/sponsors/sindresorhus" 3590 | } 3591 | }, 3592 | "node_modules/p-try": { 3593 | "version": "2.2.0", 3594 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3595 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3596 | "dev": true, 3597 | "engines": { 3598 | "node": ">=6" 3599 | } 3600 | }, 3601 | "node_modules/parse-json": { 3602 | "version": "5.2.0", 3603 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 3604 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 3605 | "dev": true, 3606 | "dependencies": { 3607 | "@babel/code-frame": "^7.0.0", 3608 | "error-ex": "^1.3.1", 3609 | "json-parse-even-better-errors": "^2.3.0", 3610 | "lines-and-columns": "^1.1.6" 3611 | }, 3612 | "engines": { 3613 | "node": ">=8" 3614 | }, 3615 | "funding": { 3616 | "url": "https://github.com/sponsors/sindresorhus" 3617 | } 3618 | }, 3619 | "node_modules/path-exists": { 3620 | "version": "4.0.0", 3621 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3622 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3623 | "dev": true, 3624 | "engines": { 3625 | "node": ">=8" 3626 | } 3627 | }, 3628 | "node_modules/path-is-absolute": { 3629 | "version": "1.0.1", 3630 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3631 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3632 | "dev": true, 3633 | "engines": { 3634 | "node": ">=0.10.0" 3635 | } 3636 | }, 3637 | "node_modules/path-key": { 3638 | "version": "3.1.1", 3639 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3640 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3641 | "dev": true, 3642 | "engines": { 3643 | "node": ">=8" 3644 | } 3645 | }, 3646 | "node_modules/path-parse": { 3647 | "version": "1.0.7", 3648 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3649 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3650 | "dev": true 3651 | }, 3652 | "node_modules/performance-now": { 3653 | "version": "2.1.0", 3654 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 3655 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", 3656 | "dev": true 3657 | }, 3658 | "node_modules/picocolors": { 3659 | "version": "1.0.0", 3660 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 3661 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 3662 | "dev": true 3663 | }, 3664 | "node_modules/picomatch": { 3665 | "version": "2.3.1", 3666 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3667 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3668 | "dev": true, 3669 | "engines": { 3670 | "node": ">=8.6" 3671 | }, 3672 | "funding": { 3673 | "url": "https://github.com/sponsors/jonschlinkert" 3674 | } 3675 | }, 3676 | "node_modules/pirates": { 3677 | "version": "4.0.6", 3678 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 3679 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 3680 | "dev": true, 3681 | "engines": { 3682 | "node": ">= 6" 3683 | } 3684 | }, 3685 | "node_modules/pkg-dir": { 3686 | "version": "4.2.0", 3687 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3688 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3689 | "dev": true, 3690 | "dependencies": { 3691 | "find-up": "^4.0.0" 3692 | }, 3693 | "engines": { 3694 | "node": ">=8" 3695 | } 3696 | }, 3697 | "node_modules/pretty-format": { 3698 | "version": "29.7.0", 3699 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", 3700 | "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", 3701 | "dev": true, 3702 | "dependencies": { 3703 | "@jest/schemas": "^29.6.3", 3704 | "ansi-styles": "^5.0.0", 3705 | "react-is": "^18.0.0" 3706 | }, 3707 | "engines": { 3708 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 3709 | } 3710 | }, 3711 | "node_modules/pretty-format/node_modules/ansi-styles": { 3712 | "version": "5.2.0", 3713 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 3714 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 3715 | "dev": true, 3716 | "engines": { 3717 | "node": ">=10" 3718 | }, 3719 | "funding": { 3720 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3721 | } 3722 | }, 3723 | "node_modules/prompts": { 3724 | "version": "2.4.2", 3725 | "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", 3726 | "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", 3727 | "dev": true, 3728 | "dependencies": { 3729 | "kleur": "^3.0.3", 3730 | "sisteransi": "^1.0.5" 3731 | }, 3732 | "engines": { 3733 | "node": ">= 6" 3734 | } 3735 | }, 3736 | "node_modules/proxy-from-env": { 3737 | "version": "1.1.0", 3738 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 3739 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 3740 | }, 3741 | "node_modules/psl": { 3742 | "version": "1.9.0", 3743 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 3744 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 3745 | "dev": true 3746 | }, 3747 | "node_modules/punycode": { 3748 | "version": "2.3.0", 3749 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 3750 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 3751 | "dev": true, 3752 | "engines": { 3753 | "node": ">=6" 3754 | } 3755 | }, 3756 | "node_modules/pure-rand": { 3757 | "version": "6.0.3", 3758 | "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", 3759 | "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", 3760 | "dev": true, 3761 | "funding": [ 3762 | { 3763 | "type": "individual", 3764 | "url": "https://github.com/sponsors/dubzzz" 3765 | }, 3766 | { 3767 | "type": "opencollective", 3768 | "url": "https://opencollective.com/fast-check" 3769 | } 3770 | ] 3771 | }, 3772 | "node_modules/qs": { 3773 | "version": "6.5.3", 3774 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 3775 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 3776 | "dev": true, 3777 | "engines": { 3778 | "node": ">=0.6" 3779 | } 3780 | }, 3781 | "node_modules/react-is": { 3782 | "version": "18.2.0", 3783 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", 3784 | "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", 3785 | "dev": true 3786 | }, 3787 | "node_modules/request": { 3788 | "version": "2.88.2", 3789 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 3790 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 3791 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 3792 | "dev": true, 3793 | "dependencies": { 3794 | "aws-sign2": "~0.7.0", 3795 | "aws4": "^1.8.0", 3796 | "caseless": "~0.12.0", 3797 | "combined-stream": "~1.0.6", 3798 | "extend": "~3.0.2", 3799 | "forever-agent": "~0.6.1", 3800 | "form-data": "~2.3.2", 3801 | "har-validator": "~5.1.3", 3802 | "http-signature": "~1.2.0", 3803 | "is-typedarray": "~1.0.0", 3804 | "isstream": "~0.1.2", 3805 | "json-stringify-safe": "~5.0.1", 3806 | "mime-types": "~2.1.19", 3807 | "oauth-sign": "~0.9.0", 3808 | "performance-now": "^2.1.0", 3809 | "qs": "~6.5.2", 3810 | "safe-buffer": "^5.1.2", 3811 | "tough-cookie": "~2.5.0", 3812 | "tunnel-agent": "^0.6.0", 3813 | "uuid": "^3.3.2" 3814 | }, 3815 | "engines": { 3816 | "node": ">= 6" 3817 | } 3818 | }, 3819 | "node_modules/request/node_modules/form-data": { 3820 | "version": "2.3.3", 3821 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 3822 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 3823 | "dev": true, 3824 | "dependencies": { 3825 | "asynckit": "^0.4.0", 3826 | "combined-stream": "^1.0.6", 3827 | "mime-types": "^2.1.12" 3828 | }, 3829 | "engines": { 3830 | "node": ">= 0.12" 3831 | } 3832 | }, 3833 | "node_modules/request/node_modules/uuid": { 3834 | "version": "3.4.0", 3835 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 3836 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 3837 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 3838 | "dev": true, 3839 | "bin": { 3840 | "uuid": "bin/uuid" 3841 | } 3842 | }, 3843 | "node_modules/require-directory": { 3844 | "version": "2.1.1", 3845 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3846 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3847 | "dev": true, 3848 | "engines": { 3849 | "node": ">=0.10.0" 3850 | } 3851 | }, 3852 | "node_modules/resolve": { 3853 | "version": "1.22.6", 3854 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", 3855 | "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", 3856 | "dev": true, 3857 | "dependencies": { 3858 | "is-core-module": "^2.13.0", 3859 | "path-parse": "^1.0.7", 3860 | "supports-preserve-symlinks-flag": "^1.0.0" 3861 | }, 3862 | "bin": { 3863 | "resolve": "bin/resolve" 3864 | }, 3865 | "funding": { 3866 | "url": "https://github.com/sponsors/ljharb" 3867 | } 3868 | }, 3869 | "node_modules/resolve-cwd": { 3870 | "version": "3.0.0", 3871 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 3872 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 3873 | "dev": true, 3874 | "dependencies": { 3875 | "resolve-from": "^5.0.0" 3876 | }, 3877 | "engines": { 3878 | "node": ">=8" 3879 | } 3880 | }, 3881 | "node_modules/resolve-from": { 3882 | "version": "5.0.0", 3883 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3884 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3885 | "dev": true, 3886 | "engines": { 3887 | "node": ">=8" 3888 | } 3889 | }, 3890 | "node_modules/resolve.exports": { 3891 | "version": "2.0.2", 3892 | "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", 3893 | "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", 3894 | "dev": true, 3895 | "engines": { 3896 | "node": ">=10" 3897 | } 3898 | }, 3899 | "node_modules/safe-buffer": { 3900 | "version": "5.2.1", 3901 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3902 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3903 | "dev": true, 3904 | "funding": [ 3905 | { 3906 | "type": "github", 3907 | "url": "https://github.com/sponsors/feross" 3908 | }, 3909 | { 3910 | "type": "patreon", 3911 | "url": "https://www.patreon.com/feross" 3912 | }, 3913 | { 3914 | "type": "consulting", 3915 | "url": "https://feross.org/support" 3916 | } 3917 | ] 3918 | }, 3919 | "node_modules/safer-buffer": { 3920 | "version": "2.1.2", 3921 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3922 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3923 | "dev": true 3924 | }, 3925 | "node_modules/semver": { 3926 | "version": "6.3.1", 3927 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 3928 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 3929 | "dev": true, 3930 | "bin": { 3931 | "semver": "bin/semver.js" 3932 | } 3933 | }, 3934 | "node_modules/shebang-command": { 3935 | "version": "2.0.0", 3936 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3937 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3938 | "dev": true, 3939 | "dependencies": { 3940 | "shebang-regex": "^3.0.0" 3941 | }, 3942 | "engines": { 3943 | "node": ">=8" 3944 | } 3945 | }, 3946 | "node_modules/shebang-regex": { 3947 | "version": "3.0.0", 3948 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3949 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3950 | "dev": true, 3951 | "engines": { 3952 | "node": ">=8" 3953 | } 3954 | }, 3955 | "node_modules/signal-exit": { 3956 | "version": "3.0.7", 3957 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3958 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3959 | "dev": true 3960 | }, 3961 | "node_modules/sisteransi": { 3962 | "version": "1.0.5", 3963 | "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", 3964 | "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", 3965 | "dev": true 3966 | }, 3967 | "node_modules/slash": { 3968 | "version": "3.0.0", 3969 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3970 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3971 | "dev": true, 3972 | "engines": { 3973 | "node": ">=8" 3974 | } 3975 | }, 3976 | "node_modules/source-map": { 3977 | "version": "0.6.1", 3978 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3979 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3980 | "dev": true, 3981 | "engines": { 3982 | "node": ">=0.10.0" 3983 | } 3984 | }, 3985 | "node_modules/source-map-support": { 3986 | "version": "0.5.13", 3987 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", 3988 | "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", 3989 | "dev": true, 3990 | "dependencies": { 3991 | "buffer-from": "^1.0.0", 3992 | "source-map": "^0.6.0" 3993 | } 3994 | }, 3995 | "node_modules/sprintf-js": { 3996 | "version": "1.0.3", 3997 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3998 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 3999 | "dev": true 4000 | }, 4001 | "node_modules/sshpk": { 4002 | "version": "1.17.0", 4003 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 4004 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 4005 | "dev": true, 4006 | "dependencies": { 4007 | "asn1": "~0.2.3", 4008 | "assert-plus": "^1.0.0", 4009 | "bcrypt-pbkdf": "^1.0.0", 4010 | "dashdash": "^1.12.0", 4011 | "ecc-jsbn": "~0.1.1", 4012 | "getpass": "^0.1.1", 4013 | "jsbn": "~0.1.0", 4014 | "safer-buffer": "^2.0.2", 4015 | "tweetnacl": "~0.14.0" 4016 | }, 4017 | "bin": { 4018 | "sshpk-conv": "bin/sshpk-conv", 4019 | "sshpk-sign": "bin/sshpk-sign", 4020 | "sshpk-verify": "bin/sshpk-verify" 4021 | }, 4022 | "engines": { 4023 | "node": ">=0.10.0" 4024 | } 4025 | }, 4026 | "node_modules/stack-utils": { 4027 | "version": "2.0.6", 4028 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", 4029 | "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", 4030 | "dev": true, 4031 | "dependencies": { 4032 | "escape-string-regexp": "^2.0.0" 4033 | }, 4034 | "engines": { 4035 | "node": ">=10" 4036 | } 4037 | }, 4038 | "node_modules/string-length": { 4039 | "version": "4.0.2", 4040 | "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", 4041 | "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", 4042 | "dev": true, 4043 | "dependencies": { 4044 | "char-regex": "^1.0.2", 4045 | "strip-ansi": "^6.0.0" 4046 | }, 4047 | "engines": { 4048 | "node": ">=10" 4049 | } 4050 | }, 4051 | "node_modules/string-width": { 4052 | "version": "4.2.3", 4053 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4054 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4055 | "dev": true, 4056 | "dependencies": { 4057 | "emoji-regex": "^8.0.0", 4058 | "is-fullwidth-code-point": "^3.0.0", 4059 | "strip-ansi": "^6.0.1" 4060 | }, 4061 | "engines": { 4062 | "node": ">=8" 4063 | } 4064 | }, 4065 | "node_modules/strip-ansi": { 4066 | "version": "6.0.1", 4067 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4068 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4069 | "dev": true, 4070 | "dependencies": { 4071 | "ansi-regex": "^5.0.1" 4072 | }, 4073 | "engines": { 4074 | "node": ">=8" 4075 | } 4076 | }, 4077 | "node_modules/strip-bom": { 4078 | "version": "4.0.0", 4079 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 4080 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 4081 | "dev": true, 4082 | "engines": { 4083 | "node": ">=8" 4084 | } 4085 | }, 4086 | "node_modules/strip-final-newline": { 4087 | "version": "2.0.0", 4088 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 4089 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 4090 | "dev": true, 4091 | "engines": { 4092 | "node": ">=6" 4093 | } 4094 | }, 4095 | "node_modules/strip-json-comments": { 4096 | "version": "3.1.1", 4097 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4098 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4099 | "dev": true, 4100 | "engines": { 4101 | "node": ">=8" 4102 | }, 4103 | "funding": { 4104 | "url": "https://github.com/sponsors/sindresorhus" 4105 | } 4106 | }, 4107 | "node_modules/supports-color": { 4108 | "version": "7.2.0", 4109 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4110 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4111 | "dev": true, 4112 | "dependencies": { 4113 | "has-flag": "^4.0.0" 4114 | }, 4115 | "engines": { 4116 | "node": ">=8" 4117 | } 4118 | }, 4119 | "node_modules/supports-preserve-symlinks-flag": { 4120 | "version": "1.0.0", 4121 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4122 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4123 | "dev": true, 4124 | "engines": { 4125 | "node": ">= 0.4" 4126 | }, 4127 | "funding": { 4128 | "url": "https://github.com/sponsors/ljharb" 4129 | } 4130 | }, 4131 | "node_modules/test-exclude": { 4132 | "version": "6.0.0", 4133 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 4134 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 4135 | "dev": true, 4136 | "dependencies": { 4137 | "@istanbuljs/schema": "^0.1.2", 4138 | "glob": "^7.1.4", 4139 | "minimatch": "^3.0.4" 4140 | }, 4141 | "engines": { 4142 | "node": ">=8" 4143 | } 4144 | }, 4145 | "node_modules/tmpl": { 4146 | "version": "1.0.5", 4147 | "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", 4148 | "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", 4149 | "dev": true 4150 | }, 4151 | "node_modules/to-fast-properties": { 4152 | "version": "2.0.0", 4153 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 4154 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 4155 | "dev": true, 4156 | "engines": { 4157 | "node": ">=4" 4158 | } 4159 | }, 4160 | "node_modules/to-regex-range": { 4161 | "version": "5.0.1", 4162 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4163 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4164 | "dev": true, 4165 | "dependencies": { 4166 | "is-number": "^7.0.0" 4167 | }, 4168 | "engines": { 4169 | "node": ">=8.0" 4170 | } 4171 | }, 4172 | "node_modules/tough-cookie": { 4173 | "version": "2.5.0", 4174 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 4175 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 4176 | "dev": true, 4177 | "dependencies": { 4178 | "psl": "^1.1.28", 4179 | "punycode": "^2.1.1" 4180 | }, 4181 | "engines": { 4182 | "node": ">=0.8" 4183 | } 4184 | }, 4185 | "node_modules/ts-jest": { 4186 | "version": "29.1.1", 4187 | "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", 4188 | "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", 4189 | "dev": true, 4190 | "dependencies": { 4191 | "bs-logger": "0.x", 4192 | "fast-json-stable-stringify": "2.x", 4193 | "jest-util": "^29.0.0", 4194 | "json5": "^2.2.3", 4195 | "lodash.memoize": "4.x", 4196 | "make-error": "1.x", 4197 | "semver": "^7.5.3", 4198 | "yargs-parser": "^21.0.1" 4199 | }, 4200 | "bin": { 4201 | "ts-jest": "cli.js" 4202 | }, 4203 | "engines": { 4204 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 4205 | }, 4206 | "peerDependencies": { 4207 | "@babel/core": ">=7.0.0-beta.0 <8", 4208 | "@jest/types": "^29.0.0", 4209 | "babel-jest": "^29.0.0", 4210 | "jest": "^29.0.0", 4211 | "typescript": ">=4.3 <6" 4212 | }, 4213 | "peerDependenciesMeta": { 4214 | "@babel/core": { 4215 | "optional": true 4216 | }, 4217 | "@jest/types": { 4218 | "optional": true 4219 | }, 4220 | "babel-jest": { 4221 | "optional": true 4222 | }, 4223 | "esbuild": { 4224 | "optional": true 4225 | } 4226 | } 4227 | }, 4228 | "node_modules/ts-jest/node_modules/lru-cache": { 4229 | "version": "6.0.0", 4230 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 4231 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 4232 | "dev": true, 4233 | "dependencies": { 4234 | "yallist": "^4.0.0" 4235 | }, 4236 | "engines": { 4237 | "node": ">=10" 4238 | } 4239 | }, 4240 | "node_modules/ts-jest/node_modules/semver": { 4241 | "version": "7.5.4", 4242 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 4243 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 4244 | "dev": true, 4245 | "dependencies": { 4246 | "lru-cache": "^6.0.0" 4247 | }, 4248 | "bin": { 4249 | "semver": "bin/semver.js" 4250 | }, 4251 | "engines": { 4252 | "node": ">=10" 4253 | } 4254 | }, 4255 | "node_modules/ts-jest/node_modules/yallist": { 4256 | "version": "4.0.0", 4257 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 4258 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 4259 | "dev": true 4260 | }, 4261 | "node_modules/tunnel-agent": { 4262 | "version": "0.6.0", 4263 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 4264 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 4265 | "dev": true, 4266 | "dependencies": { 4267 | "safe-buffer": "^5.0.1" 4268 | }, 4269 | "engines": { 4270 | "node": "*" 4271 | } 4272 | }, 4273 | "node_modules/tweetnacl": { 4274 | "version": "0.14.5", 4275 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 4276 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", 4277 | "dev": true 4278 | }, 4279 | "node_modules/type-detect": { 4280 | "version": "4.0.8", 4281 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 4282 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 4283 | "dev": true, 4284 | "engines": { 4285 | "node": ">=4" 4286 | } 4287 | }, 4288 | "node_modules/type-fest": { 4289 | "version": "0.21.3", 4290 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 4291 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 4292 | "dev": true, 4293 | "engines": { 4294 | "node": ">=10" 4295 | }, 4296 | "funding": { 4297 | "url": "https://github.com/sponsors/sindresorhus" 4298 | } 4299 | }, 4300 | "node_modules/typescript": { 4301 | "version": "5.2.2", 4302 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", 4303 | "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", 4304 | "bin": { 4305 | "tsc": "bin/tsc", 4306 | "tsserver": "bin/tsserver" 4307 | }, 4308 | "engines": { 4309 | "node": ">=14.17" 4310 | } 4311 | }, 4312 | "node_modules/update-browserslist-db": { 4313 | "version": "1.0.13", 4314 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", 4315 | "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", 4316 | "dev": true, 4317 | "funding": [ 4318 | { 4319 | "type": "opencollective", 4320 | "url": "https://opencollective.com/browserslist" 4321 | }, 4322 | { 4323 | "type": "tidelift", 4324 | "url": "https://tidelift.com/funding/github/npm/browserslist" 4325 | }, 4326 | { 4327 | "type": "github", 4328 | "url": "https://github.com/sponsors/ai" 4329 | } 4330 | ], 4331 | "dependencies": { 4332 | "escalade": "^3.1.1", 4333 | "picocolors": "^1.0.0" 4334 | }, 4335 | "bin": { 4336 | "update-browserslist-db": "cli.js" 4337 | }, 4338 | "peerDependencies": { 4339 | "browserslist": ">= 4.21.0" 4340 | } 4341 | }, 4342 | "node_modules/uri-js": { 4343 | "version": "4.4.1", 4344 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 4345 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 4346 | "dev": true, 4347 | "dependencies": { 4348 | "punycode": "^2.1.0" 4349 | } 4350 | }, 4351 | "node_modules/v8-to-istanbul": { 4352 | "version": "9.1.0", 4353 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", 4354 | "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", 4355 | "dev": true, 4356 | "dependencies": { 4357 | "@jridgewell/trace-mapping": "^0.3.12", 4358 | "@types/istanbul-lib-coverage": "^2.0.1", 4359 | "convert-source-map": "^1.6.0" 4360 | }, 4361 | "engines": { 4362 | "node": ">=10.12.0" 4363 | } 4364 | }, 4365 | "node_modules/v8-to-istanbul/node_modules/convert-source-map": { 4366 | "version": "1.9.0", 4367 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 4368 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 4369 | "dev": true 4370 | }, 4371 | "node_modules/verror": { 4372 | "version": "1.10.0", 4373 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 4374 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 4375 | "dev": true, 4376 | "engines": [ 4377 | "node >=0.6.0" 4378 | ], 4379 | "dependencies": { 4380 | "assert-plus": "^1.0.0", 4381 | "core-util-is": "1.0.2", 4382 | "extsprintf": "^1.2.0" 4383 | } 4384 | }, 4385 | "node_modules/walker": { 4386 | "version": "1.0.8", 4387 | "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", 4388 | "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", 4389 | "dev": true, 4390 | "dependencies": { 4391 | "makeerror": "1.0.12" 4392 | } 4393 | }, 4394 | "node_modules/which": { 4395 | "version": "2.0.2", 4396 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 4397 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 4398 | "dev": true, 4399 | "dependencies": { 4400 | "isexe": "^2.0.0" 4401 | }, 4402 | "bin": { 4403 | "node-which": "bin/node-which" 4404 | }, 4405 | "engines": { 4406 | "node": ">= 8" 4407 | } 4408 | }, 4409 | "node_modules/wrap-ansi": { 4410 | "version": "7.0.0", 4411 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4412 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4413 | "dev": true, 4414 | "dependencies": { 4415 | "ansi-styles": "^4.0.0", 4416 | "string-width": "^4.1.0", 4417 | "strip-ansi": "^6.0.0" 4418 | }, 4419 | "engines": { 4420 | "node": ">=10" 4421 | }, 4422 | "funding": { 4423 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 4424 | } 4425 | }, 4426 | "node_modules/wrappy": { 4427 | "version": "1.0.2", 4428 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4429 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 4430 | "dev": true 4431 | }, 4432 | "node_modules/write-file-atomic": { 4433 | "version": "4.0.2", 4434 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", 4435 | "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", 4436 | "dev": true, 4437 | "dependencies": { 4438 | "imurmurhash": "^0.1.4", 4439 | "signal-exit": "^3.0.7" 4440 | }, 4441 | "engines": { 4442 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 4443 | } 4444 | }, 4445 | "node_modules/y18n": { 4446 | "version": "5.0.8", 4447 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4448 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4449 | "dev": true, 4450 | "engines": { 4451 | "node": ">=10" 4452 | } 4453 | }, 4454 | "node_modules/yallist": { 4455 | "version": "3.1.1", 4456 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 4457 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 4458 | "dev": true 4459 | }, 4460 | "node_modules/yargs": { 4461 | "version": "17.7.2", 4462 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 4463 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 4464 | "dev": true, 4465 | "dependencies": { 4466 | "cliui": "^8.0.1", 4467 | "escalade": "^3.1.1", 4468 | "get-caller-file": "^2.0.5", 4469 | "require-directory": "^2.1.1", 4470 | "string-width": "^4.2.3", 4471 | "y18n": "^5.0.5", 4472 | "yargs-parser": "^21.1.1" 4473 | }, 4474 | "engines": { 4475 | "node": ">=12" 4476 | } 4477 | }, 4478 | "node_modules/yargs-parser": { 4479 | "version": "21.1.1", 4480 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 4481 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 4482 | "dev": true, 4483 | "engines": { 4484 | "node": ">=12" 4485 | } 4486 | }, 4487 | "node_modules/yocto-queue": { 4488 | "version": "0.1.0", 4489 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4490 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4491 | "dev": true, 4492 | "engines": { 4493 | "node": ">=10" 4494 | }, 4495 | "funding": { 4496 | "url": "https://github.com/sponsors/sindresorhus" 4497 | } 4498 | } 4499 | } 4500 | } 4501 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsonrpc-ts", 3 | "version": "0.3.0", 4 | "description": "Strongly Typed Fast and lightweight JSON RPC 2.0 Client for Nodejs", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "jest --config jest.json", 8 | "test:watch": "jest --watch --config=jest.json", 9 | "test:coverage": "jest --config=jest.json --coverage --coverageDirectory=coverage", 10 | "build": "./scripts/build.sh", 11 | "npm:publish": "cd dist && npm publish" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/shekohex/jsonrpc-ts.git" 16 | }, 17 | "author": "Shady Khalifa ", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/shekohex/jsonrpc-ts/issues" 21 | }, 22 | "homepage": "https://github.com/shekohex/jsonrpc-ts#readme", 23 | "devDependencies": { 24 | "@types/jest": "^24.9.1", 25 | "@types/node": "^12.12.48", 26 | "coveralls": "^3.1.0", 27 | "http-jsonrpc-server": "^1.1.0", 28 | "jest": "^29.7.0", 29 | "ts-jest": "^29.1.1" 30 | }, 31 | "dependencies": { 32 | "axios": "^1.5.1", 33 | "typescript": "^5.2" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # A basic script to build and compile the typescript files using tsc 3 | 4 | # Set an error handler 5 | trap onExit EXIT 6 | 7 | # printing the simple stack trace 8 | onExit() { 9 | while caller $((n++)); 10 | do :; 11 | done; 12 | } 13 | 14 | build() { 15 | echo 'Start building..' 16 | # Run tsc 17 | tsc 18 | echo 'tsc exist with status code:' $? 19 | echo 'Copying Other files..' 20 | cp -rf package.json dist 21 | cp -rf README.md dist 22 | echo 'Done.' 23 | echo '--------' 24 | } 25 | 26 | build -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './rpc-client'; 2 | export * from './rpc-error'; 3 | export * from './rpc-error-codes.enum'; 4 | export * from './interfaces'; -------------------------------------------------------------------------------- /src/interfaces/index.ts: -------------------------------------------------------------------------------- 1 | export * from './rpc-client-options.interface'; 2 | export * from './rpc-request.interface'; 3 | export * from './rpc-response-error.interface'; 4 | export * from './rpc-response.interface'; -------------------------------------------------------------------------------- /src/interfaces/rpc-client-options.interface.ts: -------------------------------------------------------------------------------- 1 | import { AxiosRequestConfig } from 'axios'; 2 | 3 | export interface RpcClientOptions extends AxiosRequestConfig { 4 | /** 5 | * `url` is the server URL that will be used for the request 6 | */ 7 | url: string; 8 | /** 9 | * `auth` indicates that HTTP Basic auth should be used, and supplies credentials. 10 | * This will set an `Authorization` header, overwriting any existing 11 | * `Authorization` custom headers you have set using `headers`. 12 | */ 13 | auth?: { 14 | username: string; 15 | password: string; 16 | }; 17 | /** 18 | * Extend the headers sent by the client 19 | */ 20 | headers?: any; 21 | /** 22 | * `timeout` specifies the number of milliseconds before the request times out, 23 | * Automatically causes the request to abort 24 | */ 25 | timeout?: number; 26 | /** 27 | * `responseEncoding` indicates encoding to use for decoding responses. 28 | */ 29 | responseEncoding?: string | 'utf8'; 30 | } 31 | -------------------------------------------------------------------------------- /src/interfaces/rpc-request.interface.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * A rpc call is represented by sending a Request object to a Server. 3 | */ 4 | export interface RpcRequest { 5 | /** 6 | * A String specifying the version of the JSON-RPC protocol. **MUST** be exactly "2.0". 7 | */ 8 | jsonrpc: '2.0'; 9 | 10 | /** 11 | * A String containing the name of the method to be invoked. 12 | */ 13 | method: TMethod; 14 | 15 | /** 16 | * A Structured value that holds the parameter values 17 | * to be used during the invocation of the method. 18 | */ 19 | params?: TParam; 20 | 21 | /** 22 | * An identifier established by the Client that **MUST** contain a `String`, `Number`, 23 | * or `NULL` value if included. 24 | * If it is not included it is assumed to be a notification. 25 | * The value **SHOULD** normally not be Null and Numbers **SHOULD NOT** contain fractional parts 26 | */ 27 | id?: string | number | null; 28 | } 29 | -------------------------------------------------------------------------------- /src/interfaces/rpc-response-error.interface.ts: -------------------------------------------------------------------------------- 1 | import { RpcErrorCode } from '../rpc-error-codes.enum'; 2 | 3 | /** 4 | * When a rpc call encounters an error, 5 | * the Response Object MUST contain the error member with a value that is that object 6 | */ 7 | export interface RpcResponseError { 8 | /** 9 | * A Number that indicates the error type that occurred. 10 | */ 11 | code: number | RpcErrorCode; 12 | /** 13 | * A String providing a short description of the error. 14 | */ 15 | message: string; 16 | /** 17 | * A Primitive or Structured value that contains additional information about the error. 18 | * The value of this member is defined by the Server 19 | * (e.g. detailed error information, nested errors etc.). 20 | */ 21 | data?: TErrorData; 22 | } 23 | -------------------------------------------------------------------------------- /src/interfaces/rpc-response.interface.ts: -------------------------------------------------------------------------------- 1 | import { RpcResponseError } from './rpc-response-error.interface'; 2 | 3 | /** 4 | * When a rpc call is made, the Server **MUST** reply with a Response 5 | * except for in the case of Notifications. 6 | * The Response is expressed as a single JSON Object 7 | */ 8 | export interface RpcResponse { 9 | /** 10 | * A String specifying the version of the JSON-RPC protocol. 11 | * **MUST** be exactly "2.0". 12 | */ 13 | jsonrpc: '2.0'; 14 | 15 | /** 16 | * This member is **REQUIRED** on success. 17 | * This member **MUST NOT** exist if there was an error invoking the method. 18 | * The value of this member is determined by the method invoked on the Server. 19 | */ 20 | result?: TResult; 21 | 22 | /** 23 | * This member is REQUIRED on error. 24 | * This member MUST NOT exist if there was no error triggered during invocation. 25 | * The value for this member MUST be an Object of Type `RpcResponseError`. 26 | */ 27 | error?: RpcResponseError; 28 | 29 | /** 30 | * An identifier established by the Client that **MUST** contain a `String`, `Number`, 31 | * or `NULL` value if included. 32 | * It **MUST** be the same as the value of the id member in the Request Object. 33 | * If there was an error 34 | * in detecting the `id` in the Request object (e.g. `Parse error`/`Invalid Request`) 35 | * it **MUST** be `Null`. 36 | */ 37 | id: string | number | null; 38 | } 39 | -------------------------------------------------------------------------------- /src/rpc-client.ts: -------------------------------------------------------------------------------- 1 | import Axios, { AxiosInstance, AxiosResponse } from 'axios'; 2 | import { RpcClientOptions, RpcRequest, RpcResponse } from './interfaces'; 3 | import { RpcError } from './rpc-error'; 4 | 5 | type RpcBatchRequest = Array>; 6 | type RpcBatchResponse = Array>; 7 | type ReturnTypeOfMethod = T extends (...args: Array) => any ? ReturnType : any; 8 | type ReturnTypeOfMethodIfExists = S extends keyof T ? ReturnTypeOfMethod : any; 9 | type MethodParams = T extends (...args: infer P) => any ? P[0] : T; 10 | type MethodParamsIfExists = S extends keyof T ? MethodParams : S; 11 | export class RpcClient { 12 | private readonly client: AxiosInstance = Axios; 13 | 14 | constructor(private readonly options: RpcClientOptions) {} 15 | /** 16 | * Make JSON RPC Batch Request of the same method 17 | * @throws {AxiosError | RpcError} http/rpc error 18 | */ 19 | public async makeBatchRequest( 20 | requests: RpcBatchRequest, 21 | ): Promise>> { 22 | const response = await this.client.post>( 23 | this.options.url, 24 | requests, 25 | this.options, 26 | ); 27 | // TODO: Handle Batch Request errors ! 28 | // if (response.data.error) { 29 | // throw new RpcError(response.data.error); 30 | // } 31 | return response; 32 | } 33 | 34 | /** 35 | * Make JSON RPC Request 36 | * @throws {AxiosError | RpcError} http/rpc error 37 | */ 38 | public async makeRequest( 39 | request: RpcRequest>, 40 | ): Promise, TError>>> { 41 | const response = await this.client.post< 42 | RpcResponse, TError> 43 | >(this.options.url, request, this.options); 44 | if (response.data.error) { 45 | throw new RpcError(response.data.error); 46 | } 47 | return response; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/rpc-error-codes.enum.ts: -------------------------------------------------------------------------------- 1 | export enum RpcErrorCode { 2 | /** 3 | * Invalid JSON was received by the server. 4 | * or An error occurred on the server while parsing the JSON text. 5 | */ 6 | PARSE_ERROR = -32700, 7 | /** 8 | * The JSON sent is not a valid Request object. 9 | */ 10 | INVALID_REQUEST = -32600, 11 | /** 12 | * The method does not exist / is not available. 13 | */ 14 | METHOD_NOT_FOUND = -32601, 15 | /** 16 | * Invalid method parameter(s). 17 | */ 18 | INVALID_PARAMS = -32602, 19 | /** 20 | * Internal JSON-RPC error. 21 | */ 22 | INTERNAL_ERROR = -32603, 23 | /** 24 | * Reserved for implementation-defined server-errors. 25 | */ 26 | SERVER_ERROR = -32000, 27 | } 28 | -------------------------------------------------------------------------------- /src/rpc-error.ts: -------------------------------------------------------------------------------- 1 | import { RpcResponseError } from './interfaces'; 2 | import { RpcErrorCode } from './rpc-error-codes.enum'; 3 | 4 | export class RpcError extends Error { 5 | constructor(private readonly err: RpcResponseError) { 6 | super(); 7 | super.message = err.message; 8 | } 9 | 10 | public getCode(): RpcErrorCode | number { 11 | return this.err.code; 12 | } 13 | 14 | public getData(): TError | undefined { 15 | return this.err.data; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /tests/rpc-client.spec.ts: -------------------------------------------------------------------------------- 1 | import * as RpcServer from 'http-jsonrpc-server'; 2 | import { RpcClientOptions } from '../src/interfaces'; 3 | import { RpcClient } from '../src/rpc-client'; 4 | import { RpcError } from '../src/rpc-error'; 5 | import { RpcResponseError } from '../src/interfaces'; 6 | import { RpcErrorCode } from '../src/rpc-error-codes.enum'; 7 | 8 | describe('RpcClient', () => { 9 | // A scheme describe our rpc. 10 | interface MyRpcMethods { 11 | // sum is a rpc method that accepts 2 args both of type number. 12 | sum: [number, number]; 13 | sumWithReturnType: ({ x, y }: { x: number; y: number }) => number; 14 | sumNamedParams: { 15 | x: number; 16 | y: number; 17 | }; 18 | noMethod: unknown; 19 | invalidParms: string; 20 | serverError: undefined; 21 | } 22 | let rpcClient: RpcClient; 23 | let rpcServer: any; 24 | 25 | beforeAll(async () => { 26 | const sum = ([x, y]: [number, number]) => x + y; 27 | const sumNamedParams = ({ x, y }: { x: number; y: number }) => x + y; 28 | const sumWithReturnType = sumNamedParams; 29 | const invalidParms = s => s.length; 30 | const serverError = () => { 31 | throw new Error('Server Error'); 32 | }; 33 | 34 | rpcServer = new RpcServer({ 35 | methods: { 36 | sum, 37 | sumNamedParams, 38 | sumWithReturnType, 39 | invalidParms, 40 | serverError 41 | }, 42 | }); 43 | await rpcServer.listen(9090, 'localhost'); 44 | }); 45 | 46 | beforeEach(async () => { 47 | const opts: RpcClientOptions = { 48 | url: 'http://localhost:9090/', 49 | headers: { 50 | 'content-type': 'application/json', 51 | accept: 'application/json', 52 | }, 53 | }; 54 | rpcClient = new RpcClient(opts); 55 | }); 56 | 57 | afterAll(async () => { 58 | // Close the server. 59 | await rpcServer.close(); 60 | }); 61 | 62 | it('should make request', async () => { 63 | const { 64 | data: { result }, 65 | } = await rpcClient.makeRequest({ 66 | method: 'sumWithReturnType', 67 | params: { x: 3, y: 2 }, 68 | id: 123, 69 | jsonrpc: '2.0', 70 | }); 71 | expect(result).toEqual(5); 72 | }); 73 | 74 | it('should make request with named params', async () => { 75 | const { 76 | data: { result }, 77 | } = await rpcClient.makeRequest({ 78 | method: 'sumNamedParams', 79 | params: { x: 1, y: 4 }, 80 | id: 123, 81 | jsonrpc: '2.0', 82 | }); 83 | expect(result).toEqual(5); 84 | }); 85 | 86 | it('should make request', async () => { 87 | const { 88 | data: { result }, 89 | } = await rpcClient.makeRequest({ 90 | method: 'sum', 91 | params: [3, 2], 92 | id: 123, 93 | jsonrpc: '2.0', 94 | }); 95 | expect(result).toEqual(5); 96 | }); 97 | 98 | it('should throw error `method not found`', async () => { 99 | const call = rpcClient.makeRequest({ 100 | method: 'noMethod', 101 | id: 1, 102 | jsonrpc: '2.0', 103 | }); 104 | await expect(call).rejects.toThrow(); 105 | await expect(call).rejects.toBeInstanceOf(RpcError); 106 | await expect(call).rejects.toHaveProperty('err', { 107 | code: RpcErrorCode.METHOD_NOT_FOUND, 108 | }); 109 | }); 110 | 111 | // I'm not sure of this test, althogth it passes ! 112 | it('should throw error `invalid params`', async () => { 113 | const call = rpcClient.makeRequest({ 114 | method: 'invalidParms', 115 | params: 1 as any, 116 | id: 12, 117 | jsonrpc: '2.0', 118 | }); 119 | await expect(call).rejects.toThrow(); 120 | await expect(call).rejects.toBeInstanceOf(RpcError); 121 | await expect(call).rejects.toHaveProperty('err', { 122 | code: RpcErrorCode.INVALID_PARAMS, 123 | }); 124 | }); 125 | 126 | it('should throw error `server error` with message', async () => { 127 | const call = rpcClient.makeRequest({ 128 | method: 'serverError', 129 | id: 1232, 130 | jsonrpc: '2.0', 131 | }); 132 | await expect(call).rejects.toThrow(); 133 | await expect(call).rejects.toBeInstanceOf(RpcError); 134 | await expect(call).rejects.toHaveProperty('err', { 135 | code: RpcErrorCode.SERVER_ERROR, 136 | message: 'Server Error', 137 | }); 138 | try { 139 | await call; 140 | } catch (error) { 141 | expect(error.getCode()).toEqual(RpcErrorCode.SERVER_ERROR); 142 | } 143 | }); 144 | 145 | // For this particular test we can't use the RpcServer instance because 146 | // it doesn't expose a way to provoke an rpcError with data. 147 | it('should expose a data property on RpcError', async () => { 148 | const data = {test: "test"} 149 | const rpcError: RpcResponseError = { 150 | code: RpcErrorCode.SERVER_ERROR, 151 | message: 'Server Error', 152 | data: data 153 | } 154 | const error = new RpcError(rpcError) 155 | expect(error.getData()).toEqual(data); 156 | }); 157 | 158 | it('should make batch requests', async () => { 159 | const { data } = await rpcClient.makeBatchRequest([ 160 | { 161 | method: 'sum', 162 | params: [3, 1], 163 | id: 123, 164 | jsonrpc: '2.0', 165 | }, 166 | { 167 | method: 'sum', 168 | params: [3, 2], 169 | id: 124, 170 | jsonrpc: '2.0', 171 | }, 172 | ]); 173 | const [res1, res2] = data; 174 | expect(res1.result).toEqual(4); 175 | expect(res2.result).toEqual(5); 176 | }); 177 | }); 178 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": true, 5 | "noImplicitAny": true, 6 | "noImplicitThis": true, 7 | "alwaysStrict": true, 8 | "noImplicitReturns": true, 9 | "skipLibCheck": true, 10 | "pretty": true, 11 | "noUnusedLocals": true, 12 | "noUnusedParameters": true, 13 | "strictNullChecks": true, 14 | "removeComments": false, 15 | "noLib": false, 16 | "emitDecoratorMetadata": true, 17 | "experimentalDecorators": true, 18 | "target": "es2016", 19 | "inlineSourceMap": false, 20 | "inlineSources": false, 21 | "sourceMap": true, 22 | "allowJs": false, 23 | "lib": ["esnext"], 24 | "outDir": "./dist", 25 | "baseUrl": "./src" 26 | }, 27 | "include": ["src/**/*"], 28 | "exclude": ["node_modules", "**/*.spec.ts"] 29 | } 30 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "warning", 3 | "extends": ["tslint:recommended"], 4 | "jsRules": { 5 | "no-unused-expression": true 6 | }, 7 | "linterOptions": { 8 | "exclude": ["src/generated/**/*.ts"] 9 | }, 10 | "rules": { 11 | "eofline": false, 12 | "quotemark": [true, "single"], 13 | "indent": true, 14 | "member-access": [true], 15 | "ordered-imports": [true], 16 | "max-line-length": [true, 100], 17 | "member-ordering": [true], 18 | "curly": false, 19 | "interface-name": [false], 20 | "no-empty-interface": true, 21 | "no-empty": false, 22 | "arrow-parens": false, 23 | "object-literal-sort-keys": false, 24 | "no-unused-expression": true, 25 | "max-classes-per-file": [false, 10], 26 | "variable-name": [true], 27 | "one-line": [false], 28 | "array-type": [true, "generic"], 29 | "object-literal-key-quotes": false, 30 | "one-variable-per-declaration": [false] 31 | }, 32 | "rulesDirectory": [] 33 | } 34 | --------------------------------------------------------------------------------