├── .editorconfig ├── .github ├── dependabot.yml └── workflows │ └── workflow-1.yml ├── .gitignore ├── LICENSE.txt ├── README.md ├── jest.config.js ├── package-lock.json ├── package.json ├── src └── index.js └── test └── index.spec.js /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | insert_final_newline = true 3 | charset = utf-8 4 | indent_style = space 5 | indent_size = 2 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'npm' 4 | directory: '/' 5 | schedule: 6 | interval: 'monthly' 7 | ignore: 8 | - dependency-name: '*' 9 | update-types: 10 | - 'version-update:semver-minor' 11 | - 'version-update:semver-patch' 12 | -------------------------------------------------------------------------------- /.github/workflows/workflow-1.yml: -------------------------------------------------------------------------------- 1 | name: 'Travis CI replacement' 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - '**' 7 | 8 | jobs: 9 | build-job: 10 | runs-on: 'ubuntu-latest' 11 | 12 | strategy: 13 | matrix: 14 | node-version: ['14.x', '16.x', '18.x', '20.x', '22.x'] 15 | 16 | steps: 17 | - uses: 'actions/checkout@v2' 18 | 19 | - name: 'Use Node.js ${{ matrix.node-version }}' 20 | uses: 'actions/setup-node@v1' 21 | with: 22 | node-version: '${{ matrix.node-version }}' 23 | 24 | - name: 'Actual npm tasks' 25 | run: | 26 | npm install 27 | npm run test 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | coverage 3 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 qntm 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 | # hyperoperate 2 | 3 | This module exports the [hyperoperation](https://en.wikipedia.org/wiki/Hyperoperation) function. This recursive function generalises the binary operations of addition (*n* = 1), multiplication (*n* = 2) and exponentiation (*n* = 3) to arbitrary non-negative *n* (tetration, pentation, hexation, ...) 4 | 5 | > *H*(0, *a*, *b*) = *b* + 1
6 | > *H*(1, *a*, 0) = *a*
7 | > *H*(2, *a*, 0) = 0
8 | > *H*(*n*, *a*, 0) = 1
9 | > *H*(*n*, *a*, *b*) = *H*(*n* - 1, *a*, *H*(*n*, *a*, *b* - 1))
10 | 11 | `H` accepts only non-negative integers `n`, `a` and `b`. 12 | 13 | Note that for the purposes of this module, 0 to the power of 0 is 1. 14 | 15 | ## Installation 16 | 17 | ```sh 18 | npm install hyperoperate 19 | ``` 20 | 21 | ## Usage 22 | 23 | ```js 24 | import H from 'hyperoperate' 25 | 26 | // n = 0: successor (`a` is ignored) 27 | H(0, 1000, 3) // 4 28 | 29 | // n = 1: addition 30 | H(1, 33, 44) // 77 31 | 32 | // n = 2: multiplication 33 | H(2, 6, 7) // 42 34 | 35 | // n = 3: exponentiation 36 | H(3, 2, 10) // 1024 37 | 38 | // n = 4: tetration 39 | H(4, 3, 3) // 3^^3 = 3^3^3 = 7625597484987 40 | 41 | // n = 5: pentation 42 | H(5, 2, 3) // 2^^^3 = 2^^2^^2 = 2^^4 = 2^2^2^2 = 65536 43 | 44 | // and so on... 45 | ``` 46 | 47 | The result is rounded to the nearest JavaScript number. If the result is too large to express as a JavaScript number, `Infinity` is returned. 48 | 49 | `hyperoperate` will also accept a trio of `BigInt`s. In this case, the return value is also a `BigInt`: 50 | 51 | ```js 52 | H(4n, 5n, 3n) // 5^^3 = 5^5^5 = 5^3125 = 1911...03125n 53 | ``` 54 | 55 | `hyperoperate` throws an exception if passed a mixture of regular JavaScript numbers and `BigInt`s. If the result is too large to express as a `BigInt`, a `RangeError` is thrown. 56 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | verbose: true, 3 | bail: false, 4 | collectCoverage: true, 5 | collectCoverageFrom: [ 6 | 'src/*.js', 7 | '!src/*.spec.js' 8 | ], 9 | coverageThreshold: { 10 | global: { 11 | branches: 100, 12 | functions: 100, 13 | lines: 100, 14 | statements: 100 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hyperoperate", 3 | "version": "2.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@bcoe/v8-coverage": { 8 | "version": "0.2.3", 9 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 10 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 11 | "dev": true 12 | }, 13 | "@eslint/eslintrc": { 14 | "version": "1.2.2", 15 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", 16 | "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", 17 | "dev": true, 18 | "requires": { 19 | "ajv": "^6.12.4", 20 | "debug": "^4.3.2", 21 | "espree": "^9.3.1", 22 | "globals": "^13.9.0", 23 | "ignore": "^5.2.0", 24 | "import-fresh": "^3.2.1", 25 | "js-yaml": "^4.1.0", 26 | "minimatch": "^3.0.4", 27 | "strip-json-comments": "^3.1.1" 28 | }, 29 | "dependencies": { 30 | "argparse": { 31 | "version": "2.0.1", 32 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 33 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 34 | "dev": true 35 | }, 36 | "globals": { 37 | "version": "13.13.0", 38 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", 39 | "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", 40 | "dev": true, 41 | "requires": { 42 | "type-fest": "^0.20.2" 43 | } 44 | }, 45 | "js-yaml": { 46 | "version": "4.1.0", 47 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 48 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 49 | "dev": true, 50 | "requires": { 51 | "argparse": "^2.0.1" 52 | } 53 | }, 54 | "type-fest": { 55 | "version": "0.20.2", 56 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 57 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 58 | "dev": true 59 | } 60 | } 61 | }, 62 | "@humanwhocodes/config-array": { 63 | "version": "0.9.5", 64 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", 65 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", 66 | "dev": true, 67 | "requires": { 68 | "@humanwhocodes/object-schema": "^1.2.1", 69 | "debug": "^4.1.1", 70 | "minimatch": "^3.0.4" 71 | } 72 | }, 73 | "@humanwhocodes/object-schema": { 74 | "version": "1.2.1", 75 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 76 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 77 | "dev": true 78 | }, 79 | "@isaacs/cliui": { 80 | "version": "8.0.2", 81 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 82 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 83 | "dev": true, 84 | "requires": { 85 | "string-width": "^5.1.2", 86 | "string-width-cjs": "npm:string-width@^4.2.0", 87 | "strip-ansi": "^7.0.1", 88 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 89 | "wrap-ansi": "^8.1.0", 90 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 91 | }, 92 | "dependencies": { 93 | "ansi-regex": { 94 | "version": "6.0.1", 95 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 96 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 97 | "dev": true 98 | }, 99 | "ansi-styles": { 100 | "version": "6.2.1", 101 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 102 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 103 | "dev": true 104 | }, 105 | "emoji-regex": { 106 | "version": "9.2.2", 107 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 108 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 109 | "dev": true 110 | }, 111 | "string-width": { 112 | "version": "5.1.2", 113 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 114 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 115 | "dev": true, 116 | "requires": { 117 | "eastasianwidth": "^0.2.0", 118 | "emoji-regex": "^9.2.2", 119 | "strip-ansi": "^7.0.1" 120 | } 121 | }, 122 | "string-width-cjs": { 123 | "version": "npm:string-width@4.2.3", 124 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 125 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 126 | "dev": true, 127 | "requires": { 128 | "emoji-regex": "^8.0.0", 129 | "is-fullwidth-code-point": "^3.0.0", 130 | "strip-ansi": "^6.0.1" 131 | }, 132 | "dependencies": { 133 | "ansi-regex": { 134 | "version": "5.0.1", 135 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 136 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 137 | "dev": true 138 | }, 139 | "emoji-regex": { 140 | "version": "8.0.0", 141 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 142 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 143 | "dev": true 144 | }, 145 | "strip-ansi": { 146 | "version": "6.0.1", 147 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 148 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 149 | "dev": true, 150 | "requires": { 151 | "ansi-regex": "^5.0.1" 152 | } 153 | } 154 | } 155 | }, 156 | "strip-ansi": { 157 | "version": "7.1.0", 158 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 159 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 160 | "dev": true, 161 | "requires": { 162 | "ansi-regex": "^6.0.1" 163 | } 164 | }, 165 | "strip-ansi-cjs": { 166 | "version": "npm:strip-ansi@6.0.1", 167 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 168 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 169 | "dev": true, 170 | "requires": { 171 | "ansi-regex": "^5.0.1" 172 | }, 173 | "dependencies": { 174 | "ansi-regex": { 175 | "version": "5.0.1", 176 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 177 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 178 | "dev": true 179 | } 180 | } 181 | }, 182 | "wrap-ansi": { 183 | "version": "8.1.0", 184 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 185 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 186 | "dev": true, 187 | "requires": { 188 | "ansi-styles": "^6.1.0", 189 | "string-width": "^5.0.1", 190 | "strip-ansi": "^7.0.1" 191 | } 192 | }, 193 | "wrap-ansi-cjs": { 194 | "version": "npm:wrap-ansi@7.0.0", 195 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 196 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 197 | "dev": true, 198 | "requires": { 199 | "ansi-styles": "^4.0.0", 200 | "string-width": "^4.1.0", 201 | "strip-ansi": "^6.0.0" 202 | }, 203 | "dependencies": { 204 | "ansi-regex": { 205 | "version": "5.0.1", 206 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 207 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 208 | "dev": true 209 | }, 210 | "ansi-styles": { 211 | "version": "4.3.0", 212 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 213 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 214 | "dev": true, 215 | "requires": { 216 | "color-convert": "^2.0.1" 217 | } 218 | }, 219 | "emoji-regex": { 220 | "version": "8.0.0", 221 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 222 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 223 | "dev": true 224 | }, 225 | "string-width": { 226 | "version": "4.2.3", 227 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 228 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 229 | "dev": true, 230 | "requires": { 231 | "emoji-regex": "^8.0.0", 232 | "is-fullwidth-code-point": "^3.0.0", 233 | "strip-ansi": "^6.0.1" 234 | } 235 | }, 236 | "strip-ansi": { 237 | "version": "6.0.1", 238 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 239 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 240 | "dev": true, 241 | "requires": { 242 | "ansi-regex": "^5.0.1" 243 | } 244 | } 245 | } 246 | } 247 | } 248 | }, 249 | "@istanbuljs/schema": { 250 | "version": "0.1.3", 251 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 252 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 253 | "dev": true 254 | }, 255 | "@jridgewell/resolve-uri": { 256 | "version": "3.1.2", 257 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 258 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 259 | "dev": true 260 | }, 261 | "@jridgewell/sourcemap-codec": { 262 | "version": "1.4.15", 263 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 264 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 265 | "dev": true 266 | }, 267 | "@jridgewell/trace-mapping": { 268 | "version": "0.3.25", 269 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 270 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 271 | "dev": true, 272 | "requires": { 273 | "@jridgewell/resolve-uri": "^3.1.0", 274 | "@jridgewell/sourcemap-codec": "^1.4.14" 275 | } 276 | }, 277 | "@pkgjs/parseargs": { 278 | "version": "0.11.0", 279 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 280 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 281 | "dev": true, 282 | "optional": true 283 | }, 284 | "@types/istanbul-lib-coverage": { 285 | "version": "2.0.6", 286 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", 287 | "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", 288 | "dev": true 289 | }, 290 | "@types/json5": { 291 | "version": "0.0.29", 292 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 293 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 294 | "dev": true 295 | }, 296 | "acorn-jsx": { 297 | "version": "5.3.2", 298 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 299 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 300 | "dev": true 301 | }, 302 | "ajv": { 303 | "version": "6.12.6", 304 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 305 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 306 | "dev": true, 307 | "requires": { 308 | "fast-deep-equal": "^3.1.1", 309 | "fast-json-stable-stringify": "^2.0.0", 310 | "json-schema-traverse": "^0.4.1", 311 | "uri-js": "^4.2.2" 312 | } 313 | }, 314 | "ansi-colors": { 315 | "version": "4.1.3", 316 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 317 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 318 | "dev": true 319 | }, 320 | "ansi-regex": { 321 | "version": "5.0.1", 322 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 323 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 324 | "dev": true 325 | }, 326 | "ansi-styles": { 327 | "version": "4.3.0", 328 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 329 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 330 | "dev": true, 331 | "requires": { 332 | "color-convert": "^2.0.1" 333 | } 334 | }, 335 | "anymatch": { 336 | "version": "3.1.3", 337 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 338 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 339 | "dev": true, 340 | "requires": { 341 | "normalize-path": "^3.0.0", 342 | "picomatch": "^2.0.4" 343 | } 344 | }, 345 | "argparse": { 346 | "version": "2.0.1", 347 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 348 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 349 | "dev": true 350 | }, 351 | "array-includes": { 352 | "version": "3.1.4", 353 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", 354 | "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", 355 | "dev": true, 356 | "requires": { 357 | "call-bind": "^1.0.2", 358 | "define-properties": "^1.1.3", 359 | "es-abstract": "^1.19.1", 360 | "get-intrinsic": "^1.1.1", 361 | "is-string": "^1.0.7" 362 | } 363 | }, 364 | "array.prototype.flat": { 365 | "version": "1.3.0", 366 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", 367 | "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", 368 | "dev": true, 369 | "requires": { 370 | "call-bind": "^1.0.2", 371 | "define-properties": "^1.1.3", 372 | "es-abstract": "^1.19.2", 373 | "es-shim-unscopables": "^1.0.0" 374 | } 375 | }, 376 | "array.prototype.flatmap": { 377 | "version": "1.3.0", 378 | "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", 379 | "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", 380 | "dev": true, 381 | "requires": { 382 | "call-bind": "^1.0.2", 383 | "define-properties": "^1.1.3", 384 | "es-abstract": "^1.19.2", 385 | "es-shim-unscopables": "^1.0.0" 386 | } 387 | }, 388 | "balanced-match": { 389 | "version": "1.0.2", 390 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 391 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 392 | "dev": true 393 | }, 394 | "binary-extensions": { 395 | "version": "2.3.0", 396 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 397 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 398 | "dev": true 399 | }, 400 | "brace-expansion": { 401 | "version": "1.1.11", 402 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 403 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 404 | "dev": true, 405 | "requires": { 406 | "balanced-match": "^1.0.0", 407 | "concat-map": "0.0.1" 408 | } 409 | }, 410 | "braces": { 411 | "version": "3.0.3", 412 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 413 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 414 | "dev": true, 415 | "requires": { 416 | "fill-range": "^7.1.1" 417 | } 418 | }, 419 | "browser-stdout": { 420 | "version": "1.3.1", 421 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 422 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 423 | "dev": true 424 | }, 425 | "builtins": { 426 | "version": "4.1.0", 427 | "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz", 428 | "integrity": "sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w==", 429 | "dev": true, 430 | "requires": { 431 | "semver": "^7.0.0" 432 | }, 433 | "dependencies": { 434 | "semver": { 435 | "version": "7.3.7", 436 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 437 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 438 | "dev": true, 439 | "requires": { 440 | "lru-cache": "^6.0.0" 441 | } 442 | } 443 | } 444 | }, 445 | "c8": { 446 | "version": "10.1.2", 447 | "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.2.tgz", 448 | "integrity": "sha512-Qr6rj76eSshu5CgRYvktW0uM0CFY0yi4Fd5D0duDXO6sYinyopmftUiJVuzBQxQcwQLor7JWDVRP+dUfCmzgJw==", 449 | "dev": true, 450 | "requires": { 451 | "@bcoe/v8-coverage": "^0.2.3", 452 | "@istanbuljs/schema": "^0.1.3", 453 | "find-up": "^5.0.0", 454 | "foreground-child": "^3.1.1", 455 | "istanbul-lib-coverage": "^3.2.0", 456 | "istanbul-lib-report": "^3.0.1", 457 | "istanbul-reports": "^3.1.6", 458 | "test-exclude": "^7.0.1", 459 | "v8-to-istanbul": "^9.0.0", 460 | "yargs": "^17.7.2", 461 | "yargs-parser": "^21.1.1" 462 | }, 463 | "dependencies": { 464 | "cliui": { 465 | "version": "8.0.1", 466 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 467 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 468 | "dev": true, 469 | "requires": { 470 | "string-width": "^4.2.0", 471 | "strip-ansi": "^6.0.1", 472 | "wrap-ansi": "^7.0.0" 473 | } 474 | }, 475 | "yargs": { 476 | "version": "17.7.2", 477 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 478 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 479 | "dev": true, 480 | "requires": { 481 | "cliui": "^8.0.1", 482 | "escalade": "^3.1.1", 483 | "get-caller-file": "^2.0.5", 484 | "require-directory": "^2.1.1", 485 | "string-width": "^4.2.3", 486 | "y18n": "^5.0.5", 487 | "yargs-parser": "^21.1.1" 488 | } 489 | }, 490 | "yargs-parser": { 491 | "version": "21.1.1", 492 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 493 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 494 | "dev": true 495 | } 496 | } 497 | }, 498 | "call-bind": { 499 | "version": "1.0.2", 500 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 501 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 502 | "dev": true, 503 | "requires": { 504 | "function-bind": "^1.1.1", 505 | "get-intrinsic": "^1.0.2" 506 | } 507 | }, 508 | "callsites": { 509 | "version": "3.1.0", 510 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 511 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 512 | "dev": true 513 | }, 514 | "camelcase": { 515 | "version": "6.3.0", 516 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 517 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 518 | "dev": true 519 | }, 520 | "chalk": { 521 | "version": "4.1.2", 522 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 523 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 524 | "dev": true, 525 | "requires": { 526 | "ansi-styles": "^4.1.0", 527 | "supports-color": "^7.1.0" 528 | } 529 | }, 530 | "chokidar": { 531 | "version": "3.6.0", 532 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 533 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 534 | "dev": true, 535 | "requires": { 536 | "anymatch": "~3.1.2", 537 | "braces": "~3.0.2", 538 | "fsevents": "~2.3.2", 539 | "glob-parent": "~5.1.2", 540 | "is-binary-path": "~2.1.0", 541 | "is-glob": "~4.0.1", 542 | "normalize-path": "~3.0.0", 543 | "readdirp": "~3.6.0" 544 | } 545 | }, 546 | "cliui": { 547 | "version": "7.0.4", 548 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 549 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 550 | "dev": true, 551 | "requires": { 552 | "string-width": "^4.2.0", 553 | "strip-ansi": "^6.0.0", 554 | "wrap-ansi": "^7.0.0" 555 | } 556 | }, 557 | "color-convert": { 558 | "version": "2.0.1", 559 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 560 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 561 | "dev": true, 562 | "requires": { 563 | "color-name": "~1.1.4" 564 | } 565 | }, 566 | "color-name": { 567 | "version": "1.1.4", 568 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 569 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 570 | "dev": true 571 | }, 572 | "concat-map": { 573 | "version": "0.0.1", 574 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 575 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 576 | "dev": true 577 | }, 578 | "convert-source-map": { 579 | "version": "2.0.0", 580 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 581 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 582 | "dev": true 583 | }, 584 | "cross-spawn": { 585 | "version": "7.0.3", 586 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 587 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 588 | "dev": true, 589 | "requires": { 590 | "path-key": "^3.1.0", 591 | "shebang-command": "^2.0.0", 592 | "which": "^2.0.1" 593 | } 594 | }, 595 | "debug": { 596 | "version": "4.3.3", 597 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 598 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 599 | "dev": true, 600 | "requires": { 601 | "ms": "2.1.2" 602 | } 603 | }, 604 | "decamelize": { 605 | "version": "4.0.0", 606 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 607 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 608 | "dev": true 609 | }, 610 | "deep-is": { 611 | "version": "0.1.4", 612 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 613 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 614 | "dev": true 615 | }, 616 | "define-properties": { 617 | "version": "1.1.4", 618 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 619 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 620 | "dev": true, 621 | "requires": { 622 | "has-property-descriptors": "^1.0.0", 623 | "object-keys": "^1.1.1" 624 | } 625 | }, 626 | "diff": { 627 | "version": "5.2.0", 628 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 629 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 630 | "dev": true 631 | }, 632 | "doctrine": { 633 | "version": "3.0.0", 634 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 635 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 636 | "dev": true, 637 | "requires": { 638 | "esutils": "^2.0.2" 639 | } 640 | }, 641 | "eastasianwidth": { 642 | "version": "0.2.0", 643 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 644 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 645 | "dev": true 646 | }, 647 | "emoji-regex": { 648 | "version": "8.0.0", 649 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 650 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 651 | "dev": true 652 | }, 653 | "error-ex": { 654 | "version": "1.3.2", 655 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 656 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 657 | "dev": true, 658 | "requires": { 659 | "is-arrayish": "^0.2.1" 660 | } 661 | }, 662 | "es-abstract": { 663 | "version": "1.19.5", 664 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", 665 | "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", 666 | "dev": true, 667 | "requires": { 668 | "call-bind": "^1.0.2", 669 | "es-to-primitive": "^1.2.1", 670 | "function-bind": "^1.1.1", 671 | "get-intrinsic": "^1.1.1", 672 | "get-symbol-description": "^1.0.0", 673 | "has": "^1.0.3", 674 | "has-symbols": "^1.0.3", 675 | "internal-slot": "^1.0.3", 676 | "is-callable": "^1.2.4", 677 | "is-negative-zero": "^2.0.2", 678 | "is-regex": "^1.1.4", 679 | "is-shared-array-buffer": "^1.0.2", 680 | "is-string": "^1.0.7", 681 | "is-weakref": "^1.0.2", 682 | "object-inspect": "^1.12.0", 683 | "object-keys": "^1.1.1", 684 | "object.assign": "^4.1.2", 685 | "string.prototype.trimend": "^1.0.4", 686 | "string.prototype.trimstart": "^1.0.4", 687 | "unbox-primitive": "^1.0.1" 688 | } 689 | }, 690 | "es-shim-unscopables": { 691 | "version": "1.0.0", 692 | "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", 693 | "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", 694 | "dev": true, 695 | "requires": { 696 | "has": "^1.0.3" 697 | } 698 | }, 699 | "es-to-primitive": { 700 | "version": "1.2.1", 701 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 702 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 703 | "dev": true, 704 | "requires": { 705 | "is-callable": "^1.1.4", 706 | "is-date-object": "^1.0.1", 707 | "is-symbol": "^1.0.2" 708 | } 709 | }, 710 | "escalade": { 711 | "version": "3.1.1", 712 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 713 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 714 | "dev": true 715 | }, 716 | "escape-string-regexp": { 717 | "version": "4.0.0", 718 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 719 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 720 | "dev": true 721 | }, 722 | "eslint": { 723 | "version": "8.14.0", 724 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", 725 | "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", 726 | "dev": true, 727 | "requires": { 728 | "@eslint/eslintrc": "^1.2.2", 729 | "@humanwhocodes/config-array": "^0.9.2", 730 | "ajv": "^6.10.0", 731 | "chalk": "^4.0.0", 732 | "cross-spawn": "^7.0.2", 733 | "debug": "^4.3.2", 734 | "doctrine": "^3.0.0", 735 | "escape-string-regexp": "^4.0.0", 736 | "eslint-scope": "^7.1.1", 737 | "eslint-utils": "^3.0.0", 738 | "eslint-visitor-keys": "^3.3.0", 739 | "espree": "^9.3.1", 740 | "esquery": "^1.4.0", 741 | "esutils": "^2.0.2", 742 | "fast-deep-equal": "^3.1.3", 743 | "file-entry-cache": "^6.0.1", 744 | "functional-red-black-tree": "^1.0.1", 745 | "glob-parent": "^6.0.1", 746 | "globals": "^13.6.0", 747 | "ignore": "^5.2.0", 748 | "import-fresh": "^3.0.0", 749 | "imurmurhash": "^0.1.4", 750 | "is-glob": "^4.0.0", 751 | "js-yaml": "^4.1.0", 752 | "json-stable-stringify-without-jsonify": "^1.0.1", 753 | "levn": "^0.4.1", 754 | "lodash.merge": "^4.6.2", 755 | "minimatch": "^3.0.4", 756 | "natural-compare": "^1.4.0", 757 | "optionator": "^0.9.1", 758 | "regexpp": "^3.2.0", 759 | "strip-ansi": "^6.0.1", 760 | "strip-json-comments": "^3.1.0", 761 | "text-table": "^0.2.0", 762 | "v8-compile-cache": "^2.0.3" 763 | }, 764 | "dependencies": { 765 | "argparse": { 766 | "version": "2.0.1", 767 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 768 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 769 | "dev": true 770 | }, 771 | "escape-string-regexp": { 772 | "version": "4.0.0", 773 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 774 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 775 | "dev": true 776 | }, 777 | "glob-parent": { 778 | "version": "6.0.2", 779 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 780 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 781 | "dev": true, 782 | "requires": { 783 | "is-glob": "^4.0.3" 784 | } 785 | }, 786 | "globals": { 787 | "version": "13.13.0", 788 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", 789 | "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", 790 | "dev": true, 791 | "requires": { 792 | "type-fest": "^0.20.2" 793 | } 794 | }, 795 | "js-yaml": { 796 | "version": "4.1.0", 797 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 798 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 799 | "dev": true, 800 | "requires": { 801 | "argparse": "^2.0.1" 802 | } 803 | }, 804 | "levn": { 805 | "version": "0.4.1", 806 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 807 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 808 | "dev": true, 809 | "requires": { 810 | "prelude-ls": "^1.2.1", 811 | "type-check": "~0.4.0" 812 | } 813 | }, 814 | "optionator": { 815 | "version": "0.9.1", 816 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 817 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 818 | "dev": true, 819 | "requires": { 820 | "deep-is": "^0.1.3", 821 | "fast-levenshtein": "^2.0.6", 822 | "levn": "^0.4.1", 823 | "prelude-ls": "^1.2.1", 824 | "type-check": "^0.4.0", 825 | "word-wrap": "^1.2.3" 826 | } 827 | }, 828 | "prelude-ls": { 829 | "version": "1.2.1", 830 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 831 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 832 | "dev": true 833 | }, 834 | "type-check": { 835 | "version": "0.4.0", 836 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 837 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 838 | "dev": true, 839 | "requires": { 840 | "prelude-ls": "^1.2.1" 841 | } 842 | }, 843 | "type-fest": { 844 | "version": "0.20.2", 845 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 846 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 847 | "dev": true 848 | } 849 | } 850 | }, 851 | "eslint-config-standard": { 852 | "version": "17.0.0", 853 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", 854 | "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", 855 | "dev": true 856 | }, 857 | "eslint-config-standard-jsx": { 858 | "version": "11.0.0", 859 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", 860 | "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", 861 | "dev": true 862 | }, 863 | "eslint-import-resolver-node": { 864 | "version": "0.3.6", 865 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 866 | "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 867 | "dev": true, 868 | "requires": { 869 | "debug": "^3.2.7", 870 | "resolve": "^1.20.0" 871 | }, 872 | "dependencies": { 873 | "debug": { 874 | "version": "3.2.7", 875 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 876 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 877 | "dev": true, 878 | "requires": { 879 | "ms": "^2.1.1" 880 | } 881 | } 882 | } 883 | }, 884 | "eslint-module-utils": { 885 | "version": "2.7.3", 886 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", 887 | "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", 888 | "dev": true, 889 | "requires": { 890 | "debug": "^3.2.7", 891 | "find-up": "^2.1.0" 892 | }, 893 | "dependencies": { 894 | "debug": { 895 | "version": "3.2.7", 896 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 897 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 898 | "dev": true, 899 | "requires": { 900 | "ms": "^2.1.1" 901 | } 902 | }, 903 | "find-up": { 904 | "version": "2.1.0", 905 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 906 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 907 | "dev": true, 908 | "requires": { 909 | "locate-path": "^2.0.0" 910 | } 911 | }, 912 | "locate-path": { 913 | "version": "2.0.0", 914 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 915 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 916 | "dev": true, 917 | "requires": { 918 | "p-locate": "^2.0.0", 919 | "path-exists": "^3.0.0" 920 | } 921 | }, 922 | "p-limit": { 923 | "version": "1.3.0", 924 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 925 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 926 | "dev": true, 927 | "requires": { 928 | "p-try": "^1.0.0" 929 | } 930 | }, 931 | "p-locate": { 932 | "version": "2.0.0", 933 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 934 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 935 | "dev": true, 936 | "requires": { 937 | "p-limit": "^1.1.0" 938 | } 939 | }, 940 | "p-try": { 941 | "version": "1.0.0", 942 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 943 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 944 | "dev": true 945 | }, 946 | "path-exists": { 947 | "version": "3.0.0", 948 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 949 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 950 | "dev": true 951 | } 952 | } 953 | }, 954 | "eslint-plugin-es": { 955 | "version": "4.1.0", 956 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", 957 | "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", 958 | "dev": true, 959 | "requires": { 960 | "eslint-utils": "^2.0.0", 961 | "regexpp": "^3.0.0" 962 | }, 963 | "dependencies": { 964 | "eslint-utils": { 965 | "version": "2.1.0", 966 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 967 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 968 | "dev": true, 969 | "requires": { 970 | "eslint-visitor-keys": "^1.1.0" 971 | } 972 | }, 973 | "eslint-visitor-keys": { 974 | "version": "1.3.0", 975 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 976 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 977 | "dev": true 978 | } 979 | } 980 | }, 981 | "eslint-plugin-import": { 982 | "version": "2.26.0", 983 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", 984 | "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", 985 | "dev": true, 986 | "requires": { 987 | "array-includes": "^3.1.4", 988 | "array.prototype.flat": "^1.2.5", 989 | "debug": "^2.6.9", 990 | "doctrine": "^2.1.0", 991 | "eslint-import-resolver-node": "^0.3.6", 992 | "eslint-module-utils": "^2.7.3", 993 | "has": "^1.0.3", 994 | "is-core-module": "^2.8.1", 995 | "is-glob": "^4.0.3", 996 | "minimatch": "^3.1.2", 997 | "object.values": "^1.1.5", 998 | "resolve": "^1.22.0", 999 | "tsconfig-paths": "^3.14.1" 1000 | }, 1001 | "dependencies": { 1002 | "debug": { 1003 | "version": "2.6.9", 1004 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1005 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1006 | "dev": true, 1007 | "requires": { 1008 | "ms": "2.0.0" 1009 | } 1010 | }, 1011 | "doctrine": { 1012 | "version": "2.1.0", 1013 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 1014 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 1015 | "dev": true, 1016 | "requires": { 1017 | "esutils": "^2.0.2" 1018 | } 1019 | }, 1020 | "is-core-module": { 1021 | "version": "2.9.0", 1022 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 1023 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 1024 | "dev": true, 1025 | "requires": { 1026 | "has": "^1.0.3" 1027 | } 1028 | }, 1029 | "ms": { 1030 | "version": "2.0.0", 1031 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1032 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1033 | "dev": true 1034 | }, 1035 | "resolve": { 1036 | "version": "1.22.0", 1037 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 1038 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 1039 | "dev": true, 1040 | "requires": { 1041 | "is-core-module": "^2.8.1", 1042 | "path-parse": "^1.0.7", 1043 | "supports-preserve-symlinks-flag": "^1.0.0" 1044 | } 1045 | } 1046 | } 1047 | }, 1048 | "eslint-plugin-n": { 1049 | "version": "15.2.0", 1050 | "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.0.tgz", 1051 | "integrity": "sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg==", 1052 | "dev": true, 1053 | "requires": { 1054 | "builtins": "^4.0.0", 1055 | "eslint-plugin-es": "^4.1.0", 1056 | "eslint-utils": "^3.0.0", 1057 | "ignore": "^5.1.1", 1058 | "is-core-module": "^2.3.0", 1059 | "minimatch": "^3.0.4", 1060 | "resolve": "^1.10.1", 1061 | "semver": "^6.3.0" 1062 | } 1063 | }, 1064 | "eslint-plugin-promise": { 1065 | "version": "6.0.0", 1066 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", 1067 | "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", 1068 | "dev": true 1069 | }, 1070 | "eslint-plugin-react": { 1071 | "version": "7.29.4", 1072 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", 1073 | "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", 1074 | "dev": true, 1075 | "requires": { 1076 | "array-includes": "^3.1.4", 1077 | "array.prototype.flatmap": "^1.2.5", 1078 | "doctrine": "^2.1.0", 1079 | "estraverse": "^5.3.0", 1080 | "jsx-ast-utils": "^2.4.1 || ^3.0.0", 1081 | "minimatch": "^3.1.2", 1082 | "object.entries": "^1.1.5", 1083 | "object.fromentries": "^2.0.5", 1084 | "object.hasown": "^1.1.0", 1085 | "object.values": "^1.1.5", 1086 | "prop-types": "^15.8.1", 1087 | "resolve": "^2.0.0-next.3", 1088 | "semver": "^6.3.0", 1089 | "string.prototype.matchall": "^4.0.6" 1090 | }, 1091 | "dependencies": { 1092 | "doctrine": { 1093 | "version": "2.1.0", 1094 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 1095 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 1096 | "dev": true, 1097 | "requires": { 1098 | "esutils": "^2.0.2" 1099 | } 1100 | }, 1101 | "resolve": { 1102 | "version": "2.0.0-next.3", 1103 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 1104 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 1105 | "dev": true, 1106 | "requires": { 1107 | "is-core-module": "^2.2.0", 1108 | "path-parse": "^1.0.6" 1109 | } 1110 | } 1111 | } 1112 | }, 1113 | "eslint-scope": { 1114 | "version": "7.1.1", 1115 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1116 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1117 | "dev": true, 1118 | "requires": { 1119 | "esrecurse": "^4.3.0", 1120 | "estraverse": "^5.2.0" 1121 | } 1122 | }, 1123 | "eslint-utils": { 1124 | "version": "3.0.0", 1125 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1126 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1127 | "dev": true, 1128 | "requires": { 1129 | "eslint-visitor-keys": "^2.0.0" 1130 | }, 1131 | "dependencies": { 1132 | "eslint-visitor-keys": { 1133 | "version": "2.1.0", 1134 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1135 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1136 | "dev": true 1137 | } 1138 | } 1139 | }, 1140 | "eslint-visitor-keys": { 1141 | "version": "3.3.0", 1142 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1143 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 1144 | "dev": true 1145 | }, 1146 | "espree": { 1147 | "version": "9.3.1", 1148 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", 1149 | "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", 1150 | "dev": true, 1151 | "requires": { 1152 | "acorn": "^8.7.0", 1153 | "acorn-jsx": "^5.3.1", 1154 | "eslint-visitor-keys": "^3.3.0" 1155 | }, 1156 | "dependencies": { 1157 | "acorn": { 1158 | "version": "8.7.1", 1159 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 1160 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 1161 | "dev": true 1162 | } 1163 | } 1164 | }, 1165 | "esquery": { 1166 | "version": "1.4.0", 1167 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1168 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1169 | "dev": true, 1170 | "requires": { 1171 | "estraverse": "^5.1.0" 1172 | } 1173 | }, 1174 | "esrecurse": { 1175 | "version": "4.3.0", 1176 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1177 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1178 | "dev": true, 1179 | "requires": { 1180 | "estraverse": "^5.2.0" 1181 | } 1182 | }, 1183 | "estraverse": { 1184 | "version": "5.3.0", 1185 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1186 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1187 | "dev": true 1188 | }, 1189 | "esutils": { 1190 | "version": "2.0.3", 1191 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1192 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1193 | "dev": true 1194 | }, 1195 | "fast-deep-equal": { 1196 | "version": "3.1.3", 1197 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1198 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1199 | "dev": true 1200 | }, 1201 | "fast-json-stable-stringify": { 1202 | "version": "2.1.0", 1203 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1204 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1205 | "dev": true 1206 | }, 1207 | "fast-levenshtein": { 1208 | "version": "2.0.6", 1209 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1210 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1211 | "dev": true 1212 | }, 1213 | "file-entry-cache": { 1214 | "version": "6.0.1", 1215 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1216 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1217 | "dev": true, 1218 | "requires": { 1219 | "flat-cache": "^3.0.4" 1220 | } 1221 | }, 1222 | "fill-range": { 1223 | "version": "7.1.1", 1224 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1225 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1226 | "dev": true, 1227 | "requires": { 1228 | "to-regex-range": "^5.0.1" 1229 | } 1230 | }, 1231 | "find-up": { 1232 | "version": "5.0.0", 1233 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1234 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1235 | "dev": true, 1236 | "requires": { 1237 | "locate-path": "^6.0.0", 1238 | "path-exists": "^4.0.0" 1239 | } 1240 | }, 1241 | "flat": { 1242 | "version": "5.0.2", 1243 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1244 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1245 | "dev": true 1246 | }, 1247 | "flat-cache": { 1248 | "version": "3.0.4", 1249 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1250 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1251 | "dev": true, 1252 | "requires": { 1253 | "flatted": "^3.1.0", 1254 | "rimraf": "^3.0.2" 1255 | } 1256 | }, 1257 | "flatted": { 1258 | "version": "3.2.5", 1259 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 1260 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 1261 | "dev": true 1262 | }, 1263 | "foreground-child": { 1264 | "version": "3.2.1", 1265 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", 1266 | "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", 1267 | "dev": true, 1268 | "requires": { 1269 | "cross-spawn": "^7.0.0", 1270 | "signal-exit": "^4.0.1" 1271 | } 1272 | }, 1273 | "fs.realpath": { 1274 | "version": "1.0.0", 1275 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1276 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1277 | "dev": true 1278 | }, 1279 | "fsevents": { 1280 | "version": "2.3.3", 1281 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1282 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1283 | "dev": true, 1284 | "optional": true 1285 | }, 1286 | "function-bind": { 1287 | "version": "1.1.1", 1288 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1289 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1290 | "dev": true 1291 | }, 1292 | "functional-red-black-tree": { 1293 | "version": "1.0.1", 1294 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1295 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1296 | "dev": true 1297 | }, 1298 | "functions-have-names": { 1299 | "version": "1.2.3", 1300 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 1301 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 1302 | "dev": true 1303 | }, 1304 | "get-caller-file": { 1305 | "version": "2.0.5", 1306 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1307 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1308 | "dev": true 1309 | }, 1310 | "get-intrinsic": { 1311 | "version": "1.1.1", 1312 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1313 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1314 | "dev": true, 1315 | "requires": { 1316 | "function-bind": "^1.1.1", 1317 | "has": "^1.0.3", 1318 | "has-symbols": "^1.0.1" 1319 | } 1320 | }, 1321 | "get-stdin": { 1322 | "version": "8.0.0", 1323 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", 1324 | "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", 1325 | "dev": true 1326 | }, 1327 | "get-symbol-description": { 1328 | "version": "1.0.0", 1329 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1330 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1331 | "dev": true, 1332 | "requires": { 1333 | "call-bind": "^1.0.2", 1334 | "get-intrinsic": "^1.1.1" 1335 | } 1336 | }, 1337 | "glob": { 1338 | "version": "7.2.0", 1339 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1340 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1341 | "dev": true, 1342 | "requires": { 1343 | "fs.realpath": "^1.0.0", 1344 | "inflight": "^1.0.4", 1345 | "inherits": "2", 1346 | "minimatch": "^3.0.4", 1347 | "once": "^1.3.0", 1348 | "path-is-absolute": "^1.0.0" 1349 | } 1350 | }, 1351 | "glob-parent": { 1352 | "version": "5.1.2", 1353 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1354 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1355 | "dev": true, 1356 | "requires": { 1357 | "is-glob": "^4.0.1" 1358 | } 1359 | }, 1360 | "graceful-fs": { 1361 | "version": "4.2.8", 1362 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 1363 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 1364 | "dev": true 1365 | }, 1366 | "has": { 1367 | "version": "1.0.3", 1368 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1369 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1370 | "dev": true, 1371 | "requires": { 1372 | "function-bind": "^1.1.1" 1373 | } 1374 | }, 1375 | "has-bigints": { 1376 | "version": "1.0.2", 1377 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 1378 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 1379 | "dev": true 1380 | }, 1381 | "has-flag": { 1382 | "version": "4.0.0", 1383 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1384 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1385 | "dev": true 1386 | }, 1387 | "has-property-descriptors": { 1388 | "version": "1.0.0", 1389 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1390 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1391 | "dev": true, 1392 | "requires": { 1393 | "get-intrinsic": "^1.1.1" 1394 | } 1395 | }, 1396 | "has-symbols": { 1397 | "version": "1.0.3", 1398 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1399 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1400 | "dev": true 1401 | }, 1402 | "has-tostringtag": { 1403 | "version": "1.0.0", 1404 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1405 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1406 | "dev": true, 1407 | "requires": { 1408 | "has-symbols": "^1.0.2" 1409 | } 1410 | }, 1411 | "he": { 1412 | "version": "1.2.0", 1413 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1414 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1415 | "dev": true 1416 | }, 1417 | "html-escaper": { 1418 | "version": "2.0.2", 1419 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1420 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1421 | "dev": true 1422 | }, 1423 | "ignore": { 1424 | "version": "5.2.0", 1425 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 1426 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 1427 | "dev": true 1428 | }, 1429 | "import-fresh": { 1430 | "version": "3.3.0", 1431 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1432 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1433 | "dev": true, 1434 | "requires": { 1435 | "parent-module": "^1.0.0", 1436 | "resolve-from": "^4.0.0" 1437 | }, 1438 | "dependencies": { 1439 | "resolve-from": { 1440 | "version": "4.0.0", 1441 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1442 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1443 | "dev": true 1444 | } 1445 | } 1446 | }, 1447 | "imurmurhash": { 1448 | "version": "0.1.4", 1449 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1450 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1451 | "dev": true 1452 | }, 1453 | "inflight": { 1454 | "version": "1.0.6", 1455 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1456 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1457 | "dev": true, 1458 | "requires": { 1459 | "once": "^1.3.0", 1460 | "wrappy": "1" 1461 | } 1462 | }, 1463 | "inherits": { 1464 | "version": "2.0.4", 1465 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1466 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1467 | "dev": true 1468 | }, 1469 | "internal-slot": { 1470 | "version": "1.0.3", 1471 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 1472 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 1473 | "dev": true, 1474 | "requires": { 1475 | "get-intrinsic": "^1.1.0", 1476 | "has": "^1.0.3", 1477 | "side-channel": "^1.0.4" 1478 | } 1479 | }, 1480 | "is-arrayish": { 1481 | "version": "0.2.1", 1482 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1483 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1484 | "dev": true 1485 | }, 1486 | "is-bigint": { 1487 | "version": "1.0.4", 1488 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1489 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1490 | "dev": true, 1491 | "requires": { 1492 | "has-bigints": "^1.0.1" 1493 | } 1494 | }, 1495 | "is-binary-path": { 1496 | "version": "2.1.0", 1497 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1498 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1499 | "dev": true, 1500 | "requires": { 1501 | "binary-extensions": "^2.0.0" 1502 | } 1503 | }, 1504 | "is-boolean-object": { 1505 | "version": "1.1.2", 1506 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1507 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1508 | "dev": true, 1509 | "requires": { 1510 | "call-bind": "^1.0.2", 1511 | "has-tostringtag": "^1.0.0" 1512 | } 1513 | }, 1514 | "is-callable": { 1515 | "version": "1.2.4", 1516 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 1517 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 1518 | "dev": true 1519 | }, 1520 | "is-core-module": { 1521 | "version": "2.8.0", 1522 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 1523 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 1524 | "dev": true, 1525 | "requires": { 1526 | "has": "^1.0.3" 1527 | } 1528 | }, 1529 | "is-date-object": { 1530 | "version": "1.0.5", 1531 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1532 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1533 | "dev": true, 1534 | "requires": { 1535 | "has-tostringtag": "^1.0.0" 1536 | } 1537 | }, 1538 | "is-extglob": { 1539 | "version": "2.1.1", 1540 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1541 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1542 | "dev": true 1543 | }, 1544 | "is-fullwidth-code-point": { 1545 | "version": "3.0.0", 1546 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1547 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1548 | "dev": true 1549 | }, 1550 | "is-glob": { 1551 | "version": "4.0.3", 1552 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1553 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1554 | "dev": true, 1555 | "requires": { 1556 | "is-extglob": "^2.1.1" 1557 | } 1558 | }, 1559 | "is-negative-zero": { 1560 | "version": "2.0.2", 1561 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1562 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1563 | "dev": true 1564 | }, 1565 | "is-number": { 1566 | "version": "7.0.0", 1567 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1568 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1569 | "dev": true 1570 | }, 1571 | "is-number-object": { 1572 | "version": "1.0.7", 1573 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1574 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1575 | "dev": true, 1576 | "requires": { 1577 | "has-tostringtag": "^1.0.0" 1578 | } 1579 | }, 1580 | "is-plain-obj": { 1581 | "version": "2.1.0", 1582 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1583 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1584 | "dev": true 1585 | }, 1586 | "is-regex": { 1587 | "version": "1.1.4", 1588 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1589 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1590 | "dev": true, 1591 | "requires": { 1592 | "call-bind": "^1.0.2", 1593 | "has-tostringtag": "^1.0.0" 1594 | } 1595 | }, 1596 | "is-shared-array-buffer": { 1597 | "version": "1.0.2", 1598 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1599 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1600 | "dev": true, 1601 | "requires": { 1602 | "call-bind": "^1.0.2" 1603 | } 1604 | }, 1605 | "is-string": { 1606 | "version": "1.0.7", 1607 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1608 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1609 | "dev": true, 1610 | "requires": { 1611 | "has-tostringtag": "^1.0.0" 1612 | } 1613 | }, 1614 | "is-symbol": { 1615 | "version": "1.0.4", 1616 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1617 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1618 | "dev": true, 1619 | "requires": { 1620 | "has-symbols": "^1.0.2" 1621 | } 1622 | }, 1623 | "is-unicode-supported": { 1624 | "version": "0.1.0", 1625 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1626 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1627 | "dev": true 1628 | }, 1629 | "is-weakref": { 1630 | "version": "1.0.2", 1631 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1632 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1633 | "dev": true, 1634 | "requires": { 1635 | "call-bind": "^1.0.2" 1636 | } 1637 | }, 1638 | "isexe": { 1639 | "version": "2.0.0", 1640 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1641 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1642 | "dev": true 1643 | }, 1644 | "istanbul-lib-coverage": { 1645 | "version": "3.2.2", 1646 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 1647 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 1648 | "dev": true 1649 | }, 1650 | "istanbul-lib-report": { 1651 | "version": "3.0.1", 1652 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 1653 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 1654 | "dev": true, 1655 | "requires": { 1656 | "istanbul-lib-coverage": "^3.0.0", 1657 | "make-dir": "^4.0.0", 1658 | "supports-color": "^7.1.0" 1659 | } 1660 | }, 1661 | "istanbul-reports": { 1662 | "version": "3.1.7", 1663 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", 1664 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", 1665 | "dev": true, 1666 | "requires": { 1667 | "html-escaper": "^2.0.0", 1668 | "istanbul-lib-report": "^3.0.0" 1669 | } 1670 | }, 1671 | "jackspeak": { 1672 | "version": "3.4.0", 1673 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", 1674 | "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", 1675 | "dev": true, 1676 | "requires": { 1677 | "@isaacs/cliui": "^8.0.2", 1678 | "@pkgjs/parseargs": "^0.11.0" 1679 | } 1680 | }, 1681 | "js-tokens": { 1682 | "version": "4.0.0", 1683 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1684 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1685 | "dev": true 1686 | }, 1687 | "js-yaml": { 1688 | "version": "4.1.0", 1689 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1690 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1691 | "dev": true, 1692 | "requires": { 1693 | "argparse": "^2.0.1" 1694 | } 1695 | }, 1696 | "json-parse-better-errors": { 1697 | "version": "1.0.2", 1698 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1699 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1700 | "dev": true 1701 | }, 1702 | "json-schema-traverse": { 1703 | "version": "0.4.1", 1704 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1705 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1706 | "dev": true 1707 | }, 1708 | "json-stable-stringify-without-jsonify": { 1709 | "version": "1.0.1", 1710 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1711 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1712 | "dev": true 1713 | }, 1714 | "jsx-ast-utils": { 1715 | "version": "3.3.0", 1716 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", 1717 | "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==", 1718 | "dev": true, 1719 | "requires": { 1720 | "array-includes": "^3.1.4", 1721 | "object.assign": "^4.1.2" 1722 | } 1723 | }, 1724 | "load-json-file": { 1725 | "version": "5.3.0", 1726 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", 1727 | "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", 1728 | "dev": true, 1729 | "requires": { 1730 | "graceful-fs": "^4.1.15", 1731 | "parse-json": "^4.0.0", 1732 | "pify": "^4.0.1", 1733 | "strip-bom": "^3.0.0", 1734 | "type-fest": "^0.3.0" 1735 | }, 1736 | "dependencies": { 1737 | "strip-bom": { 1738 | "version": "3.0.0", 1739 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1740 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1741 | "dev": true 1742 | }, 1743 | "type-fest": { 1744 | "version": "0.3.1", 1745 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", 1746 | "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", 1747 | "dev": true 1748 | } 1749 | } 1750 | }, 1751 | "locate-path": { 1752 | "version": "6.0.0", 1753 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1754 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1755 | "dev": true, 1756 | "requires": { 1757 | "p-locate": "^5.0.0" 1758 | } 1759 | }, 1760 | "lodash.merge": { 1761 | "version": "4.6.2", 1762 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1763 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1764 | "dev": true 1765 | }, 1766 | "log-symbols": { 1767 | "version": "4.1.0", 1768 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1769 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1770 | "dev": true, 1771 | "requires": { 1772 | "chalk": "^4.1.0", 1773 | "is-unicode-supported": "^0.1.0" 1774 | } 1775 | }, 1776 | "loose-envify": { 1777 | "version": "1.4.0", 1778 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1779 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1780 | "dev": true, 1781 | "requires": { 1782 | "js-tokens": "^3.0.0 || ^4.0.0" 1783 | } 1784 | }, 1785 | "lru-cache": { 1786 | "version": "6.0.0", 1787 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1788 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1789 | "dev": true, 1790 | "requires": { 1791 | "yallist": "^4.0.0" 1792 | } 1793 | }, 1794 | "make-dir": { 1795 | "version": "4.0.0", 1796 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 1797 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 1798 | "dev": true, 1799 | "requires": { 1800 | "semver": "^7.5.3" 1801 | }, 1802 | "dependencies": { 1803 | "semver": { 1804 | "version": "7.6.2", 1805 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", 1806 | "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", 1807 | "dev": true 1808 | } 1809 | } 1810 | }, 1811 | "minimatch": { 1812 | "version": "3.1.2", 1813 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1814 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1815 | "dev": true, 1816 | "requires": { 1817 | "brace-expansion": "^1.1.7" 1818 | } 1819 | }, 1820 | "minimist": { 1821 | "version": "1.2.6", 1822 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1823 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1824 | "dev": true 1825 | }, 1826 | "minipass": { 1827 | "version": "7.1.2", 1828 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1829 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1830 | "dev": true 1831 | }, 1832 | "mocha": { 1833 | "version": "11.0.0", 1834 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.0.tgz", 1835 | "integrity": "sha512-9VQaK0N4YQ2F89Vy4wTIEyTm/Ggcv1PejfVeI82wOw0vBO6BjFyBGHCiNbl+wyHmgWDyFmHb2Yw1QlLaWzaEoA==", 1836 | "dev": true, 1837 | "requires": { 1838 | "ansi-colors": "^4.1.3", 1839 | "browser-stdout": "^1.3.1", 1840 | "chokidar": "^3.5.3", 1841 | "debug": "^4.3.5", 1842 | "diff": "^5.2.0", 1843 | "escape-string-regexp": "^4.0.0", 1844 | "find-up": "^5.0.0", 1845 | "glob": "^8.1.0", 1846 | "he": "^1.2.0", 1847 | "js-yaml": "^4.1.0", 1848 | "log-symbols": "^4.1.0", 1849 | "minimatch": "^5.1.6", 1850 | "ms": "^2.1.3", 1851 | "serialize-javascript": "^6.0.2", 1852 | "strip-json-comments": "^3.1.1", 1853 | "supports-color": "^8.1.1", 1854 | "workerpool": "^6.5.1", 1855 | "yargs": "^16.2.0", 1856 | "yargs-parser": "^20.2.9", 1857 | "yargs-unparser": "^2.0.0" 1858 | }, 1859 | "dependencies": { 1860 | "brace-expansion": { 1861 | "version": "2.0.1", 1862 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1863 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1864 | "dev": true, 1865 | "requires": { 1866 | "balanced-match": "^1.0.0" 1867 | } 1868 | }, 1869 | "debug": { 1870 | "version": "4.3.7", 1871 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", 1872 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", 1873 | "dev": true, 1874 | "requires": { 1875 | "ms": "^2.1.3" 1876 | } 1877 | }, 1878 | "glob": { 1879 | "version": "8.1.0", 1880 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1881 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1882 | "dev": true, 1883 | "requires": { 1884 | "fs.realpath": "^1.0.0", 1885 | "inflight": "^1.0.4", 1886 | "inherits": "2", 1887 | "minimatch": "^5.0.1", 1888 | "once": "^1.3.0" 1889 | } 1890 | }, 1891 | "minimatch": { 1892 | "version": "5.1.6", 1893 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1894 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1895 | "dev": true, 1896 | "requires": { 1897 | "brace-expansion": "^2.0.1" 1898 | } 1899 | }, 1900 | "ms": { 1901 | "version": "2.1.3", 1902 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1903 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1904 | "dev": true 1905 | }, 1906 | "supports-color": { 1907 | "version": "8.1.1", 1908 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1909 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1910 | "dev": true, 1911 | "requires": { 1912 | "has-flag": "^4.0.0" 1913 | } 1914 | } 1915 | } 1916 | }, 1917 | "ms": { 1918 | "version": "2.1.2", 1919 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1920 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1921 | "dev": true 1922 | }, 1923 | "natural-compare": { 1924 | "version": "1.4.0", 1925 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1926 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1927 | "dev": true 1928 | }, 1929 | "normalize-path": { 1930 | "version": "3.0.0", 1931 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1932 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1933 | "dev": true 1934 | }, 1935 | "object-assign": { 1936 | "version": "4.1.1", 1937 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1938 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1939 | "dev": true 1940 | }, 1941 | "object-inspect": { 1942 | "version": "1.12.0", 1943 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1944 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 1945 | "dev": true 1946 | }, 1947 | "object-keys": { 1948 | "version": "1.1.1", 1949 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1950 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1951 | "dev": true 1952 | }, 1953 | "object.assign": { 1954 | "version": "4.1.2", 1955 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1956 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1957 | "dev": true, 1958 | "requires": { 1959 | "call-bind": "^1.0.0", 1960 | "define-properties": "^1.1.3", 1961 | "has-symbols": "^1.0.1", 1962 | "object-keys": "^1.1.1" 1963 | } 1964 | }, 1965 | "object.entries": { 1966 | "version": "1.1.5", 1967 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", 1968 | "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", 1969 | "dev": true, 1970 | "requires": { 1971 | "call-bind": "^1.0.2", 1972 | "define-properties": "^1.1.3", 1973 | "es-abstract": "^1.19.1" 1974 | } 1975 | }, 1976 | "object.fromentries": { 1977 | "version": "2.0.5", 1978 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", 1979 | "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", 1980 | "dev": true, 1981 | "requires": { 1982 | "call-bind": "^1.0.2", 1983 | "define-properties": "^1.1.3", 1984 | "es-abstract": "^1.19.1" 1985 | } 1986 | }, 1987 | "object.hasown": { 1988 | "version": "1.1.0", 1989 | "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", 1990 | "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", 1991 | "dev": true, 1992 | "requires": { 1993 | "define-properties": "^1.1.3", 1994 | "es-abstract": "^1.19.1" 1995 | } 1996 | }, 1997 | "object.values": { 1998 | "version": "1.1.5", 1999 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", 2000 | "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", 2001 | "dev": true, 2002 | "requires": { 2003 | "call-bind": "^1.0.2", 2004 | "define-properties": "^1.1.3", 2005 | "es-abstract": "^1.19.1" 2006 | } 2007 | }, 2008 | "once": { 2009 | "version": "1.4.0", 2010 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2011 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2012 | "dev": true, 2013 | "requires": { 2014 | "wrappy": "1" 2015 | } 2016 | }, 2017 | "p-limit": { 2018 | "version": "2.3.0", 2019 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2020 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2021 | "dev": true, 2022 | "requires": { 2023 | "p-try": "^2.0.0" 2024 | } 2025 | }, 2026 | "p-locate": { 2027 | "version": "5.0.0", 2028 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2029 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2030 | "dev": true, 2031 | "requires": { 2032 | "p-limit": "^3.0.2" 2033 | }, 2034 | "dependencies": { 2035 | "p-limit": { 2036 | "version": "3.1.0", 2037 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2038 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2039 | "dev": true, 2040 | "requires": { 2041 | "yocto-queue": "^0.1.0" 2042 | } 2043 | } 2044 | } 2045 | }, 2046 | "p-try": { 2047 | "version": "2.2.0", 2048 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2049 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2050 | "dev": true 2051 | }, 2052 | "package-json-from-dist": { 2053 | "version": "1.0.0", 2054 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", 2055 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", 2056 | "dev": true 2057 | }, 2058 | "parent-module": { 2059 | "version": "1.0.1", 2060 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2061 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2062 | "dev": true, 2063 | "requires": { 2064 | "callsites": "^3.0.0" 2065 | } 2066 | }, 2067 | "parse-json": { 2068 | "version": "4.0.0", 2069 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 2070 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 2071 | "dev": true, 2072 | "requires": { 2073 | "error-ex": "^1.3.1", 2074 | "json-parse-better-errors": "^1.0.1" 2075 | } 2076 | }, 2077 | "path-exists": { 2078 | "version": "4.0.0", 2079 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2080 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2081 | "dev": true 2082 | }, 2083 | "path-is-absolute": { 2084 | "version": "1.0.1", 2085 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2086 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2087 | "dev": true 2088 | }, 2089 | "path-key": { 2090 | "version": "3.1.1", 2091 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2092 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2093 | "dev": true 2094 | }, 2095 | "path-parse": { 2096 | "version": "1.0.7", 2097 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2098 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2099 | "dev": true 2100 | }, 2101 | "path-scurry": { 2102 | "version": "1.11.1", 2103 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 2104 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 2105 | "dev": true, 2106 | "requires": { 2107 | "lru-cache": "^10.2.0", 2108 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 2109 | }, 2110 | "dependencies": { 2111 | "lru-cache": { 2112 | "version": "10.3.0", 2113 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", 2114 | "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", 2115 | "dev": true 2116 | } 2117 | } 2118 | }, 2119 | "picomatch": { 2120 | "version": "2.3.1", 2121 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2122 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2123 | "dev": true 2124 | }, 2125 | "pify": { 2126 | "version": "4.0.1", 2127 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2128 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2129 | "dev": true 2130 | }, 2131 | "pkg-conf": { 2132 | "version": "3.1.0", 2133 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", 2134 | "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", 2135 | "dev": true, 2136 | "requires": { 2137 | "find-up": "^3.0.0", 2138 | "load-json-file": "^5.2.0" 2139 | }, 2140 | "dependencies": { 2141 | "find-up": { 2142 | "version": "3.0.0", 2143 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 2144 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 2145 | "dev": true, 2146 | "requires": { 2147 | "locate-path": "^3.0.0" 2148 | } 2149 | }, 2150 | "locate-path": { 2151 | "version": "3.0.0", 2152 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2153 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2154 | "dev": true, 2155 | "requires": { 2156 | "p-locate": "^3.0.0", 2157 | "path-exists": "^3.0.0" 2158 | } 2159 | }, 2160 | "p-locate": { 2161 | "version": "3.0.0", 2162 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2163 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2164 | "dev": true, 2165 | "requires": { 2166 | "p-limit": "^2.0.0" 2167 | } 2168 | }, 2169 | "path-exists": { 2170 | "version": "3.0.0", 2171 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2172 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2173 | "dev": true 2174 | } 2175 | } 2176 | }, 2177 | "prop-types": { 2178 | "version": "15.8.1", 2179 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2180 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2181 | "dev": true, 2182 | "requires": { 2183 | "loose-envify": "^1.4.0", 2184 | "object-assign": "^4.1.1", 2185 | "react-is": "^16.13.1" 2186 | }, 2187 | "dependencies": { 2188 | "react-is": { 2189 | "version": "16.13.1", 2190 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2191 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 2192 | "dev": true 2193 | } 2194 | } 2195 | }, 2196 | "punycode": { 2197 | "version": "2.1.1", 2198 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2199 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2200 | "dev": true 2201 | }, 2202 | "randombytes": { 2203 | "version": "2.1.0", 2204 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2205 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2206 | "dev": true, 2207 | "requires": { 2208 | "safe-buffer": "^5.1.0" 2209 | } 2210 | }, 2211 | "readdirp": { 2212 | "version": "3.6.0", 2213 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2214 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2215 | "dev": true, 2216 | "requires": { 2217 | "picomatch": "^2.2.1" 2218 | } 2219 | }, 2220 | "regexp.prototype.flags": { 2221 | "version": "1.4.3", 2222 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 2223 | "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 2224 | "dev": true, 2225 | "requires": { 2226 | "call-bind": "^1.0.2", 2227 | "define-properties": "^1.1.3", 2228 | "functions-have-names": "^1.2.2" 2229 | } 2230 | }, 2231 | "regexpp": { 2232 | "version": "3.2.0", 2233 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2234 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2235 | "dev": true 2236 | }, 2237 | "require-directory": { 2238 | "version": "2.1.1", 2239 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2240 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2241 | "dev": true 2242 | }, 2243 | "resolve": { 2244 | "version": "1.20.0", 2245 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 2246 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 2247 | "dev": true, 2248 | "requires": { 2249 | "is-core-module": "^2.2.0", 2250 | "path-parse": "^1.0.6" 2251 | } 2252 | }, 2253 | "rimraf": { 2254 | "version": "3.0.2", 2255 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2256 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2257 | "dev": true, 2258 | "requires": { 2259 | "glob": "^7.1.3" 2260 | } 2261 | }, 2262 | "safe-buffer": { 2263 | "version": "5.2.1", 2264 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2265 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2266 | "dev": true 2267 | }, 2268 | "semver": { 2269 | "version": "6.3.0", 2270 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2271 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2272 | "dev": true 2273 | }, 2274 | "serialize-javascript": { 2275 | "version": "6.0.2", 2276 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 2277 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 2278 | "dev": true, 2279 | "requires": { 2280 | "randombytes": "^2.1.0" 2281 | } 2282 | }, 2283 | "shebang-command": { 2284 | "version": "2.0.0", 2285 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2286 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2287 | "dev": true, 2288 | "requires": { 2289 | "shebang-regex": "^3.0.0" 2290 | } 2291 | }, 2292 | "shebang-regex": { 2293 | "version": "3.0.0", 2294 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2295 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2296 | "dev": true 2297 | }, 2298 | "side-channel": { 2299 | "version": "1.0.4", 2300 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2301 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2302 | "dev": true, 2303 | "requires": { 2304 | "call-bind": "^1.0.0", 2305 | "get-intrinsic": "^1.0.2", 2306 | "object-inspect": "^1.9.0" 2307 | } 2308 | }, 2309 | "signal-exit": { 2310 | "version": "4.1.0", 2311 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2312 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2313 | "dev": true 2314 | }, 2315 | "standard": { 2316 | "version": "17.0.0", 2317 | "resolved": "https://registry.npmjs.org/standard/-/standard-17.0.0.tgz", 2318 | "integrity": "sha512-GlCM9nzbLUkr+TYR5I2WQoIah4wHA2lMauqbyPLV/oI5gJxqhHzhjl9EG2N0lr/nRqI3KCbCvm/W3smxvLaChA==", 2319 | "dev": true, 2320 | "requires": { 2321 | "eslint": "^8.13.0", 2322 | "eslint-config-standard": "17.0.0", 2323 | "eslint-config-standard-jsx": "^11.0.0", 2324 | "eslint-plugin-import": "^2.26.0", 2325 | "eslint-plugin-n": "^15.1.0", 2326 | "eslint-plugin-promise": "^6.0.0", 2327 | "eslint-plugin-react": "^7.28.0", 2328 | "standard-engine": "^15.0.0" 2329 | } 2330 | }, 2331 | "standard-engine": { 2332 | "version": "15.0.0", 2333 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.0.0.tgz", 2334 | "integrity": "sha512-4xwUhJNo1g/L2cleysUqUv7/btn7GEbYJvmgKrQ2vd/8pkTmN8cpqAZg+BT8Z1hNeEH787iWUdOpL8fmApLtxA==", 2335 | "dev": true, 2336 | "requires": { 2337 | "get-stdin": "^8.0.0", 2338 | "minimist": "^1.2.6", 2339 | "pkg-conf": "^3.1.0", 2340 | "xdg-basedir": "^4.0.0" 2341 | } 2342 | }, 2343 | "string-width": { 2344 | "version": "4.2.3", 2345 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2346 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2347 | "dev": true, 2348 | "requires": { 2349 | "emoji-regex": "^8.0.0", 2350 | "is-fullwidth-code-point": "^3.0.0", 2351 | "strip-ansi": "^6.0.1" 2352 | } 2353 | }, 2354 | "string.prototype.matchall": { 2355 | "version": "4.0.7", 2356 | "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", 2357 | "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", 2358 | "dev": true, 2359 | "requires": { 2360 | "call-bind": "^1.0.2", 2361 | "define-properties": "^1.1.3", 2362 | "es-abstract": "^1.19.1", 2363 | "get-intrinsic": "^1.1.1", 2364 | "has-symbols": "^1.0.3", 2365 | "internal-slot": "^1.0.3", 2366 | "regexp.prototype.flags": "^1.4.1", 2367 | "side-channel": "^1.0.4" 2368 | } 2369 | }, 2370 | "string.prototype.trimend": { 2371 | "version": "1.0.4", 2372 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 2373 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 2374 | "dev": true, 2375 | "requires": { 2376 | "call-bind": "^1.0.2", 2377 | "define-properties": "^1.1.3" 2378 | } 2379 | }, 2380 | "string.prototype.trimstart": { 2381 | "version": "1.0.4", 2382 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 2383 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 2384 | "dev": true, 2385 | "requires": { 2386 | "call-bind": "^1.0.2", 2387 | "define-properties": "^1.1.3" 2388 | } 2389 | }, 2390 | "strip-ansi": { 2391 | "version": "6.0.1", 2392 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2393 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2394 | "dev": true, 2395 | "requires": { 2396 | "ansi-regex": "^5.0.1" 2397 | } 2398 | }, 2399 | "strip-json-comments": { 2400 | "version": "3.1.1", 2401 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2402 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2403 | "dev": true 2404 | }, 2405 | "supports-color": { 2406 | "version": "7.2.0", 2407 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2408 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2409 | "dev": true, 2410 | "requires": { 2411 | "has-flag": "^4.0.0" 2412 | } 2413 | }, 2414 | "supports-preserve-symlinks-flag": { 2415 | "version": "1.0.0", 2416 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2417 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2418 | "dev": true 2419 | }, 2420 | "test-exclude": { 2421 | "version": "7.0.1", 2422 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", 2423 | "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", 2424 | "dev": true, 2425 | "requires": { 2426 | "@istanbuljs/schema": "^0.1.2", 2427 | "glob": "^10.4.1", 2428 | "minimatch": "^9.0.4" 2429 | }, 2430 | "dependencies": { 2431 | "brace-expansion": { 2432 | "version": "2.0.1", 2433 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2434 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2435 | "dev": true, 2436 | "requires": { 2437 | "balanced-match": "^1.0.0" 2438 | } 2439 | }, 2440 | "glob": { 2441 | "version": "10.4.2", 2442 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", 2443 | "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", 2444 | "dev": true, 2445 | "requires": { 2446 | "foreground-child": "^3.1.0", 2447 | "jackspeak": "^3.1.2", 2448 | "minimatch": "^9.0.4", 2449 | "minipass": "^7.1.2", 2450 | "package-json-from-dist": "^1.0.0", 2451 | "path-scurry": "^1.11.1" 2452 | } 2453 | }, 2454 | "minimatch": { 2455 | "version": "9.0.5", 2456 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2457 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2458 | "dev": true, 2459 | "requires": { 2460 | "brace-expansion": "^2.0.1" 2461 | } 2462 | } 2463 | } 2464 | }, 2465 | "text-table": { 2466 | "version": "0.2.0", 2467 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2468 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2469 | "dev": true 2470 | }, 2471 | "to-regex-range": { 2472 | "version": "5.0.1", 2473 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2474 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2475 | "dev": true, 2476 | "requires": { 2477 | "is-number": "^7.0.0" 2478 | } 2479 | }, 2480 | "tsconfig-paths": { 2481 | "version": "3.14.1", 2482 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", 2483 | "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", 2484 | "dev": true, 2485 | "requires": { 2486 | "@types/json5": "^0.0.29", 2487 | "json5": "^1.0.1", 2488 | "minimist": "^1.2.6", 2489 | "strip-bom": "^3.0.0" 2490 | }, 2491 | "dependencies": { 2492 | "json5": { 2493 | "version": "1.0.2", 2494 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", 2495 | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", 2496 | "dev": true, 2497 | "requires": { 2498 | "minimist": "^1.2.0" 2499 | } 2500 | }, 2501 | "strip-bom": { 2502 | "version": "3.0.0", 2503 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2504 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2505 | "dev": true 2506 | } 2507 | } 2508 | }, 2509 | "unbox-primitive": { 2510 | "version": "1.0.2", 2511 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 2512 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 2513 | "dev": true, 2514 | "requires": { 2515 | "call-bind": "^1.0.2", 2516 | "has-bigints": "^1.0.2", 2517 | "has-symbols": "^1.0.3", 2518 | "which-boxed-primitive": "^1.0.2" 2519 | } 2520 | }, 2521 | "uri-js": { 2522 | "version": "4.4.1", 2523 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2524 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2525 | "dev": true, 2526 | "requires": { 2527 | "punycode": "^2.1.0" 2528 | } 2529 | }, 2530 | "v8-compile-cache": { 2531 | "version": "2.3.0", 2532 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2533 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2534 | "dev": true 2535 | }, 2536 | "v8-to-istanbul": { 2537 | "version": "9.3.0", 2538 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", 2539 | "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", 2540 | "dev": true, 2541 | "requires": { 2542 | "@jridgewell/trace-mapping": "^0.3.12", 2543 | "@types/istanbul-lib-coverage": "^2.0.1", 2544 | "convert-source-map": "^2.0.0" 2545 | } 2546 | }, 2547 | "which": { 2548 | "version": "2.0.2", 2549 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2550 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2551 | "dev": true, 2552 | "requires": { 2553 | "isexe": "^2.0.0" 2554 | } 2555 | }, 2556 | "which-boxed-primitive": { 2557 | "version": "1.0.2", 2558 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2559 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2560 | "dev": true, 2561 | "requires": { 2562 | "is-bigint": "^1.0.1", 2563 | "is-boolean-object": "^1.1.0", 2564 | "is-number-object": "^1.0.4", 2565 | "is-string": "^1.0.5", 2566 | "is-symbol": "^1.0.3" 2567 | } 2568 | }, 2569 | "word-wrap": { 2570 | "version": "1.2.4", 2571 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 2572 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 2573 | "dev": true 2574 | }, 2575 | "workerpool": { 2576 | "version": "6.5.1", 2577 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 2578 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 2579 | "dev": true 2580 | }, 2581 | "wrap-ansi": { 2582 | "version": "7.0.0", 2583 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2584 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2585 | "dev": true, 2586 | "requires": { 2587 | "ansi-styles": "^4.0.0", 2588 | "string-width": "^4.1.0", 2589 | "strip-ansi": "^6.0.0" 2590 | } 2591 | }, 2592 | "wrappy": { 2593 | "version": "1.0.2", 2594 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2595 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2596 | "dev": true 2597 | }, 2598 | "xdg-basedir": { 2599 | "version": "4.0.0", 2600 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 2601 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", 2602 | "dev": true 2603 | }, 2604 | "y18n": { 2605 | "version": "5.0.8", 2606 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2607 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2608 | "dev": true 2609 | }, 2610 | "yallist": { 2611 | "version": "4.0.0", 2612 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2613 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2614 | "dev": true 2615 | }, 2616 | "yargs": { 2617 | "version": "16.2.0", 2618 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2619 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2620 | "dev": true, 2621 | "requires": { 2622 | "cliui": "^7.0.2", 2623 | "escalade": "^3.1.1", 2624 | "get-caller-file": "^2.0.5", 2625 | "require-directory": "^2.1.1", 2626 | "string-width": "^4.2.0", 2627 | "y18n": "^5.0.5", 2628 | "yargs-parser": "^20.2.2" 2629 | } 2630 | }, 2631 | "yargs-parser": { 2632 | "version": "20.2.9", 2633 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2634 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 2635 | "dev": true 2636 | }, 2637 | "yargs-unparser": { 2638 | "version": "2.0.0", 2639 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2640 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2641 | "dev": true, 2642 | "requires": { 2643 | "camelcase": "^6.0.0", 2644 | "decamelize": "^4.0.0", 2645 | "flat": "^5.0.2", 2646 | "is-plain-obj": "^2.1.0" 2647 | } 2648 | }, 2649 | "yocto-queue": { 2650 | "version": "0.1.0", 2651 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2652 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2653 | "dev": true 2654 | } 2655 | } 2656 | } 2657 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hyperoperate", 3 | "version": "2.0.1", 4 | "description": "Hyperoperations!", 5 | "homepage": "https://github.com/qntm/hyperoperate", 6 | "repository": { 7 | "type": "git", 8 | "url": "git://github.com/qntm/hyperoperate.git" 9 | }, 10 | "type": "module", 11 | "main": "src/index.js", 12 | "scripts": { 13 | "mocha": "c8 --100 mocha", 14 | "postpublish": "npm version patch && git push", 15 | "standard": "standard", 16 | "test": "npm run standard && npm run mocha" 17 | }, 18 | "keywords": [ 19 | "ackermann", 20 | "exponent", 21 | "tetration", 22 | "pentation", 23 | "math", 24 | "maths", 25 | "arrow", 26 | "notation" 27 | ], 28 | "author": "qntm", 29 | "license": "MIT", 30 | "devDependencies": { 31 | "c8": "^10.1.2", 32 | "mocha": "^11.0.0", 33 | "standard": "^17.0.0" 34 | }, 35 | "files": [ 36 | "src" 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | // All arguments must be BigInts. Return value is a BigInt or a thrown RangeError 2 | const bigH = (n, a, b) => { 3 | if (n < 0n || a < 0n || b < 0n) { 4 | throw Error('Can only hyperoperate on non-negative integers') 5 | } 6 | 7 | // successor operator 8 | if (n === 0n) { 9 | // Ignore `a` 10 | return b + 1n 11 | } 12 | 13 | // addition 14 | if (n === 1n) { 15 | return a + b 16 | } 17 | 18 | // multiplication 19 | if (n === 2n) { 20 | return a * b 21 | } 22 | 23 | // exponentiation 24 | if (n === 3n) { 25 | return a ** b 26 | } 27 | 28 | // n >= 4, time for some handy base cases 29 | 30 | if (a === 0n) { 31 | // Fun fact: 32 | return b % 2n === 0n ? 1n : 0n 33 | } 34 | 35 | if (a === 1n) { 36 | // 1^...^b = 1 for all finite b 37 | return 1n 38 | } 39 | 40 | // a >= 2 41 | 42 | if (b === 0n) { 43 | // a^0 = 1 for all a >= 2 44 | return 1n 45 | } 46 | 47 | if (b === 1n) { 48 | // a^...^1 = a for all a >= 2 49 | return a 50 | } 51 | 52 | // b >= 2 53 | 54 | if (a === 2n && b === 2n) { 55 | // Another fun fact 56 | return 4n 57 | } 58 | 59 | if (n < 6n) { 60 | let result = a 61 | for (let i = 1n; i < b; i++) { 62 | result = bigH(n - 1n, a, result) 63 | } 64 | return result 65 | } 66 | 67 | // All other results (n >= 6, a >= 2, b >= 2) are too large to be computable on Earth computers. 68 | throw RangeError('BigInt') 69 | } 70 | 71 | export default (n, a, b) => { 72 | if ([n, a, b].every(arg => typeof arg === 'bigint')) { 73 | return bigH(n, a, b) 74 | } 75 | 76 | if ([n, a, b].every(arg => Number.isInteger(arg))) { 77 | // All plain doubles... convert inputs to `BigInt`s, then convert the result back to a double 78 | try { 79 | return Number(bigH(BigInt(n), BigInt(a), BigInt(b))) 80 | } catch (error) { 81 | // Not clear what other error could be thrown at this stage? 82 | /* istanbul ignore if */ 83 | if (!( 84 | error instanceof RangeError && 85 | error.message.includes('BigInt') // BigInt overflow 86 | )) { 87 | throw error 88 | } 89 | } 90 | 91 | return Infinity 92 | } 93 | 94 | throw Error('Can only hyperoperate on three numbers or three BigInts') 95 | } 96 | -------------------------------------------------------------------------------- /test/index.spec.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import assert from 'assert' 4 | import H from '../src/index.js' 5 | 6 | describe('H', () => { 7 | describe('number arguments', () => { 8 | // Returns Infinity in the event of overflow 9 | describe('input validation', () => { 10 | it('throws on non-integer arguments', () => { 11 | assert.throws(() => H(0.5, 1, 2), Error('Can only hyperoperate on three numbers or three BigInts')) 12 | assert.throws(() => H(0, 'one', 2), Error('Can only hyperoperate on three numbers or three BigInts')) 13 | assert.throws(() => H(0, 1, Infinity), Error('Can only hyperoperate on three numbers or three BigInts')) 14 | }) 15 | 16 | it('throws on negative arguments', () => { 17 | assert.throws(() => H(-1, 1, 2), Error('Can only hyperoperate on non-negative integers')) 18 | assert.throws(() => H(0, -2, 2), Error('Can only hyperoperate on non-negative integers')) 19 | assert.throws(() => H(0, 1, -Number.MAX_VALUE), Error('Can only hyperoperate on non-negative integers')) 20 | }) 21 | }) 22 | 23 | describe('H0 (successor)', () => { 24 | const H0 = H.bind(undefined, 0) 25 | it('works', () => { 26 | assert.strictEqual(H0(0, 0), 1) 27 | assert.strictEqual(H0(56, 78), 79) 28 | assert.strictEqual(H0(1, Number.MAX_VALUE), Number.MAX_VALUE) // Because floats 29 | }) 30 | }) 31 | 32 | describe('H1 (addition)', () => { 33 | const H1 = H.bind(undefined, 1) 34 | it('works', () => { 35 | assert.strictEqual(H1(33, 44), 77) 36 | }) 37 | }) 38 | 39 | describe('H2 (multiplication)', () => { 40 | const H2 = H.bind(undefined, 2) 41 | it('works', () => { 42 | assert.strictEqual(H2(6, 7), 42) 43 | }) 44 | }) 45 | 46 | describe('H3 (exponentiation)', () => { 47 | const H3 = H.bind(undefined, 3) 48 | it('works', () => { 49 | assert.strictEqual(H3(0, 0), 1) 50 | assert.strictEqual(H3(0, 1), 0) 51 | assert.strictEqual(H3(0, 2), 0) 52 | assert.strictEqual(H3(0, 153), 0) 53 | assert.strictEqual(H3(0, Number.MAX_VALUE), 0) 54 | 55 | assert.strictEqual(H3(1, 0), 1) 56 | assert.strictEqual(H3(1, 1), 1) 57 | assert.strictEqual(H3(1, 2), 1) 58 | assert.strictEqual(H3(1, 94379), 1) 59 | assert.strictEqual(H3(1, Number.MAX_SAFE_INTEGER), 1) 60 | 61 | assert.strictEqual(H3(2, 0), 1) 62 | assert.strictEqual(H3(2, 1), 2) 63 | assert.strictEqual(H3(2, 2), 4) 64 | assert.strictEqual(H3(2, 10), 1024) 65 | assert.strictEqual(H3(2, 10), 1024) 66 | 67 | assert.strictEqual(H3(3, 3), 27) 68 | assert.strictEqual(H3(5, 5), 3125) 69 | 70 | assert.strictEqual(H3(70, 0), 1) 71 | assert.strictEqual(H3(71, 1), 71) 72 | assert.strictEqual(H3(20001, 0), 1) 73 | assert.strictEqual(H3(9999999, 1), 9999999) 74 | }) 75 | }) 76 | 77 | describe('H4 (tetration)', () => { 78 | const H4 = H.bind(undefined, 4) 79 | it('works when a is 0', () => { 80 | assert.strictEqual(H4(0, 0), 1) 81 | assert.strictEqual(H4(0, 1), 0) 82 | assert.strictEqual(H4(0, 2), 1) 83 | assert.strictEqual(H4(0, 3), 0) 84 | assert.strictEqual(H4(0, 999), 0) 85 | assert.strictEqual(H4(0, 1000), 1) 86 | assert.strictEqual(H4(0, Number.MAX_VALUE), 1) 87 | }) 88 | 89 | it('works when a is 1', () => { 90 | assert.strictEqual(H4(1, 0), 1) 91 | assert.strictEqual(H4(1, 1), 1) 92 | assert.strictEqual(H4(1, 2), 1) 93 | assert.strictEqual(H4(1, 3), 1) 94 | assert.strictEqual(H4(1, 987), 1) 95 | assert.strictEqual(H4(1, Number.MAX_VALUE), 1) 96 | }) 97 | 98 | describe('when a is 2', () => { 99 | it('works when b is 0', () => { 100 | assert.strictEqual(H4(2, 0), 1) 101 | }) 102 | 103 | it('works when b is 1', () => { 104 | assert.strictEqual(H4(2, 1), 2) 105 | }) 106 | 107 | it('works when b is 2', () => { 108 | assert.strictEqual(H4(2, 2), 4) 109 | }) 110 | 111 | it('works when b is 3', () => { 112 | assert.strictEqual(H4(2, 3), 16) 113 | }) 114 | 115 | it('works when b is 4', () => { 116 | assert.strictEqual(H4(2, 4), 65536) 117 | }) 118 | 119 | it('works when b is 5', () => { 120 | assert.strictEqual(H4(2, 5), Infinity) 121 | }) 122 | 123 | it('works when b is Number.MAX_VALUE', () => { 124 | assert.strictEqual(H4(2, Number.MAX_VALUE), Infinity) 125 | }) 126 | }) 127 | 128 | it('works when a is 3', () => { 129 | assert.strictEqual(H4(3, 0), 1) 130 | assert.strictEqual(H4(3, 1), 3) 131 | assert.strictEqual(H4(3, 2), 27) 132 | assert.strictEqual(H4(3, 3), 7625597484987) 133 | assert.strictEqual(H4(3, 4), Infinity) 134 | assert.strictEqual(H4(3, Number.MAX_VALUE), Infinity) 135 | }) 136 | 137 | it('works when a is 4', () => { 138 | assert.strictEqual(H4(4, 0), 1) 139 | assert.strictEqual(H4(4, 1), 4) 140 | assert.strictEqual(H4(4, 2), 256) 141 | assert.strictEqual(H4(4, 3), 1.3407807929942597e+154) 142 | assert.strictEqual(H4(4, 4), Infinity) 143 | assert.strictEqual(H4(4, Number.MAX_VALUE), Infinity) 144 | }) 145 | 146 | it('works when a is 5', () => { 147 | assert.strictEqual(H4(5, 0), 1) 148 | assert.strictEqual(H4(5, 1), 5) 149 | assert.strictEqual(H4(5, 2), 3125) 150 | assert.strictEqual(H4(5, 3), Infinity) 151 | assert.strictEqual(H4(5, Number.MAX_VALUE), Infinity) 152 | }) 153 | 154 | it('works when a is 143', () => { 155 | assert.strictEqual(H4(143, 0), 1) 156 | assert.strictEqual(H4(143, 1), 143) 157 | assert.strictEqual(H4(143, 2), 1.6332525972973913e+308) 158 | assert.strictEqual(H4(143, 3), Infinity) 159 | assert.strictEqual(H4(143, Number.MAX_VALUE), Infinity) 160 | }) 161 | 162 | it('works when a is 144', () => { 163 | assert.strictEqual(H4(144, 0), 1) 164 | assert.strictEqual(H4(144, 1), 144) 165 | assert.strictEqual(H4(144, 2), Infinity) 166 | assert.strictEqual(H4(144, Number.MAX_VALUE), Infinity) 167 | }) 168 | 169 | it('works when a is Number.MAX_VALUE', () => { 170 | assert.strictEqual(H4(Number.MAX_VALUE, 0), 1) 171 | assert.strictEqual(H4(Number.MAX_VALUE, 1), Number.MAX_VALUE) 172 | assert.strictEqual(H4(Number.MAX_VALUE, 2), Infinity) 173 | assert.strictEqual(H4(Number.MAX_VALUE, Number.MAX_VALUE), Infinity) 174 | }) 175 | }) 176 | 177 | describe('H5 (pentation)', () => { 178 | const H5 = H.bind(undefined, 5) 179 | it('works', () => { 180 | assert.strictEqual(H5(0, 0), 1) 181 | assert.strictEqual(H5(0, 1), 0) 182 | assert.strictEqual(H5(0, 2), 1) 183 | assert.strictEqual(H5(0, 999), 0) 184 | assert.strictEqual(H5(0, Number.MAX_VALUE), 1) 185 | 186 | assert.strictEqual(H5(1, 0), 1) 187 | assert.strictEqual(H5(1, 1), 1) 188 | assert.strictEqual(H5(1, 10000078), 1) 189 | assert.strictEqual(H5(1, Number.MAX_VALUE), 1) 190 | 191 | assert.strictEqual(H5(2, 0), 1) 192 | assert.strictEqual(H5(2, 1), 2) 193 | assert.strictEqual(H5(2, 2), 4) 194 | assert.strictEqual(H5(2, 3), 65536) 195 | assert.strictEqual(H5(2, 4), Infinity) 196 | assert.strictEqual(H5(2, Number.MAX_VALUE), Infinity) 197 | 198 | assert.strictEqual(H5(3, 0), 1) 199 | assert.strictEqual(H5(3, 1), 3) 200 | assert.strictEqual(H5(3, 2), 7625597484987) 201 | assert.strictEqual(H5(3, 3), Infinity) 202 | assert.strictEqual(H5(3, Number.MAX_VALUE), Infinity) 203 | 204 | assert.strictEqual(H5(4, 0), 1) 205 | assert.strictEqual(H5(4, 1), 4) 206 | assert.strictEqual(H5(4, 2), Infinity) 207 | assert.strictEqual(H5(4, Number.MAX_VALUE), Infinity) 208 | 209 | assert.strictEqual(H5(Number.MAX_VALUE, 0), 1) 210 | assert.strictEqual(H5(Number.MAX_VALUE, 1), Number.MAX_VALUE) 211 | assert.strictEqual(H5(Number.MAX_VALUE, 2), Infinity) 212 | assert.strictEqual(H5(Number.MAX_VALUE, Number.MAX_VALUE), Infinity) 213 | }) 214 | }) 215 | 216 | describe('H6 (hexation)', () => { 217 | const H6 = H.bind(undefined, 6) 218 | it('works', () => { 219 | assert.strictEqual(H6(0, 0), 1) 220 | assert.strictEqual(H6(0, 1), 0) 221 | assert.strictEqual(H6(0, 2), 1) 222 | assert.strictEqual(H6(0, 3), 0) 223 | assert.strictEqual(H6(0, Number.MAX_VALUE), 1) 224 | 225 | assert.strictEqual(H6(1, 0), 1) 226 | assert.strictEqual(H6(1, 1), 1) 227 | assert.strictEqual(H6(1, 2), 1) 228 | assert.strictEqual(H6(1, 3), 1) 229 | assert.strictEqual(H6(1, Number.MAX_VALUE), 1) 230 | 231 | assert.strictEqual(H6(2, 0), 1) 232 | assert.strictEqual(H6(2, 1), 2) 233 | assert.strictEqual(H6(2, 2), 4) 234 | assert.strictEqual(H6(2, 3), Infinity) 235 | assert.strictEqual(H6(2, Number.MAX_VALUE), Infinity) 236 | 237 | assert.strictEqual(H6(3, 0), 1) 238 | assert.strictEqual(H6(3, 1), 3) 239 | assert.strictEqual(H6(3, 2), Infinity) 240 | assert.strictEqual(H6(3, Number.MAX_VALUE), Infinity) 241 | 242 | assert.strictEqual(H6(Number.MAX_VALUE, 0), 1) 243 | assert.strictEqual(H6(Number.MAX_VALUE, 1), Number.MAX_VALUE) 244 | assert.strictEqual(H6(Number.MAX_VALUE, 2), Infinity) 245 | assert.strictEqual(H6(Number.MAX_VALUE, 3), Infinity) 246 | assert.strictEqual(H6(Number.MAX_VALUE, Number.MAX_VALUE), Infinity) 247 | }) 248 | }) 249 | 250 | describe('Hmax (Number.MAX_VALUE-ation)', () => { 251 | const Hmax = H.bind(undefined, Number.MAX_VALUE) 252 | it('works when a is 0', () => { 253 | assert.strictEqual(Hmax(0, 0), 1) 254 | assert.strictEqual(Hmax(0, 1), 0) 255 | assert.strictEqual(Hmax(0, 2), 1) 256 | assert.strictEqual(Hmax(0, 3), 0) 257 | assert.strictEqual(Hmax(0, Number.MAX_VALUE), 1) 258 | }) 259 | 260 | it('works when a is 1', () => { 261 | assert.strictEqual(Hmax(1, 0), 1) 262 | assert.strictEqual(Hmax(1, 1), 1) 263 | assert.strictEqual(Hmax(1, 2), 1) 264 | assert.strictEqual(Hmax(1, 3), 1) 265 | assert.strictEqual(Hmax(1, Number.MAX_VALUE), 1) 266 | }) 267 | 268 | it('works when a is 2', () => { 269 | assert.strictEqual(Hmax(2, 0), 1) 270 | assert.strictEqual(Hmax(2, 1), 2) 271 | assert.strictEqual(Hmax(2, 2), 4) 272 | assert.strictEqual(Hmax(2, 3), Infinity) 273 | assert.strictEqual(Hmax(2, Number.MAX_VALUE), Infinity) 274 | }) 275 | 276 | it('works when a is 3', () => { 277 | assert.strictEqual(Hmax(3, 0), 1) 278 | assert.strictEqual(Hmax(3, 1), 3) 279 | assert.strictEqual(Hmax(3, 2), Infinity) 280 | assert.strictEqual(Hmax(3, 3), Infinity) 281 | assert.strictEqual(Hmax(3, Number.MAX_VALUE), Infinity) 282 | }) 283 | 284 | it('works when a is 1000000', () => { 285 | assert.strictEqual(Hmax(1000000, 0), 1) 286 | assert.strictEqual(Hmax(1000000, 1), 1000000) 287 | assert.strictEqual(Hmax(1000000, 2), Infinity) 288 | assert.strictEqual(Hmax(1000000, 3), Infinity) 289 | assert.strictEqual(Hmax(1000000, Number.MAX_VALUE), Infinity) 290 | }) 291 | 292 | describe('when a is Number.MAX_VALUE', () => { 293 | it('works when b is 0', () => { 294 | assert.strictEqual(Hmax(Number.MAX_VALUE, 0), 1) 295 | }) 296 | 297 | it('works when b is 1', () => { 298 | assert.strictEqual(Hmax(Number.MAX_VALUE, 1), Number.MAX_VALUE) 299 | }) 300 | 301 | it('works when b is 2', () => { 302 | assert.strictEqual(Hmax(Number.MAX_VALUE, 2), Infinity) 303 | }) 304 | 305 | it('works when b is 3', () => { 306 | assert.strictEqual(Hmax(Number.MAX_VALUE, 3), Infinity) 307 | }) 308 | 309 | it('works when b is Number.MAX_VALUE', () => { 310 | assert.strictEqual(Hmax(Number.MAX_VALUE, Number.MAX_VALUE), Infinity) 311 | }) 312 | }) 313 | }) 314 | }) 315 | 316 | describe('BigInt arguments', () => { 317 | // Overflow behaviour is not specified and undefined so don't test it, but we can go further 318 | describe('input validation', () => { 319 | it('throws on non-integer arguments', () => { 320 | assert.throws(() => H(0.5, 1n, 2n), Error('Can only hyperoperate on three numbers or three BigInts')) 321 | assert.throws(() => H(0n, 'one', 2n), Error('Can only hyperoperate on three numbers or three BigInts')) 322 | assert.throws(() => H(0n, 1n, Infinity), Error('Can only hyperoperate on three numbers or three BigInts')) 323 | }) 324 | 325 | it('throws on negative arguments', () => { 326 | assert.throws(() => H(-1n, 1n, 2n), Error('Can only hyperoperate on non-negative integers')) 327 | assert.throws(() => H(0n, -2n, 2n), Error('Can only hyperoperate on non-negative integers')) 328 | assert.throws(() => H(0n, 1n, BigInt(-Number.MAX_VALUE)), Error('Can only hyperoperate on non-negative integers')) 329 | }) 330 | }) 331 | 332 | describe('H0 (successor)', () => { 333 | const H0 = H.bind(undefined, 0n) 334 | it('works', () => { 335 | assert.strictEqual(H0(0n, 0n), 1n) 336 | assert.strictEqual(H0(56n, 78n), 79n) 337 | assert.strictEqual(H0(1n, BigInt(Number.MAX_VALUE)), BigInt(Number.MAX_VALUE) + 1n) 338 | }) 339 | }) 340 | 341 | describe('H1 (addition)', () => { 342 | const H1 = H.bind(undefined, 1n) 343 | it('works', () => { 344 | assert.strictEqual(H1(33n, 44n), 77n) 345 | }) 346 | }) 347 | 348 | describe('H2 (multiplication)', () => { 349 | const H2 = H.bind(undefined, 2n) 350 | it('works', () => { 351 | assert.strictEqual(H2(6n, 7n), 42n) 352 | }) 353 | }) 354 | 355 | describe('H3 (exponentiation)', () => { 356 | const H3 = H.bind(undefined, 3n) 357 | it('works', () => { 358 | assert.strictEqual(H3(0n, 0n), 1n) 359 | assert.strictEqual(H3(0n, 1n), 0n) 360 | assert.strictEqual(H3(0n, 2n), 0n) 361 | assert.strictEqual(H3(0n, 153n), 0n) 362 | assert.strictEqual(H3(0n, BigInt(Number.MAX_VALUE)), 0n) 363 | 364 | assert.strictEqual(H3(1n, 0n), 1n) 365 | assert.strictEqual(H3(1n, 1n), 1n) 366 | assert.strictEqual(H3(1n, 2n), 1n) 367 | assert.strictEqual(H3(1n, 94379n), 1n) 368 | assert.strictEqual(H3(1n, BigInt(Number.MAX_SAFE_INTEGER)), 1n) 369 | 370 | assert.strictEqual(H3(2n, 0n), 1n) 371 | assert.strictEqual(H3(2n, 1n), 2n) 372 | assert.strictEqual(H3(2n, 2n), 4n) 373 | assert.strictEqual(H3(2n, 10n), 1024n) 374 | assert.strictEqual(H3(2n, 10n), 1024n) 375 | 376 | assert.strictEqual(H3(3n, 3n), 27n) 377 | assert.strictEqual(H3(5n, 5n), 3125n) 378 | 379 | assert.strictEqual(H3(70n, 0n), 1n) 380 | assert.strictEqual(H3(71n, 1n), 71n) 381 | assert.strictEqual(H3(20001n, 0n), 1n) 382 | assert.strictEqual(H3(9999999n, 1n), 9999999n) 383 | }) 384 | }) 385 | 386 | describe('H4 (tetration)', () => { 387 | const H4 = H.bind(undefined, 4n) 388 | it('works when a is 0n', () => { 389 | assert.strictEqual(H4(0n, 0n), 1n) 390 | assert.strictEqual(H4(0n, 1n), 0n) 391 | assert.strictEqual(H4(0n, 2n), 1n) 392 | assert.strictEqual(H4(0n, 3n), 0n) 393 | assert.strictEqual(H4(0n, 999n), 0n) 394 | assert.strictEqual(H4(0n, 1000n), 1n) 395 | assert.strictEqual(H4(0n, BigInt(Number.MAX_VALUE)), 1n) 396 | }) 397 | 398 | it('works when a is 1n', () => { 399 | assert.strictEqual(H4(1n, 0n), 1n) 400 | assert.strictEqual(H4(1n, 1n), 1n) 401 | assert.strictEqual(H4(1n, 2n), 1n) 402 | assert.strictEqual(H4(1n, 3n), 1n) 403 | assert.strictEqual(H4(1n, 987n), 1n) 404 | assert.strictEqual(H4(1n, BigInt(Number.MAX_VALUE)), 1n) 405 | }) 406 | 407 | describe('when a is 2n', () => { 408 | it('works when b is 0n', () => { 409 | assert.strictEqual(H4(2n, 0n), 1n) 410 | }) 411 | 412 | it('works when b is 1n', () => { 413 | assert.strictEqual(H4(2n, 1n), 2n) 414 | }) 415 | 416 | it('works when b is 2n', () => { 417 | assert.strictEqual(H4(2n, 2n), 4n) 418 | }) 419 | 420 | it('works when b is 3n', () => { 421 | assert.strictEqual(H4(2n, 3n), 16n) 422 | }) 423 | 424 | it('works when b is 4n', () => { 425 | assert.strictEqual(H4(2n, 4n), 65536n) 426 | }) 427 | 428 | it('works when b is 5n', () => { 429 | assert.strictEqual(H4(2n, 5n), 2n ** 65536n) // a very large literal 430 | }) 431 | 432 | it('works when b is 5n', () => { 433 | assert.throws(() => H4(2n, 6n), RangeError) 434 | }) 435 | 436 | it('works when b is BigInt(Number.MAX_VALUE)', () => { 437 | assert.throws(() => H4(2n, BigInt(Number.MAX_VALUE)), RangeError) 438 | }) 439 | }) 440 | 441 | it('works when a is 3n', () => { 442 | assert.strictEqual(H4(3n, 0n), 1n) 443 | assert.strictEqual(H4(3n, 1n), 3n) 444 | assert.strictEqual(H4(3n, 2n), 27n) 445 | assert.strictEqual(H4(3n, 3n), 7625597484987n) 446 | assert.throws(() => H4(3n, 4n), RangeError) 447 | assert.throws(() => H4(3n, BigInt(Number.MAX_VALUE)), RangeError) 448 | }) 449 | 450 | it('works when a is 4n', () => { 451 | assert.strictEqual(H4(4n, 0n), 1n) 452 | assert.strictEqual(H4(4n, 1n), 4n) 453 | assert.strictEqual(H4(4n, 2n), 256n) 454 | assert.strictEqual(H4(4n, 3n), 4n ** 4n ** 4n) 455 | assert.throws(() => H4(4n, 4n), RangeError) 456 | assert.throws(() => H4(4n, BigInt(Number.MAX_VALUE)), RangeError) 457 | }) 458 | 459 | it('works when a is 5n', () => { 460 | assert.strictEqual(H4(5n, 0n), 1n) 461 | assert.strictEqual(H4(5n, 1n), 5n) 462 | assert.strictEqual(H4(5n, 2n), 3125n) 463 | assert.strictEqual(H4(5n, 3n), 5n ** 3125n) // a very large literal 464 | assert.throws(() => H4(5n, 4n), RangeError) 465 | assert.throws(() => H4(5n, BigInt(Number.MAX_VALUE)), RangeError) 466 | }) 467 | 468 | it('works when a is 143n', () => { 469 | assert.strictEqual(H4(143n, 0n), 1n) 470 | assert.strictEqual(H4(143n, 1n), 143n) 471 | assert.strictEqual(H4(143n, 2n), 143n ** 143n) // medium-sized literal 472 | assert.throws(() => H4(143n, 3n), RangeError) 473 | assert.throws(() => H4(143n, BigInt(Number.MAX_VALUE)), RangeError) 474 | }) 475 | 476 | it('works when a is 144n', () => { 477 | assert.strictEqual(H4(144n, 0n), 1n) 478 | assert.strictEqual(H4(144n, 1n), 144n) 479 | assert.strictEqual(H4(144n, 2n), 144n ** 144n) // medium-sized literal 480 | assert.throws(() => H4(144n, 3n), RangeError) 481 | assert.throws(() => H4(144n, BigInt(Number.MAX_VALUE)), RangeError) 482 | }) 483 | 484 | it('works when a is BigInt(Number.MAX_VALUE)', () => { 485 | assert.strictEqual(H4(BigInt(Number.MAX_VALUE), 0n), 1n) 486 | assert.strictEqual(H4(BigInt(Number.MAX_VALUE), 1n), BigInt(Number.MAX_VALUE)) 487 | assert.throws(() => H4(BigInt(Number.MAX_VALUE), 2n), RangeError) 488 | assert.throws(() => H4(BigInt(Number.MAX_VALUE), BigInt(Number.MAX_VALUE)), RangeError) 489 | }) 490 | }) 491 | 492 | describe('H5 (pentation)', () => { 493 | const H5 = H.bind(undefined, 5n) 494 | it('works', () => { 495 | assert.strictEqual(H5(0n, 0n), 1n) 496 | assert.strictEqual(H5(0n, 1n), 0n) 497 | assert.strictEqual(H5(0n, 2n), 1n) 498 | assert.strictEqual(H5(0n, 999n), 0n) 499 | assert.strictEqual(H5(0n, BigInt(Number.MAX_VALUE)), 1n) 500 | 501 | assert.strictEqual(H5(1n, 0n), 1n) 502 | assert.strictEqual(H5(1n, 1n), 1n) 503 | assert.strictEqual(H5(1n, 10000078n), 1n) 504 | assert.strictEqual(H5(1n, BigInt(Number.MAX_VALUE)), 1n) 505 | 506 | assert.strictEqual(H5(2n, 0n), 1n) 507 | assert.strictEqual(H5(2n, 1n), 2n) 508 | assert.strictEqual(H5(2n, 2n), 4n) 509 | assert.strictEqual(H5(2n, 3n), 65536n) 510 | assert.throws(() => H5(2n, 4n), RangeError) 511 | assert.throws(() => H5(2n, BigInt(Number.MAX_VALUE)), RangeError) 512 | 513 | assert.strictEqual(H5(3n, 0n), 1n) 514 | assert.strictEqual(H5(3n, 1n), 3n) 515 | assert.strictEqual(H5(3n, 2n), 7625597484987n) 516 | assert.throws(() => H5(3n, 3n), RangeError) 517 | assert.throws(() => H5(3n, BigInt(Number.MAX_VALUE)), RangeError) 518 | 519 | assert.strictEqual(H5(4n, 0n), 1n) 520 | assert.strictEqual(H5(4n, 1n), 4n) 521 | assert.throws(() => H5(4n, 2n), RangeError) 522 | assert.throws(() => H5(4n, BigInt(Number.MAX_VALUE)), RangeError) 523 | 524 | assert.strictEqual(H5(BigInt(Number.MAX_VALUE), 0n), 1n) 525 | assert.strictEqual(H5(BigInt(Number.MAX_VALUE), 1n), BigInt(Number.MAX_VALUE)) 526 | assert.throws(() => H5(BigInt(Number.MAX_VALUE), 2n), RangeError) 527 | assert.throws(() => H5(BigInt(Number.MAX_VALUE), BigInt(Number.MAX_VALUE)), RangeError) 528 | }) 529 | }) 530 | 531 | describe('H6 (hexation)', () => { 532 | const H6 = H.bind(undefined, 6n) 533 | it('works', () => { 534 | assert.strictEqual(H6(0n, 0n), 1n) 535 | assert.strictEqual(H6(0n, 1n), 0n) 536 | assert.strictEqual(H6(0n, 2n), 1n) 537 | assert.strictEqual(H6(0n, 3n), 0n) 538 | assert.strictEqual(H6(0n, BigInt(Number.MAX_VALUE)), 1n) 539 | 540 | assert.strictEqual(H6(1n, 0n), 1n) 541 | assert.strictEqual(H6(1n, 1n), 1n) 542 | assert.strictEqual(H6(1n, 2n), 1n) 543 | assert.strictEqual(H6(1n, 3n), 1n) 544 | assert.strictEqual(H6(1n, BigInt(Number.MAX_VALUE)), 1n) 545 | 546 | assert.strictEqual(H6(2n, 0n), 1n) 547 | assert.strictEqual(H6(2n, 1n), 2n) 548 | assert.strictEqual(H6(2n, 2n), 4n) 549 | assert.throws(() => H6(2n, 3n), RangeError) 550 | assert.throws(() => H6(2n, BigInt(Number.MAX_VALUE)), RangeError) 551 | 552 | assert.strictEqual(H6(3n, 0n), 1n) 553 | assert.strictEqual(H6(3n, 1n), 3n) 554 | assert.throws(() => H6(3n, 2n), RangeError) 555 | assert.throws(() => H6(3n, BigInt(Number.MAX_VALUE)), RangeError) 556 | 557 | assert.strictEqual(H6(BigInt(Number.MAX_VALUE), 0n), 1n) 558 | assert.strictEqual(H6(BigInt(Number.MAX_VALUE), 1n), BigInt(Number.MAX_VALUE)) 559 | assert.throws(() => H6(BigInt(Number.MAX_VALUE), 2n), RangeError) 560 | assert.throws(() => H6(BigInt(Number.MAX_VALUE), 3n), RangeError) 561 | assert.throws(() => H6(BigInt(Number.MAX_VALUE), BigInt(Number.MAX_VALUE)), RangeError) 562 | }) 563 | }) 564 | 565 | describe('Hmax (BigInt(Number.MAX_VALUE)-ation)', () => { 566 | const Hmax = H.bind(undefined, BigInt(Number.MAX_VALUE)) 567 | it('works when a is 0n', () => { 568 | assert.strictEqual(Hmax(0n, 0n), 1n) 569 | assert.strictEqual(Hmax(0n, 1n), 0n) 570 | assert.strictEqual(Hmax(0n, 2n), 1n) 571 | assert.strictEqual(Hmax(0n, 3n), 0n) 572 | assert.strictEqual(Hmax(0n, BigInt(Number.MAX_VALUE)), 1n) 573 | }) 574 | 575 | it('works when a is 1n', () => { 576 | assert.strictEqual(Hmax(1n, 0n), 1n) 577 | assert.strictEqual(Hmax(1n, 1n), 1n) 578 | assert.strictEqual(Hmax(1n, 2n), 1n) 579 | assert.strictEqual(Hmax(1n, 3n), 1n) 580 | assert.strictEqual(Hmax(1n, BigInt(Number.MAX_VALUE)), 1n) 581 | }) 582 | 583 | it('works when a is 2n', () => { 584 | assert.strictEqual(Hmax(2n, 0n), 1n) 585 | assert.strictEqual(Hmax(2n, 1n), 2n) 586 | assert.strictEqual(Hmax(2n, 2n), 4n) 587 | assert.throws(() => Hmax(2n, 3n), RangeError) 588 | assert.throws(() => Hmax(2n, BigInt(Number.MAX_VALUE)), RangeError) 589 | }) 590 | 591 | it('works when a is 3n', () => { 592 | assert.strictEqual(Hmax(3n, 0n), 1n) 593 | assert.strictEqual(Hmax(3n, 1n), 3n) 594 | assert.throws(() => Hmax(3n, 2n), RangeError) 595 | assert.throws(() => Hmax(3n, 3n), RangeError) 596 | assert.throws(() => Hmax(3n, BigInt(Number.MAX_VALUE)), RangeError) 597 | }) 598 | 599 | it('works when a is 1000000n', () => { 600 | assert.strictEqual(Hmax(1000000n, 0n), 1n) 601 | assert.strictEqual(Hmax(1000000n, 1n), 1000000n) 602 | assert.throws(() => Hmax(1000000n, 2n), RangeError) 603 | assert.throws(() => Hmax(1000000n, 3n), RangeError) 604 | assert.throws(() => Hmax(1000000n, BigInt(Number.MAX_VALUE)), RangeError) 605 | }) 606 | 607 | describe('when a is BigInt(Number.MAX_VALUE)', () => { 608 | it('works when b is 0n', () => { 609 | assert.strictEqual(Hmax(BigInt(Number.MAX_VALUE), 0n), 1n) 610 | }) 611 | 612 | it('works when b is 1n', () => { 613 | assert.strictEqual(Hmax(BigInt(Number.MAX_VALUE), 1n), BigInt(Number.MAX_VALUE)) 614 | }) 615 | 616 | it('works when b is 2n', () => { 617 | assert.throws(() => Hmax(BigInt(Number.MAX_VALUE), 2n), RangeError) 618 | }) 619 | 620 | it('works when b is 3n', () => { 621 | assert.throws(() => Hmax(BigInt(Number.MAX_VALUE), 3n), RangeError) 622 | }) 623 | 624 | it('works when b is BigInt(Number.MAX_VALUE)', () => { 625 | assert.throws(() => Hmax(BigInt(Number.MAX_VALUE), BigInt(Number.MAX_VALUE)), RangeError) 626 | }) 627 | }) 628 | }) 629 | }) 630 | }) 631 | --------------------------------------------------------------------------------