├── .github └── workflows │ └── publish.yml ├── .gitignore ├── .npmignore ├── README.md ├── package-lock.json ├── package.json ├── src ├── index.ts └── utils │ └── utils.ts ├── tests ├── answer.test.ts └── rotate.test.ts ├── tsconfig.json ├── tsup.config.ts └── vitest.config.ts /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Build & Publish to npm 2 | 3 | on: 4 | push: 5 | tags: 6 | - "v*" 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout repo 14 | uses: actions/checkout@v4 15 | 16 | - name: Set up Node 17 | uses: actions/setup-node@v4 18 | with: 19 | node-version: 20 20 | registry-url: "https://registry.npmjs.org/" 21 | 22 | - name: Install dependencies 23 | run: npm install 24 | 25 | - name: Run build 26 | run: npm run build 27 | 28 | - name: Run tests 29 | run: npm run test 30 | 31 | - name: Publish to npm 32 | run: npm publish --access public 33 | env: 34 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /dist 3 | 4 | .package-lock.json 5 | 6 | 7 | .env -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /src 2 | /node_modules 3 | 4 | .env 5 | 6 | tsconfig.json 7 | tsup.config.ts 8 | vitest.config.ts 9 | /tests 10 | /.github -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ChatGPTReversed - Educational project 2 | 3 | ## **Update 02.02.2025**: The `ChatGPTReversed` instance doesn't need any params anymore. Scroll to the End for documentation 4 | 5 | Lets keep it simple, this is a educational project to learn to reverse complex API's and understand how they communicate with the frontend. 6 | In this case we take a look at the ChatGPT frontend and reverse engineer the API used to communicate with the LLM. 7 | 8 | OpenAi uses several techniques to prevent malicious use of their API, eg. rate limiting, token expiration, hashing, proof of work, continious calls, proxies, captchas, etc. 9 | 10 | We take a look at the ChatGPT webapp as starting point and only use the chromium devtools to understand the process. 11 | 12 | ![step1](https://i.imgur.com/FbvbKML.png) 13 | We start by opening the ChatGPT webapp and open the devtools to see the network requests. 14 | 15 | ![step2](https://i.imgur.com/SSXA50s.png) 16 | `https://chatgpt.com/backend-api/conversation` endpoint is called with a POST request, we can see the payload and type of response. (In this case its a EventStream) 17 | 18 | ![step3](https://i.imgur.com/52qYDXC.png) 19 | ![step4](https://i.imgur.com/p3eRbQ8.png) 20 | Several Identifing headers and cookies are used to prevent abuse, in this case: 21 | `Authorization(JWT Token)`, `csrf-token(CSRF protection)`, `session-token (Same as the JWT token)`, `Requirements-Token & Proof Token` 22 | 23 | ![step5](https://i.imgur.com/CwCzpnV.png) 24 | `https://chatgpt.com/backend-api/sentinel/chat-requirements` endpoint is called before the conversation starts, it passes in the token x and returns the token y. 25 | 26 | ```json 27 | { 28 | "persona": "chatgpt-freeaccount", 29 | "token": "y", 30 | "arkose": {}, 31 | "turnstile": {}, 32 | "proofofwork": { 33 | "required": true, 34 | "seed": "0.81186133b2821174", 35 | "difficulty": "073682" 36 | } 37 | } 38 | ``` 39 | 40 | To find out how x is retrieved we need to take a look at the minified source code of the frontend. 41 | 42 | ![step6](https://i.imgur.com/XuWosqk.png) 43 | Token x in this case is variable e which is passed as callback from variable n which uses the function `getRequirementsToken` to retrieve the token. 44 | ![step7](https://i.imgur.com/hJfvHKS.png) 45 | The function `getRequirementsToken` in this case returns the token x by checking if the value is already in a map called `answers`, if not it calls the function \_generateAnswer which returns the token x by using a hash function provided by the hashing library `hash-wasm`. 46 | 47 | ![step8](https://i.imgur.com/Ld0al4b.png) 48 | We place a breakpoint right after the `getRequirementsToken` function is called and check the returned value which is the token x. 49 | 50 | So we have the token x (Requirements token), we need to pass to the endpoint, we also have the token y (Required Requirements Token) which is returned by the endpoint. The last thing we need is the token z (Proof token) which as we find out is also generated with `_generateAnswer`. 51 | 52 | `_generateAnswer` function is called with the seed and difficulty returned by the endpoint, it uses the seed and also multiple parameters retrieved by the `getConfig` such as screen size, timezone, cpu cores, etc. to generate a hash and satisfy the difficulty condition. If no hash is found it will increment the step and try again. It falls back to a specified value after multiple steps. 53 | 54 | In this case the function `_generateAnswer` is called with the seed and difficulty returned by the endpoint and that returns the token z. 55 | 56 | So we have all the required tokens to call the conversation endpoint and start a conversation with the LLM. 57 | To recap: 58 | 59 | - Session Token (JWT Token) is returned by `https://chatgpt.com/api/auth/session` in field `accessToken` 60 | 61 | - CSRF Token is returned by `https://chatgpt.com/api/auth/csrf` in field `csrfToken` 62 | 63 | - Requirements Token (Token x) is returned by `getRequirementsToken` function 64 | 65 | - Required Requirements Token (Token y) is returned by the endpoint `https://chatgpt.com/backend-api/sentinel/chat-requirements` 66 | 67 | - Proof Token (Token z) is returned by `_generateAnswer` function with the seed and difficulty returned by the `https://chatgpt.com/backend-api/sentinel/chat-requirements` endpoint 68 | 69 | The rest is basic web communication knowledge. 70 | 71 | ## Documentation 72 | 73 | ```typescript 74 | import {ChatGPTReversed} from "chatgptreversed"; // const {ChatGPTReversed} = require("chatgptreversed"); 75 | 76 | const chatgpt = new ChatGPTReversed(); 77 | 78 | const result = await chatgpt.complete("Hello, how are you?"); 79 | console.log(result); 80 | 81 | // Output: Hello! I'm here and ready to assist you. How can I help you today? 82 | ``` 83 | 84 | ```typescript 85 | import {ChatGPTReversed} from "chatgptreversed"; // const {ChatGPTReversed} = require("chatgptreversed"); 86 | 87 | const chatgpt = new ChatGPTReversed(); 88 | 89 | async function main() { 90 | const result = await chatgpt.complete("Hello, how are you?"); 91 | console.log(result); 92 | } 93 | 94 | main(); 95 | 96 | // Output: Hello! I'm here and ready to assist you. How can I help you today? 97 | ``` 98 | 99 | Like this project? Leave a star! 💫⭐ 100 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chatgptreversed", 3 | "version": "0.2.4", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "chatgptreversed", 9 | "version": "0.2.4", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@types/node": "^20.14.2", 13 | "tsup": "^8.1.0", 14 | "typescript": "^5.4.5", 15 | "vitest": "^3.0.4" 16 | } 17 | }, 18 | "node_modules/@esbuild/aix-ppc64": { 19 | "version": "0.21.5", 20 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 21 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 22 | "cpu": [ 23 | "ppc64" 24 | ], 25 | "dev": true, 26 | "license": "MIT", 27 | "optional": true, 28 | "os": [ 29 | "aix" 30 | ], 31 | "engines": { 32 | "node": ">=12" 33 | } 34 | }, 35 | "node_modules/@esbuild/android-arm": { 36 | "version": "0.21.5", 37 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 38 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 39 | "cpu": [ 40 | "arm" 41 | ], 42 | "dev": true, 43 | "license": "MIT", 44 | "optional": true, 45 | "os": [ 46 | "android" 47 | ], 48 | "engines": { 49 | "node": ">=12" 50 | } 51 | }, 52 | "node_modules/@esbuild/android-arm64": { 53 | "version": "0.21.5", 54 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 55 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 56 | "cpu": [ 57 | "arm64" 58 | ], 59 | "dev": true, 60 | "license": "MIT", 61 | "optional": true, 62 | "os": [ 63 | "android" 64 | ], 65 | "engines": { 66 | "node": ">=12" 67 | } 68 | }, 69 | "node_modules/@esbuild/android-x64": { 70 | "version": "0.21.5", 71 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 72 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 73 | "cpu": [ 74 | "x64" 75 | ], 76 | "dev": true, 77 | "license": "MIT", 78 | "optional": true, 79 | "os": [ 80 | "android" 81 | ], 82 | "engines": { 83 | "node": ">=12" 84 | } 85 | }, 86 | "node_modules/@esbuild/darwin-arm64": { 87 | "version": "0.21.5", 88 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 89 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 90 | "cpu": [ 91 | "arm64" 92 | ], 93 | "dev": true, 94 | "license": "MIT", 95 | "optional": true, 96 | "os": [ 97 | "darwin" 98 | ], 99 | "engines": { 100 | "node": ">=12" 101 | } 102 | }, 103 | "node_modules/@esbuild/darwin-x64": { 104 | "version": "0.21.5", 105 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 106 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 107 | "cpu": [ 108 | "x64" 109 | ], 110 | "dev": true, 111 | "license": "MIT", 112 | "optional": true, 113 | "os": [ 114 | "darwin" 115 | ], 116 | "engines": { 117 | "node": ">=12" 118 | } 119 | }, 120 | "node_modules/@esbuild/freebsd-arm64": { 121 | "version": "0.21.5", 122 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 123 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 124 | "cpu": [ 125 | "arm64" 126 | ], 127 | "dev": true, 128 | "license": "MIT", 129 | "optional": true, 130 | "os": [ 131 | "freebsd" 132 | ], 133 | "engines": { 134 | "node": ">=12" 135 | } 136 | }, 137 | "node_modules/@esbuild/freebsd-x64": { 138 | "version": "0.21.5", 139 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 140 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 141 | "cpu": [ 142 | "x64" 143 | ], 144 | "dev": true, 145 | "license": "MIT", 146 | "optional": true, 147 | "os": [ 148 | "freebsd" 149 | ], 150 | "engines": { 151 | "node": ">=12" 152 | } 153 | }, 154 | "node_modules/@esbuild/linux-arm": { 155 | "version": "0.21.5", 156 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 157 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 158 | "cpu": [ 159 | "arm" 160 | ], 161 | "dev": true, 162 | "license": "MIT", 163 | "optional": true, 164 | "os": [ 165 | "linux" 166 | ], 167 | "engines": { 168 | "node": ">=12" 169 | } 170 | }, 171 | "node_modules/@esbuild/linux-arm64": { 172 | "version": "0.21.5", 173 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 174 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 175 | "cpu": [ 176 | "arm64" 177 | ], 178 | "dev": true, 179 | "license": "MIT", 180 | "optional": true, 181 | "os": [ 182 | "linux" 183 | ], 184 | "engines": { 185 | "node": ">=12" 186 | } 187 | }, 188 | "node_modules/@esbuild/linux-ia32": { 189 | "version": "0.21.5", 190 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 191 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 192 | "cpu": [ 193 | "ia32" 194 | ], 195 | "dev": true, 196 | "license": "MIT", 197 | "optional": true, 198 | "os": [ 199 | "linux" 200 | ], 201 | "engines": { 202 | "node": ">=12" 203 | } 204 | }, 205 | "node_modules/@esbuild/linux-loong64": { 206 | "version": "0.21.5", 207 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 208 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 209 | "cpu": [ 210 | "loong64" 211 | ], 212 | "dev": true, 213 | "license": "MIT", 214 | "optional": true, 215 | "os": [ 216 | "linux" 217 | ], 218 | "engines": { 219 | "node": ">=12" 220 | } 221 | }, 222 | "node_modules/@esbuild/linux-mips64el": { 223 | "version": "0.21.5", 224 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 225 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 226 | "cpu": [ 227 | "mips64el" 228 | ], 229 | "dev": true, 230 | "license": "MIT", 231 | "optional": true, 232 | "os": [ 233 | "linux" 234 | ], 235 | "engines": { 236 | "node": ">=12" 237 | } 238 | }, 239 | "node_modules/@esbuild/linux-ppc64": { 240 | "version": "0.21.5", 241 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 242 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 243 | "cpu": [ 244 | "ppc64" 245 | ], 246 | "dev": true, 247 | "license": "MIT", 248 | "optional": true, 249 | "os": [ 250 | "linux" 251 | ], 252 | "engines": { 253 | "node": ">=12" 254 | } 255 | }, 256 | "node_modules/@esbuild/linux-riscv64": { 257 | "version": "0.21.5", 258 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 259 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 260 | "cpu": [ 261 | "riscv64" 262 | ], 263 | "dev": true, 264 | "license": "MIT", 265 | "optional": true, 266 | "os": [ 267 | "linux" 268 | ], 269 | "engines": { 270 | "node": ">=12" 271 | } 272 | }, 273 | "node_modules/@esbuild/linux-s390x": { 274 | "version": "0.21.5", 275 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 276 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 277 | "cpu": [ 278 | "s390x" 279 | ], 280 | "dev": true, 281 | "license": "MIT", 282 | "optional": true, 283 | "os": [ 284 | "linux" 285 | ], 286 | "engines": { 287 | "node": ">=12" 288 | } 289 | }, 290 | "node_modules/@esbuild/linux-x64": { 291 | "version": "0.21.5", 292 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 293 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 294 | "cpu": [ 295 | "x64" 296 | ], 297 | "dev": true, 298 | "license": "MIT", 299 | "optional": true, 300 | "os": [ 301 | "linux" 302 | ], 303 | "engines": { 304 | "node": ">=12" 305 | } 306 | }, 307 | "node_modules/@esbuild/netbsd-arm64": { 308 | "version": "0.24.2", 309 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 310 | "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 311 | "cpu": [ 312 | "arm64" 313 | ], 314 | "dev": true, 315 | "license": "MIT", 316 | "optional": true, 317 | "os": [ 318 | "netbsd" 319 | ], 320 | "engines": { 321 | "node": ">=18" 322 | } 323 | }, 324 | "node_modules/@esbuild/netbsd-x64": { 325 | "version": "0.21.5", 326 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 327 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 328 | "cpu": [ 329 | "x64" 330 | ], 331 | "dev": true, 332 | "license": "MIT", 333 | "optional": true, 334 | "os": [ 335 | "netbsd" 336 | ], 337 | "engines": { 338 | "node": ">=12" 339 | } 340 | }, 341 | "node_modules/@esbuild/openbsd-arm64": { 342 | "version": "0.24.2", 343 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 344 | "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 345 | "cpu": [ 346 | "arm64" 347 | ], 348 | "dev": true, 349 | "license": "MIT", 350 | "optional": true, 351 | "os": [ 352 | "openbsd" 353 | ], 354 | "engines": { 355 | "node": ">=18" 356 | } 357 | }, 358 | "node_modules/@esbuild/openbsd-x64": { 359 | "version": "0.21.5", 360 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 361 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 362 | "cpu": [ 363 | "x64" 364 | ], 365 | "dev": true, 366 | "license": "MIT", 367 | "optional": true, 368 | "os": [ 369 | "openbsd" 370 | ], 371 | "engines": { 372 | "node": ">=12" 373 | } 374 | }, 375 | "node_modules/@esbuild/sunos-x64": { 376 | "version": "0.21.5", 377 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 378 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 379 | "cpu": [ 380 | "x64" 381 | ], 382 | "dev": true, 383 | "license": "MIT", 384 | "optional": true, 385 | "os": [ 386 | "sunos" 387 | ], 388 | "engines": { 389 | "node": ">=12" 390 | } 391 | }, 392 | "node_modules/@esbuild/win32-arm64": { 393 | "version": "0.21.5", 394 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 395 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 396 | "cpu": [ 397 | "arm64" 398 | ], 399 | "dev": true, 400 | "license": "MIT", 401 | "optional": true, 402 | "os": [ 403 | "win32" 404 | ], 405 | "engines": { 406 | "node": ">=12" 407 | } 408 | }, 409 | "node_modules/@esbuild/win32-ia32": { 410 | "version": "0.21.5", 411 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 412 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 413 | "cpu": [ 414 | "ia32" 415 | ], 416 | "dev": true, 417 | "license": "MIT", 418 | "optional": true, 419 | "os": [ 420 | "win32" 421 | ], 422 | "engines": { 423 | "node": ">=12" 424 | } 425 | }, 426 | "node_modules/@esbuild/win32-x64": { 427 | "version": "0.21.5", 428 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 429 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 430 | "cpu": [ 431 | "x64" 432 | ], 433 | "dev": true, 434 | "license": "MIT", 435 | "optional": true, 436 | "os": [ 437 | "win32" 438 | ], 439 | "engines": { 440 | "node": ">=12" 441 | } 442 | }, 443 | "node_modules/@isaacs/cliui": { 444 | "version": "8.0.2", 445 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 446 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 447 | "dev": true, 448 | "license": "ISC", 449 | "dependencies": { 450 | "string-width": "^5.1.2", 451 | "string-width-cjs": "npm:string-width@^4.2.0", 452 | "strip-ansi": "^7.0.1", 453 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 454 | "wrap-ansi": "^8.1.0", 455 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 456 | }, 457 | "engines": { 458 | "node": ">=12" 459 | } 460 | }, 461 | "node_modules/@jridgewell/gen-mapping": { 462 | "version": "0.3.5", 463 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 464 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 465 | "dev": true, 466 | "license": "MIT", 467 | "dependencies": { 468 | "@jridgewell/set-array": "^1.2.1", 469 | "@jridgewell/sourcemap-codec": "^1.4.10", 470 | "@jridgewell/trace-mapping": "^0.3.24" 471 | }, 472 | "engines": { 473 | "node": ">=6.0.0" 474 | } 475 | }, 476 | "node_modules/@jridgewell/resolve-uri": { 477 | "version": "3.1.2", 478 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 479 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 480 | "dev": true, 481 | "license": "MIT", 482 | "engines": { 483 | "node": ">=6.0.0" 484 | } 485 | }, 486 | "node_modules/@jridgewell/set-array": { 487 | "version": "1.2.1", 488 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 489 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 490 | "dev": true, 491 | "license": "MIT", 492 | "engines": { 493 | "node": ">=6.0.0" 494 | } 495 | }, 496 | "node_modules/@jridgewell/sourcemap-codec": { 497 | "version": "1.5.0", 498 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 499 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 500 | "dev": true, 501 | "license": "MIT" 502 | }, 503 | "node_modules/@jridgewell/trace-mapping": { 504 | "version": "0.3.25", 505 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 506 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 507 | "dev": true, 508 | "license": "MIT", 509 | "dependencies": { 510 | "@jridgewell/resolve-uri": "^3.1.0", 511 | "@jridgewell/sourcemap-codec": "^1.4.14" 512 | } 513 | }, 514 | "node_modules/@nodelib/fs.scandir": { 515 | "version": "2.1.5", 516 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 517 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 518 | "dev": true, 519 | "license": "MIT", 520 | "dependencies": { 521 | "@nodelib/fs.stat": "2.0.5", 522 | "run-parallel": "^1.1.9" 523 | }, 524 | "engines": { 525 | "node": ">= 8" 526 | } 527 | }, 528 | "node_modules/@nodelib/fs.stat": { 529 | "version": "2.0.5", 530 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 531 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 532 | "dev": true, 533 | "license": "MIT", 534 | "engines": { 535 | "node": ">= 8" 536 | } 537 | }, 538 | "node_modules/@nodelib/fs.walk": { 539 | "version": "1.2.8", 540 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 541 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 542 | "dev": true, 543 | "license": "MIT", 544 | "dependencies": { 545 | "@nodelib/fs.scandir": "2.1.5", 546 | "fastq": "^1.6.0" 547 | }, 548 | "engines": { 549 | "node": ">= 8" 550 | } 551 | }, 552 | "node_modules/@pkgjs/parseargs": { 553 | "version": "0.11.0", 554 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 555 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 556 | "dev": true, 557 | "license": "MIT", 558 | "optional": true, 559 | "engines": { 560 | "node": ">=14" 561 | } 562 | }, 563 | "node_modules/@rollup/rollup-android-arm-eabi": { 564 | "version": "4.34.0", 565 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.0.tgz", 566 | "integrity": "sha512-Eeao7ewDq79jVEsrtWIj5RNqB8p2knlm9fhR6uJ2gqP7UfbLrTrxevudVrEPDM7Wkpn/HpRC2QfazH7MXLz3vQ==", 567 | "cpu": [ 568 | "arm" 569 | ], 570 | "dev": true, 571 | "license": "MIT", 572 | "optional": true, 573 | "os": [ 574 | "android" 575 | ] 576 | }, 577 | "node_modules/@rollup/rollup-android-arm64": { 578 | "version": "4.34.0", 579 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.0.tgz", 580 | "integrity": "sha512-yVh0Kf1f0Fq4tWNf6mWcbQBCLDpDrDEl88lzPgKhrgTcDrTtlmun92ywEF9dCjmYO3EFiSuJeeo9cYRxl2FswA==", 581 | "cpu": [ 582 | "arm64" 583 | ], 584 | "dev": true, 585 | "license": "MIT", 586 | "optional": true, 587 | "os": [ 588 | "android" 589 | ] 590 | }, 591 | "node_modules/@rollup/rollup-darwin-arm64": { 592 | "version": "4.34.0", 593 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.0.tgz", 594 | "integrity": "sha512-gCs0ErAZ9s0Osejpc3qahTsqIPUDjSKIyxK/0BGKvL+Tn0n3Kwvj8BrCv7Y5sR1Ypz1K2qz9Ny0VvkVyoXBVUQ==", 595 | "cpu": [ 596 | "arm64" 597 | ], 598 | "dev": true, 599 | "license": "MIT", 600 | "optional": true, 601 | "os": [ 602 | "darwin" 603 | ] 604 | }, 605 | "node_modules/@rollup/rollup-darwin-x64": { 606 | "version": "4.34.0", 607 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.0.tgz", 608 | "integrity": "sha512-aIB5Anc8hngk15t3GUkiO4pv42ykXHfmpXGS+CzM9CTyiWyT8HIS5ygRAy7KcFb/wiw4Br+vh1byqcHRTfq2tQ==", 609 | "cpu": [ 610 | "x64" 611 | ], 612 | "dev": true, 613 | "license": "MIT", 614 | "optional": true, 615 | "os": [ 616 | "darwin" 617 | ] 618 | }, 619 | "node_modules/@rollup/rollup-freebsd-arm64": { 620 | "version": "4.34.0", 621 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.0.tgz", 622 | "integrity": "sha512-kpdsUdMlVJMRMaOf/tIvxk8TQdzHhY47imwmASOuMajg/GXpw8GKNd8LNwIHE5Yd1onehNpcUB9jHY6wgw9nHQ==", 623 | "cpu": [ 624 | "arm64" 625 | ], 626 | "dev": true, 627 | "license": "MIT", 628 | "optional": true, 629 | "os": [ 630 | "freebsd" 631 | ] 632 | }, 633 | "node_modules/@rollup/rollup-freebsd-x64": { 634 | "version": "4.34.0", 635 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.0.tgz", 636 | "integrity": "sha512-D0RDyHygOBCQiqookcPevrvgEarN0CttBecG4chOeIYCNtlKHmf5oi5kAVpXV7qs0Xh/WO2RnxeicZPtT50V0g==", 637 | "cpu": [ 638 | "x64" 639 | ], 640 | "dev": true, 641 | "license": "MIT", 642 | "optional": true, 643 | "os": [ 644 | "freebsd" 645 | ] 646 | }, 647 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 648 | "version": "4.34.0", 649 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.0.tgz", 650 | "integrity": "sha512-mCIw8j5LPDXmCOW8mfMZwT6F/Kza03EnSr4wGYEswrEfjTfVsFOxvgYfuRMxTuUF/XmRb9WSMD5GhCWDe2iNrg==", 651 | "cpu": [ 652 | "arm" 653 | ], 654 | "dev": true, 655 | "license": "MIT", 656 | "optional": true, 657 | "os": [ 658 | "linux" 659 | ] 660 | }, 661 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 662 | "version": "4.34.0", 663 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.0.tgz", 664 | "integrity": "sha512-AwwldAu4aCJPob7zmjuDUMvvuatgs8B/QiVB0KwkUarAcPB3W+ToOT+18TQwY4z09Al7G0BvCcmLRop5zBLTag==", 665 | "cpu": [ 666 | "arm" 667 | ], 668 | "dev": true, 669 | "license": "MIT", 670 | "optional": true, 671 | "os": [ 672 | "linux" 673 | ] 674 | }, 675 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 676 | "version": "4.34.0", 677 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.0.tgz", 678 | "integrity": "sha512-e7kDUGVP+xw05pV65ZKb0zulRploU3gTu6qH1qL58PrULDGxULIS0OSDQJLH7WiFnpd3ZKUU4VM3u/Z7Zw+e7Q==", 679 | "cpu": [ 680 | "arm64" 681 | ], 682 | "dev": true, 683 | "license": "MIT", 684 | "optional": true, 685 | "os": [ 686 | "linux" 687 | ] 688 | }, 689 | "node_modules/@rollup/rollup-linux-arm64-musl": { 690 | "version": "4.34.0", 691 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.0.tgz", 692 | "integrity": "sha512-SXYJw3zpwHgaBqTXeAZ31qfW/v50wq4HhNVvKFhRr5MnptRX2Af4KebLWR1wpxGJtLgfS2hEPuALRIY3LPAAcA==", 693 | "cpu": [ 694 | "arm64" 695 | ], 696 | "dev": true, 697 | "license": "MIT", 698 | "optional": true, 699 | "os": [ 700 | "linux" 701 | ] 702 | }, 703 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 704 | "version": "4.34.0", 705 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.0.tgz", 706 | "integrity": "sha512-e5XiCinINCI4RdyU3sFyBH4zzz7LiQRvHqDtRe9Dt8o/8hTBaYpdPimayF00eY2qy5j4PaaWK0azRgUench6WQ==", 707 | "cpu": [ 708 | "loong64" 709 | ], 710 | "dev": true, 711 | "license": "MIT", 712 | "optional": true, 713 | "os": [ 714 | "linux" 715 | ] 716 | }, 717 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 718 | "version": "4.34.0", 719 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.0.tgz", 720 | "integrity": "sha512-3SWN3e0bAsm9ToprLFBSro8nJe6YN+5xmB11N4FfNf92wvLye/+Rh5JGQtKOpwLKt6e61R1RBc9g+luLJsc23A==", 721 | "cpu": [ 722 | "ppc64" 723 | ], 724 | "dev": true, 725 | "license": "MIT", 726 | "optional": true, 727 | "os": [ 728 | "linux" 729 | ] 730 | }, 731 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 732 | "version": "4.34.0", 733 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.0.tgz", 734 | "integrity": "sha512-B1Oqt3GLh7qmhvfnc2WQla4NuHlcxAD5LyueUi5WtMc76ZWY+6qDtQYqnxARx9r+7mDGfamD+8kTJO0pKUJeJA==", 735 | "cpu": [ 736 | "riscv64" 737 | ], 738 | "dev": true, 739 | "license": "MIT", 740 | "optional": true, 741 | "os": [ 742 | "linux" 743 | ] 744 | }, 745 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 746 | "version": "4.34.0", 747 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.0.tgz", 748 | "integrity": "sha512-UfUCo0h/uj48Jq2lnhX0AOhZPSTAq3Eostas+XZ+GGk22pI+Op1Y6cxQ1JkUuKYu2iU+mXj1QjPrZm9nNWV9rg==", 749 | "cpu": [ 750 | "s390x" 751 | ], 752 | "dev": true, 753 | "license": "MIT", 754 | "optional": true, 755 | "os": [ 756 | "linux" 757 | ] 758 | }, 759 | "node_modules/@rollup/rollup-linux-x64-gnu": { 760 | "version": "4.34.0", 761 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.0.tgz", 762 | "integrity": "sha512-chZLTUIPbgcpm+Z7ALmomXW8Zh+wE2icrG+K6nt/HenPLmtwCajhQC5flNSk1Xy5EDMt/QAOz2MhzfOfJOLSiA==", 763 | "cpu": [ 764 | "x64" 765 | ], 766 | "dev": true, 767 | "license": "MIT", 768 | "optional": true, 769 | "os": [ 770 | "linux" 771 | ] 772 | }, 773 | "node_modules/@rollup/rollup-linux-x64-musl": { 774 | "version": "4.34.0", 775 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.0.tgz", 776 | "integrity": "sha512-jo0UolK70O28BifvEsFD/8r25shFezl0aUk2t0VJzREWHkq19e+pcLu4kX5HiVXNz5qqkD+aAq04Ct8rkxgbyQ==", 777 | "cpu": [ 778 | "x64" 779 | ], 780 | "dev": true, 781 | "license": "MIT", 782 | "optional": true, 783 | "os": [ 784 | "linux" 785 | ] 786 | }, 787 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 788 | "version": "4.34.0", 789 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.0.tgz", 790 | "integrity": "sha512-Vmg0NhAap2S54JojJchiu5An54qa6t/oKT7LmDaWggpIcaiL8WcWHEN6OQrfTdL6mQ2GFyH7j2T5/3YPEDOOGA==", 791 | "cpu": [ 792 | "arm64" 793 | ], 794 | "dev": true, 795 | "license": "MIT", 796 | "optional": true, 797 | "os": [ 798 | "win32" 799 | ] 800 | }, 801 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 802 | "version": "4.34.0", 803 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.0.tgz", 804 | "integrity": "sha512-CV2aqhDDOsABKHKhNcs1SZFryffQf8vK2XrxP6lxC99ELZAdvsDgPklIBfd65R8R+qvOm1SmLaZ/Fdq961+m7A==", 805 | "cpu": [ 806 | "ia32" 807 | ], 808 | "dev": true, 809 | "license": "MIT", 810 | "optional": true, 811 | "os": [ 812 | "win32" 813 | ] 814 | }, 815 | "node_modules/@rollup/rollup-win32-x64-msvc": { 816 | "version": "4.34.0", 817 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.0.tgz", 818 | "integrity": "sha512-g2ASy1QwHP88y5KWvblUolJz9rN+i4ZOsYzkEwcNfaNooxNUXG+ON6F5xFo0NIItpHqxcdAyls05VXpBnludGw==", 819 | "cpu": [ 820 | "x64" 821 | ], 822 | "dev": true, 823 | "license": "MIT", 824 | "optional": true, 825 | "os": [ 826 | "win32" 827 | ] 828 | }, 829 | "node_modules/@types/estree": { 830 | "version": "1.0.6", 831 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 832 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 833 | "dev": true, 834 | "license": "MIT" 835 | }, 836 | "node_modules/@types/node": { 837 | "version": "20.14.2", 838 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", 839 | "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", 840 | "dev": true, 841 | "license": "MIT", 842 | "dependencies": { 843 | "undici-types": "~5.26.4" 844 | } 845 | }, 846 | "node_modules/@vitest/expect": { 847 | "version": "3.0.4", 848 | "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.4.tgz", 849 | "integrity": "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==", 850 | "dev": true, 851 | "license": "MIT", 852 | "dependencies": { 853 | "@vitest/spy": "3.0.4", 854 | "@vitest/utils": "3.0.4", 855 | "chai": "^5.1.2", 856 | "tinyrainbow": "^2.0.0" 857 | }, 858 | "funding": { 859 | "url": "https://opencollective.com/vitest" 860 | } 861 | }, 862 | "node_modules/@vitest/mocker": { 863 | "version": "3.0.4", 864 | "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.4.tgz", 865 | "integrity": "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==", 866 | "dev": true, 867 | "license": "MIT", 868 | "dependencies": { 869 | "@vitest/spy": "3.0.4", 870 | "estree-walker": "^3.0.3", 871 | "magic-string": "^0.30.17" 872 | }, 873 | "funding": { 874 | "url": "https://opencollective.com/vitest" 875 | }, 876 | "peerDependencies": { 877 | "msw": "^2.4.9", 878 | "vite": "^5.0.0 || ^6.0.0" 879 | }, 880 | "peerDependenciesMeta": { 881 | "msw": { 882 | "optional": true 883 | }, 884 | "vite": { 885 | "optional": true 886 | } 887 | } 888 | }, 889 | "node_modules/@vitest/pretty-format": { 890 | "version": "3.0.4", 891 | "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", 892 | "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", 893 | "dev": true, 894 | "license": "MIT", 895 | "dependencies": { 896 | "tinyrainbow": "^2.0.0" 897 | }, 898 | "funding": { 899 | "url": "https://opencollective.com/vitest" 900 | } 901 | }, 902 | "node_modules/@vitest/runner": { 903 | "version": "3.0.4", 904 | "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.4.tgz", 905 | "integrity": "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==", 906 | "dev": true, 907 | "license": "MIT", 908 | "dependencies": { 909 | "@vitest/utils": "3.0.4", 910 | "pathe": "^2.0.2" 911 | }, 912 | "funding": { 913 | "url": "https://opencollective.com/vitest" 914 | } 915 | }, 916 | "node_modules/@vitest/snapshot": { 917 | "version": "3.0.4", 918 | "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.4.tgz", 919 | "integrity": "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==", 920 | "dev": true, 921 | "license": "MIT", 922 | "dependencies": { 923 | "@vitest/pretty-format": "3.0.4", 924 | "magic-string": "^0.30.17", 925 | "pathe": "^2.0.2" 926 | }, 927 | "funding": { 928 | "url": "https://opencollective.com/vitest" 929 | } 930 | }, 931 | "node_modules/@vitest/spy": { 932 | "version": "3.0.4", 933 | "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.4.tgz", 934 | "integrity": "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==", 935 | "dev": true, 936 | "license": "MIT", 937 | "dependencies": { 938 | "tinyspy": "^3.0.2" 939 | }, 940 | "funding": { 941 | "url": "https://opencollective.com/vitest" 942 | } 943 | }, 944 | "node_modules/@vitest/utils": { 945 | "version": "3.0.4", 946 | "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz", 947 | "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==", 948 | "dev": true, 949 | "license": "MIT", 950 | "dependencies": { 951 | "@vitest/pretty-format": "3.0.4", 952 | "loupe": "^3.1.2", 953 | "tinyrainbow": "^2.0.0" 954 | }, 955 | "funding": { 956 | "url": "https://opencollective.com/vitest" 957 | } 958 | }, 959 | "node_modules/ansi-regex": { 960 | "version": "6.0.1", 961 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 962 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 963 | "dev": true, 964 | "license": "MIT", 965 | "engines": { 966 | "node": ">=12" 967 | }, 968 | "funding": { 969 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 970 | } 971 | }, 972 | "node_modules/ansi-styles": { 973 | "version": "6.2.1", 974 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 975 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 976 | "dev": true, 977 | "license": "MIT", 978 | "engines": { 979 | "node": ">=12" 980 | }, 981 | "funding": { 982 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 983 | } 984 | }, 985 | "node_modules/any-promise": { 986 | "version": "1.3.0", 987 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 988 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 989 | "dev": true, 990 | "license": "MIT" 991 | }, 992 | "node_modules/anymatch": { 993 | "version": "3.1.3", 994 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 995 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 996 | "dev": true, 997 | "license": "ISC", 998 | "dependencies": { 999 | "normalize-path": "^3.0.0", 1000 | "picomatch": "^2.0.4" 1001 | }, 1002 | "engines": { 1003 | "node": ">= 8" 1004 | } 1005 | }, 1006 | "node_modules/array-union": { 1007 | "version": "2.1.0", 1008 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1009 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1010 | "dev": true, 1011 | "license": "MIT", 1012 | "engines": { 1013 | "node": ">=8" 1014 | } 1015 | }, 1016 | "node_modules/assertion-error": { 1017 | "version": "2.0.1", 1018 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 1019 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 1020 | "dev": true, 1021 | "license": "MIT", 1022 | "engines": { 1023 | "node": ">=12" 1024 | } 1025 | }, 1026 | "node_modules/balanced-match": { 1027 | "version": "1.0.2", 1028 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1029 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1030 | "dev": true, 1031 | "license": "MIT" 1032 | }, 1033 | "node_modules/binary-extensions": { 1034 | "version": "2.3.0", 1035 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1036 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1037 | "dev": true, 1038 | "license": "MIT", 1039 | "engines": { 1040 | "node": ">=8" 1041 | }, 1042 | "funding": { 1043 | "url": "https://github.com/sponsors/sindresorhus" 1044 | } 1045 | }, 1046 | "node_modules/brace-expansion": { 1047 | "version": "2.0.1", 1048 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1049 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1050 | "dev": true, 1051 | "license": "MIT", 1052 | "dependencies": { 1053 | "balanced-match": "^1.0.0" 1054 | } 1055 | }, 1056 | "node_modules/braces": { 1057 | "version": "3.0.3", 1058 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1059 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1060 | "dev": true, 1061 | "license": "MIT", 1062 | "dependencies": { 1063 | "fill-range": "^7.1.1" 1064 | }, 1065 | "engines": { 1066 | "node": ">=8" 1067 | } 1068 | }, 1069 | "node_modules/bundle-require": { 1070 | "version": "4.2.1", 1071 | "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.2.1.tgz", 1072 | "integrity": "sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==", 1073 | "dev": true, 1074 | "license": "MIT", 1075 | "dependencies": { 1076 | "load-tsconfig": "^0.2.3" 1077 | }, 1078 | "engines": { 1079 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1080 | }, 1081 | "peerDependencies": { 1082 | "esbuild": ">=0.17" 1083 | } 1084 | }, 1085 | "node_modules/cac": { 1086 | "version": "6.7.14", 1087 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 1088 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 1089 | "dev": true, 1090 | "license": "MIT", 1091 | "engines": { 1092 | "node": ">=8" 1093 | } 1094 | }, 1095 | "node_modules/chai": { 1096 | "version": "5.1.2", 1097 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", 1098 | "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", 1099 | "dev": true, 1100 | "license": "MIT", 1101 | "dependencies": { 1102 | "assertion-error": "^2.0.1", 1103 | "check-error": "^2.1.1", 1104 | "deep-eql": "^5.0.1", 1105 | "loupe": "^3.1.0", 1106 | "pathval": "^2.0.0" 1107 | }, 1108 | "engines": { 1109 | "node": ">=12" 1110 | } 1111 | }, 1112 | "node_modules/check-error": { 1113 | "version": "2.1.1", 1114 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", 1115 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", 1116 | "dev": true, 1117 | "license": "MIT", 1118 | "engines": { 1119 | "node": ">= 16" 1120 | } 1121 | }, 1122 | "node_modules/chokidar": { 1123 | "version": "3.6.0", 1124 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1125 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1126 | "dev": true, 1127 | "license": "MIT", 1128 | "dependencies": { 1129 | "anymatch": "~3.1.2", 1130 | "braces": "~3.0.2", 1131 | "glob-parent": "~5.1.2", 1132 | "is-binary-path": "~2.1.0", 1133 | "is-glob": "~4.0.1", 1134 | "normalize-path": "~3.0.0", 1135 | "readdirp": "~3.6.0" 1136 | }, 1137 | "engines": { 1138 | "node": ">= 8.10.0" 1139 | }, 1140 | "funding": { 1141 | "url": "https://paulmillr.com/funding/" 1142 | }, 1143 | "optionalDependencies": { 1144 | "fsevents": "~2.3.2" 1145 | } 1146 | }, 1147 | "node_modules/color-convert": { 1148 | "version": "2.0.1", 1149 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1150 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1151 | "dev": true, 1152 | "license": "MIT", 1153 | "dependencies": { 1154 | "color-name": "~1.1.4" 1155 | }, 1156 | "engines": { 1157 | "node": ">=7.0.0" 1158 | } 1159 | }, 1160 | "node_modules/color-name": { 1161 | "version": "1.1.4", 1162 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1163 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1164 | "dev": true, 1165 | "license": "MIT" 1166 | }, 1167 | "node_modules/commander": { 1168 | "version": "4.1.1", 1169 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 1170 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 1171 | "dev": true, 1172 | "license": "MIT", 1173 | "engines": { 1174 | "node": ">= 6" 1175 | } 1176 | }, 1177 | "node_modules/cross-spawn": { 1178 | "version": "7.0.3", 1179 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1180 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1181 | "dev": true, 1182 | "license": "MIT", 1183 | "dependencies": { 1184 | "path-key": "^3.1.0", 1185 | "shebang-command": "^2.0.0", 1186 | "which": "^2.0.1" 1187 | }, 1188 | "engines": { 1189 | "node": ">= 8" 1190 | } 1191 | }, 1192 | "node_modules/debug": { 1193 | "version": "4.4.0", 1194 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1195 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1196 | "dev": true, 1197 | "license": "MIT", 1198 | "dependencies": { 1199 | "ms": "^2.1.3" 1200 | }, 1201 | "engines": { 1202 | "node": ">=6.0" 1203 | }, 1204 | "peerDependenciesMeta": { 1205 | "supports-color": { 1206 | "optional": true 1207 | } 1208 | } 1209 | }, 1210 | "node_modules/deep-eql": { 1211 | "version": "5.0.2", 1212 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", 1213 | "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", 1214 | "dev": true, 1215 | "license": "MIT", 1216 | "engines": { 1217 | "node": ">=6" 1218 | } 1219 | }, 1220 | "node_modules/dir-glob": { 1221 | "version": "3.0.1", 1222 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1223 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1224 | "dev": true, 1225 | "license": "MIT", 1226 | "dependencies": { 1227 | "path-type": "^4.0.0" 1228 | }, 1229 | "engines": { 1230 | "node": ">=8" 1231 | } 1232 | }, 1233 | "node_modules/eastasianwidth": { 1234 | "version": "0.2.0", 1235 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1236 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1237 | "dev": true, 1238 | "license": "MIT" 1239 | }, 1240 | "node_modules/emoji-regex": { 1241 | "version": "9.2.2", 1242 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1243 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 1244 | "dev": true, 1245 | "license": "MIT" 1246 | }, 1247 | "node_modules/es-module-lexer": { 1248 | "version": "1.6.0", 1249 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", 1250 | "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", 1251 | "dev": true, 1252 | "license": "MIT" 1253 | }, 1254 | "node_modules/esbuild": { 1255 | "version": "0.21.5", 1256 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 1257 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 1258 | "dev": true, 1259 | "hasInstallScript": true, 1260 | "license": "MIT", 1261 | "bin": { 1262 | "esbuild": "bin/esbuild" 1263 | }, 1264 | "engines": { 1265 | "node": ">=12" 1266 | }, 1267 | "optionalDependencies": { 1268 | "@esbuild/aix-ppc64": "0.21.5", 1269 | "@esbuild/android-arm": "0.21.5", 1270 | "@esbuild/android-arm64": "0.21.5", 1271 | "@esbuild/android-x64": "0.21.5", 1272 | "@esbuild/darwin-arm64": "0.21.5", 1273 | "@esbuild/darwin-x64": "0.21.5", 1274 | "@esbuild/freebsd-arm64": "0.21.5", 1275 | "@esbuild/freebsd-x64": "0.21.5", 1276 | "@esbuild/linux-arm": "0.21.5", 1277 | "@esbuild/linux-arm64": "0.21.5", 1278 | "@esbuild/linux-ia32": "0.21.5", 1279 | "@esbuild/linux-loong64": "0.21.5", 1280 | "@esbuild/linux-mips64el": "0.21.5", 1281 | "@esbuild/linux-ppc64": "0.21.5", 1282 | "@esbuild/linux-riscv64": "0.21.5", 1283 | "@esbuild/linux-s390x": "0.21.5", 1284 | "@esbuild/linux-x64": "0.21.5", 1285 | "@esbuild/netbsd-x64": "0.21.5", 1286 | "@esbuild/openbsd-x64": "0.21.5", 1287 | "@esbuild/sunos-x64": "0.21.5", 1288 | "@esbuild/win32-arm64": "0.21.5", 1289 | "@esbuild/win32-ia32": "0.21.5", 1290 | "@esbuild/win32-x64": "0.21.5" 1291 | } 1292 | }, 1293 | "node_modules/estree-walker": { 1294 | "version": "3.0.3", 1295 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 1296 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 1297 | "dev": true, 1298 | "license": "MIT", 1299 | "dependencies": { 1300 | "@types/estree": "^1.0.0" 1301 | } 1302 | }, 1303 | "node_modules/execa": { 1304 | "version": "5.1.1", 1305 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 1306 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 1307 | "dev": true, 1308 | "license": "MIT", 1309 | "dependencies": { 1310 | "cross-spawn": "^7.0.3", 1311 | "get-stream": "^6.0.0", 1312 | "human-signals": "^2.1.0", 1313 | "is-stream": "^2.0.0", 1314 | "merge-stream": "^2.0.0", 1315 | "npm-run-path": "^4.0.1", 1316 | "onetime": "^5.1.2", 1317 | "signal-exit": "^3.0.3", 1318 | "strip-final-newline": "^2.0.0" 1319 | }, 1320 | "engines": { 1321 | "node": ">=10" 1322 | }, 1323 | "funding": { 1324 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 1325 | } 1326 | }, 1327 | "node_modules/expect-type": { 1328 | "version": "1.1.0", 1329 | "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", 1330 | "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", 1331 | "dev": true, 1332 | "license": "Apache-2.0", 1333 | "engines": { 1334 | "node": ">=12.0.0" 1335 | } 1336 | }, 1337 | "node_modules/fast-glob": { 1338 | "version": "3.3.2", 1339 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1340 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1341 | "dev": true, 1342 | "license": "MIT", 1343 | "dependencies": { 1344 | "@nodelib/fs.stat": "^2.0.2", 1345 | "@nodelib/fs.walk": "^1.2.3", 1346 | "glob-parent": "^5.1.2", 1347 | "merge2": "^1.3.0", 1348 | "micromatch": "^4.0.4" 1349 | }, 1350 | "engines": { 1351 | "node": ">=8.6.0" 1352 | } 1353 | }, 1354 | "node_modules/fastq": { 1355 | "version": "1.17.1", 1356 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 1357 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 1358 | "dev": true, 1359 | "license": "ISC", 1360 | "dependencies": { 1361 | "reusify": "^1.0.4" 1362 | } 1363 | }, 1364 | "node_modules/fill-range": { 1365 | "version": "7.1.1", 1366 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1367 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1368 | "dev": true, 1369 | "license": "MIT", 1370 | "dependencies": { 1371 | "to-regex-range": "^5.0.1" 1372 | }, 1373 | "engines": { 1374 | "node": ">=8" 1375 | } 1376 | }, 1377 | "node_modules/foreground-child": { 1378 | "version": "3.2.0", 1379 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", 1380 | "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==", 1381 | "dev": true, 1382 | "license": "ISC", 1383 | "dependencies": { 1384 | "cross-spawn": "^7.0.0", 1385 | "signal-exit": "^4.0.1" 1386 | }, 1387 | "engines": { 1388 | "node": ">=14" 1389 | }, 1390 | "funding": { 1391 | "url": "https://github.com/sponsors/isaacs" 1392 | } 1393 | }, 1394 | "node_modules/foreground-child/node_modules/signal-exit": { 1395 | "version": "4.1.0", 1396 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1397 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1398 | "dev": true, 1399 | "license": "ISC", 1400 | "engines": { 1401 | "node": ">=14" 1402 | }, 1403 | "funding": { 1404 | "url": "https://github.com/sponsors/isaacs" 1405 | } 1406 | }, 1407 | "node_modules/fsevents": { 1408 | "version": "2.3.3", 1409 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1410 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1411 | "dev": true, 1412 | "hasInstallScript": true, 1413 | "license": "MIT", 1414 | "optional": true, 1415 | "os": [ 1416 | "darwin" 1417 | ], 1418 | "engines": { 1419 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1420 | } 1421 | }, 1422 | "node_modules/get-stream": { 1423 | "version": "6.0.1", 1424 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 1425 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 1426 | "dev": true, 1427 | "license": "MIT", 1428 | "engines": { 1429 | "node": ">=10" 1430 | }, 1431 | "funding": { 1432 | "url": "https://github.com/sponsors/sindresorhus" 1433 | } 1434 | }, 1435 | "node_modules/glob": { 1436 | "version": "10.4.1", 1437 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", 1438 | "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", 1439 | "dev": true, 1440 | "license": "ISC", 1441 | "dependencies": { 1442 | "foreground-child": "^3.1.0", 1443 | "jackspeak": "^3.1.2", 1444 | "minimatch": "^9.0.4", 1445 | "minipass": "^7.1.2", 1446 | "path-scurry": "^1.11.1" 1447 | }, 1448 | "bin": { 1449 | "glob": "dist/esm/bin.mjs" 1450 | }, 1451 | "engines": { 1452 | "node": ">=16 || 14 >=14.18" 1453 | }, 1454 | "funding": { 1455 | "url": "https://github.com/sponsors/isaacs" 1456 | } 1457 | }, 1458 | "node_modules/glob-parent": { 1459 | "version": "5.1.2", 1460 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1461 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1462 | "dev": true, 1463 | "license": "ISC", 1464 | "dependencies": { 1465 | "is-glob": "^4.0.1" 1466 | }, 1467 | "engines": { 1468 | "node": ">= 6" 1469 | } 1470 | }, 1471 | "node_modules/globby": { 1472 | "version": "11.1.0", 1473 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1474 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1475 | "dev": true, 1476 | "license": "MIT", 1477 | "dependencies": { 1478 | "array-union": "^2.1.0", 1479 | "dir-glob": "^3.0.1", 1480 | "fast-glob": "^3.2.9", 1481 | "ignore": "^5.2.0", 1482 | "merge2": "^1.4.1", 1483 | "slash": "^3.0.0" 1484 | }, 1485 | "engines": { 1486 | "node": ">=10" 1487 | }, 1488 | "funding": { 1489 | "url": "https://github.com/sponsors/sindresorhus" 1490 | } 1491 | }, 1492 | "node_modules/human-signals": { 1493 | "version": "2.1.0", 1494 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 1495 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 1496 | "dev": true, 1497 | "license": "Apache-2.0", 1498 | "engines": { 1499 | "node": ">=10.17.0" 1500 | } 1501 | }, 1502 | "node_modules/ignore": { 1503 | "version": "5.3.1", 1504 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1505 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1506 | "dev": true, 1507 | "license": "MIT", 1508 | "engines": { 1509 | "node": ">= 4" 1510 | } 1511 | }, 1512 | "node_modules/is-binary-path": { 1513 | "version": "2.1.0", 1514 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1515 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1516 | "dev": true, 1517 | "license": "MIT", 1518 | "dependencies": { 1519 | "binary-extensions": "^2.0.0" 1520 | }, 1521 | "engines": { 1522 | "node": ">=8" 1523 | } 1524 | }, 1525 | "node_modules/is-extglob": { 1526 | "version": "2.1.1", 1527 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1528 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1529 | "dev": true, 1530 | "license": "MIT", 1531 | "engines": { 1532 | "node": ">=0.10.0" 1533 | } 1534 | }, 1535 | "node_modules/is-fullwidth-code-point": { 1536 | "version": "3.0.0", 1537 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1538 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1539 | "dev": true, 1540 | "license": "MIT", 1541 | "engines": { 1542 | "node": ">=8" 1543 | } 1544 | }, 1545 | "node_modules/is-glob": { 1546 | "version": "4.0.3", 1547 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1548 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1549 | "dev": true, 1550 | "license": "MIT", 1551 | "dependencies": { 1552 | "is-extglob": "^2.1.1" 1553 | }, 1554 | "engines": { 1555 | "node": ">=0.10.0" 1556 | } 1557 | }, 1558 | "node_modules/is-number": { 1559 | "version": "7.0.0", 1560 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1561 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1562 | "dev": true, 1563 | "license": "MIT", 1564 | "engines": { 1565 | "node": ">=0.12.0" 1566 | } 1567 | }, 1568 | "node_modules/is-stream": { 1569 | "version": "2.0.1", 1570 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1571 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1572 | "dev": true, 1573 | "license": "MIT", 1574 | "engines": { 1575 | "node": ">=8" 1576 | }, 1577 | "funding": { 1578 | "url": "https://github.com/sponsors/sindresorhus" 1579 | } 1580 | }, 1581 | "node_modules/isexe": { 1582 | "version": "2.0.0", 1583 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1584 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1585 | "dev": true, 1586 | "license": "ISC" 1587 | }, 1588 | "node_modules/jackspeak": { 1589 | "version": "3.4.0", 1590 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", 1591 | "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", 1592 | "dev": true, 1593 | "license": "BlueOak-1.0.0", 1594 | "dependencies": { 1595 | "@isaacs/cliui": "^8.0.2" 1596 | }, 1597 | "engines": { 1598 | "node": ">=14" 1599 | }, 1600 | "funding": { 1601 | "url": "https://github.com/sponsors/isaacs" 1602 | }, 1603 | "optionalDependencies": { 1604 | "@pkgjs/parseargs": "^0.11.0" 1605 | } 1606 | }, 1607 | "node_modules/joycon": { 1608 | "version": "3.1.1", 1609 | "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", 1610 | "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", 1611 | "dev": true, 1612 | "license": "MIT", 1613 | "engines": { 1614 | "node": ">=10" 1615 | } 1616 | }, 1617 | "node_modules/lilconfig": { 1618 | "version": "3.1.2", 1619 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", 1620 | "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", 1621 | "dev": true, 1622 | "license": "MIT", 1623 | "engines": { 1624 | "node": ">=14" 1625 | }, 1626 | "funding": { 1627 | "url": "https://github.com/sponsors/antonk52" 1628 | } 1629 | }, 1630 | "node_modules/lines-and-columns": { 1631 | "version": "1.2.4", 1632 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1633 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1634 | "dev": true, 1635 | "license": "MIT" 1636 | }, 1637 | "node_modules/load-tsconfig": { 1638 | "version": "0.2.5", 1639 | "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", 1640 | "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", 1641 | "dev": true, 1642 | "license": "MIT", 1643 | "engines": { 1644 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1645 | } 1646 | }, 1647 | "node_modules/lodash.sortby": { 1648 | "version": "4.7.0", 1649 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1650 | "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", 1651 | "dev": true, 1652 | "license": "MIT" 1653 | }, 1654 | "node_modules/loupe": { 1655 | "version": "3.1.3", 1656 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", 1657 | "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", 1658 | "dev": true, 1659 | "license": "MIT" 1660 | }, 1661 | "node_modules/lru-cache": { 1662 | "version": "10.2.2", 1663 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", 1664 | "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", 1665 | "dev": true, 1666 | "license": "ISC", 1667 | "engines": { 1668 | "node": "14 || >=16.14" 1669 | } 1670 | }, 1671 | "node_modules/magic-string": { 1672 | "version": "0.30.17", 1673 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 1674 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 1675 | "dev": true, 1676 | "license": "MIT", 1677 | "dependencies": { 1678 | "@jridgewell/sourcemap-codec": "^1.5.0" 1679 | } 1680 | }, 1681 | "node_modules/merge-stream": { 1682 | "version": "2.0.0", 1683 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1684 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1685 | "dev": true, 1686 | "license": "MIT" 1687 | }, 1688 | "node_modules/merge2": { 1689 | "version": "1.4.1", 1690 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1691 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1692 | "dev": true, 1693 | "license": "MIT", 1694 | "engines": { 1695 | "node": ">= 8" 1696 | } 1697 | }, 1698 | "node_modules/micromatch": { 1699 | "version": "4.0.7", 1700 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 1701 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 1702 | "dev": true, 1703 | "license": "MIT", 1704 | "dependencies": { 1705 | "braces": "^3.0.3", 1706 | "picomatch": "^2.3.1" 1707 | }, 1708 | "engines": { 1709 | "node": ">=8.6" 1710 | } 1711 | }, 1712 | "node_modules/mimic-fn": { 1713 | "version": "2.1.0", 1714 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1715 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1716 | "dev": true, 1717 | "license": "MIT", 1718 | "engines": { 1719 | "node": ">=6" 1720 | } 1721 | }, 1722 | "node_modules/minimatch": { 1723 | "version": "9.0.4", 1724 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", 1725 | "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", 1726 | "dev": true, 1727 | "license": "ISC", 1728 | "dependencies": { 1729 | "brace-expansion": "^2.0.1" 1730 | }, 1731 | "engines": { 1732 | "node": ">=16 || 14 >=14.17" 1733 | }, 1734 | "funding": { 1735 | "url": "https://github.com/sponsors/isaacs" 1736 | } 1737 | }, 1738 | "node_modules/minipass": { 1739 | "version": "7.1.2", 1740 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1741 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1742 | "dev": true, 1743 | "license": "ISC", 1744 | "engines": { 1745 | "node": ">=16 || 14 >=14.17" 1746 | } 1747 | }, 1748 | "node_modules/ms": { 1749 | "version": "2.1.3", 1750 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1751 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1752 | "dev": true, 1753 | "license": "MIT" 1754 | }, 1755 | "node_modules/mz": { 1756 | "version": "2.7.0", 1757 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 1758 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1759 | "dev": true, 1760 | "license": "MIT", 1761 | "dependencies": { 1762 | "any-promise": "^1.0.0", 1763 | "object-assign": "^4.0.1", 1764 | "thenify-all": "^1.0.0" 1765 | } 1766 | }, 1767 | "node_modules/nanoid": { 1768 | "version": "3.3.8", 1769 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1770 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1771 | "dev": true, 1772 | "funding": [ 1773 | { 1774 | "type": "github", 1775 | "url": "https://github.com/sponsors/ai" 1776 | } 1777 | ], 1778 | "license": "MIT", 1779 | "bin": { 1780 | "nanoid": "bin/nanoid.cjs" 1781 | }, 1782 | "engines": { 1783 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1784 | } 1785 | }, 1786 | "node_modules/normalize-path": { 1787 | "version": "3.0.0", 1788 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1789 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1790 | "dev": true, 1791 | "license": "MIT", 1792 | "engines": { 1793 | "node": ">=0.10.0" 1794 | } 1795 | }, 1796 | "node_modules/npm-run-path": { 1797 | "version": "4.0.1", 1798 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1799 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1800 | "dev": true, 1801 | "license": "MIT", 1802 | "dependencies": { 1803 | "path-key": "^3.0.0" 1804 | }, 1805 | "engines": { 1806 | "node": ">=8" 1807 | } 1808 | }, 1809 | "node_modules/object-assign": { 1810 | "version": "4.1.1", 1811 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1812 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1813 | "dev": true, 1814 | "license": "MIT", 1815 | "engines": { 1816 | "node": ">=0.10.0" 1817 | } 1818 | }, 1819 | "node_modules/onetime": { 1820 | "version": "5.1.2", 1821 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1822 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1823 | "dev": true, 1824 | "license": "MIT", 1825 | "dependencies": { 1826 | "mimic-fn": "^2.1.0" 1827 | }, 1828 | "engines": { 1829 | "node": ">=6" 1830 | }, 1831 | "funding": { 1832 | "url": "https://github.com/sponsors/sindresorhus" 1833 | } 1834 | }, 1835 | "node_modules/path-key": { 1836 | "version": "3.1.1", 1837 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1838 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1839 | "dev": true, 1840 | "license": "MIT", 1841 | "engines": { 1842 | "node": ">=8" 1843 | } 1844 | }, 1845 | "node_modules/path-scurry": { 1846 | "version": "1.11.1", 1847 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1848 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1849 | "dev": true, 1850 | "license": "BlueOak-1.0.0", 1851 | "dependencies": { 1852 | "lru-cache": "^10.2.0", 1853 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1854 | }, 1855 | "engines": { 1856 | "node": ">=16 || 14 >=14.18" 1857 | }, 1858 | "funding": { 1859 | "url": "https://github.com/sponsors/isaacs" 1860 | } 1861 | }, 1862 | "node_modules/path-type": { 1863 | "version": "4.0.0", 1864 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1865 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1866 | "dev": true, 1867 | "license": "MIT", 1868 | "engines": { 1869 | "node": ">=8" 1870 | } 1871 | }, 1872 | "node_modules/pathe": { 1873 | "version": "2.0.2", 1874 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", 1875 | "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", 1876 | "dev": true, 1877 | "license": "MIT" 1878 | }, 1879 | "node_modules/pathval": { 1880 | "version": "2.0.0", 1881 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", 1882 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", 1883 | "dev": true, 1884 | "license": "MIT", 1885 | "engines": { 1886 | "node": ">= 14.16" 1887 | } 1888 | }, 1889 | "node_modules/picocolors": { 1890 | "version": "1.1.1", 1891 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1892 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1893 | "dev": true, 1894 | "license": "ISC" 1895 | }, 1896 | "node_modules/picomatch": { 1897 | "version": "2.3.1", 1898 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1899 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1900 | "dev": true, 1901 | "license": "MIT", 1902 | "engines": { 1903 | "node": ">=8.6" 1904 | }, 1905 | "funding": { 1906 | "url": "https://github.com/sponsors/jonschlinkert" 1907 | } 1908 | }, 1909 | "node_modules/pirates": { 1910 | "version": "4.0.6", 1911 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 1912 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 1913 | "dev": true, 1914 | "license": "MIT", 1915 | "engines": { 1916 | "node": ">= 6" 1917 | } 1918 | }, 1919 | "node_modules/postcss": { 1920 | "version": "8.5.1", 1921 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", 1922 | "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", 1923 | "dev": true, 1924 | "funding": [ 1925 | { 1926 | "type": "opencollective", 1927 | "url": "https://opencollective.com/postcss/" 1928 | }, 1929 | { 1930 | "type": "tidelift", 1931 | "url": "https://tidelift.com/funding/github/npm/postcss" 1932 | }, 1933 | { 1934 | "type": "github", 1935 | "url": "https://github.com/sponsors/ai" 1936 | } 1937 | ], 1938 | "license": "MIT", 1939 | "dependencies": { 1940 | "nanoid": "^3.3.8", 1941 | "picocolors": "^1.1.1", 1942 | "source-map-js": "^1.2.1" 1943 | }, 1944 | "engines": { 1945 | "node": "^10 || ^12 || >=14" 1946 | } 1947 | }, 1948 | "node_modules/postcss-load-config": { 1949 | "version": "4.0.2", 1950 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", 1951 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 1952 | "dev": true, 1953 | "funding": [ 1954 | { 1955 | "type": "opencollective", 1956 | "url": "https://opencollective.com/postcss/" 1957 | }, 1958 | { 1959 | "type": "github", 1960 | "url": "https://github.com/sponsors/ai" 1961 | } 1962 | ], 1963 | "license": "MIT", 1964 | "dependencies": { 1965 | "lilconfig": "^3.0.0", 1966 | "yaml": "^2.3.4" 1967 | }, 1968 | "engines": { 1969 | "node": ">= 14" 1970 | }, 1971 | "peerDependencies": { 1972 | "postcss": ">=8.0.9", 1973 | "ts-node": ">=9.0.0" 1974 | }, 1975 | "peerDependenciesMeta": { 1976 | "postcss": { 1977 | "optional": true 1978 | }, 1979 | "ts-node": { 1980 | "optional": true 1981 | } 1982 | } 1983 | }, 1984 | "node_modules/punycode": { 1985 | "version": "2.3.1", 1986 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1987 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1988 | "dev": true, 1989 | "license": "MIT", 1990 | "engines": { 1991 | "node": ">=6" 1992 | } 1993 | }, 1994 | "node_modules/queue-microtask": { 1995 | "version": "1.2.3", 1996 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1997 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1998 | "dev": true, 1999 | "funding": [ 2000 | { 2001 | "type": "github", 2002 | "url": "https://github.com/sponsors/feross" 2003 | }, 2004 | { 2005 | "type": "patreon", 2006 | "url": "https://www.patreon.com/feross" 2007 | }, 2008 | { 2009 | "type": "consulting", 2010 | "url": "https://feross.org/support" 2011 | } 2012 | ], 2013 | "license": "MIT" 2014 | }, 2015 | "node_modules/readdirp": { 2016 | "version": "3.6.0", 2017 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2018 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2019 | "dev": true, 2020 | "license": "MIT", 2021 | "dependencies": { 2022 | "picomatch": "^2.2.1" 2023 | }, 2024 | "engines": { 2025 | "node": ">=8.10.0" 2026 | } 2027 | }, 2028 | "node_modules/resolve-from": { 2029 | "version": "5.0.0", 2030 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 2031 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 2032 | "dev": true, 2033 | "license": "MIT", 2034 | "engines": { 2035 | "node": ">=8" 2036 | } 2037 | }, 2038 | "node_modules/reusify": { 2039 | "version": "1.0.4", 2040 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2041 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2042 | "dev": true, 2043 | "license": "MIT", 2044 | "engines": { 2045 | "iojs": ">=1.0.0", 2046 | "node": ">=0.10.0" 2047 | } 2048 | }, 2049 | "node_modules/rollup": { 2050 | "version": "4.34.0", 2051 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.0.tgz", 2052 | "integrity": "sha512-+4C/cgJ9w6sudisA0nZz0+O7lTP9a3CzNLsoDwaRumM8QHwghUsu6tqHXiTmNUp/rqNiM14++7dkzHDyCRs0Jg==", 2053 | "dev": true, 2054 | "license": "MIT", 2055 | "dependencies": { 2056 | "@types/estree": "1.0.6" 2057 | }, 2058 | "bin": { 2059 | "rollup": "dist/bin/rollup" 2060 | }, 2061 | "engines": { 2062 | "node": ">=18.0.0", 2063 | "npm": ">=8.0.0" 2064 | }, 2065 | "optionalDependencies": { 2066 | "@rollup/rollup-android-arm-eabi": "4.34.0", 2067 | "@rollup/rollup-android-arm64": "4.34.0", 2068 | "@rollup/rollup-darwin-arm64": "4.34.0", 2069 | "@rollup/rollup-darwin-x64": "4.34.0", 2070 | "@rollup/rollup-freebsd-arm64": "4.34.0", 2071 | "@rollup/rollup-freebsd-x64": "4.34.0", 2072 | "@rollup/rollup-linux-arm-gnueabihf": "4.34.0", 2073 | "@rollup/rollup-linux-arm-musleabihf": "4.34.0", 2074 | "@rollup/rollup-linux-arm64-gnu": "4.34.0", 2075 | "@rollup/rollup-linux-arm64-musl": "4.34.0", 2076 | "@rollup/rollup-linux-loongarch64-gnu": "4.34.0", 2077 | "@rollup/rollup-linux-powerpc64le-gnu": "4.34.0", 2078 | "@rollup/rollup-linux-riscv64-gnu": "4.34.0", 2079 | "@rollup/rollup-linux-s390x-gnu": "4.34.0", 2080 | "@rollup/rollup-linux-x64-gnu": "4.34.0", 2081 | "@rollup/rollup-linux-x64-musl": "4.34.0", 2082 | "@rollup/rollup-win32-arm64-msvc": "4.34.0", 2083 | "@rollup/rollup-win32-ia32-msvc": "4.34.0", 2084 | "@rollup/rollup-win32-x64-msvc": "4.34.0", 2085 | "fsevents": "~2.3.2" 2086 | } 2087 | }, 2088 | "node_modules/run-parallel": { 2089 | "version": "1.2.0", 2090 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2091 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2092 | "dev": true, 2093 | "funding": [ 2094 | { 2095 | "type": "github", 2096 | "url": "https://github.com/sponsors/feross" 2097 | }, 2098 | { 2099 | "type": "patreon", 2100 | "url": "https://www.patreon.com/feross" 2101 | }, 2102 | { 2103 | "type": "consulting", 2104 | "url": "https://feross.org/support" 2105 | } 2106 | ], 2107 | "license": "MIT", 2108 | "dependencies": { 2109 | "queue-microtask": "^1.2.2" 2110 | } 2111 | }, 2112 | "node_modules/shebang-command": { 2113 | "version": "2.0.0", 2114 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2115 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2116 | "dev": true, 2117 | "license": "MIT", 2118 | "dependencies": { 2119 | "shebang-regex": "^3.0.0" 2120 | }, 2121 | "engines": { 2122 | "node": ">=8" 2123 | } 2124 | }, 2125 | "node_modules/shebang-regex": { 2126 | "version": "3.0.0", 2127 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2128 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2129 | "dev": true, 2130 | "license": "MIT", 2131 | "engines": { 2132 | "node": ">=8" 2133 | } 2134 | }, 2135 | "node_modules/siginfo": { 2136 | "version": "2.0.0", 2137 | "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", 2138 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 2139 | "dev": true, 2140 | "license": "ISC" 2141 | }, 2142 | "node_modules/signal-exit": { 2143 | "version": "3.0.7", 2144 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2145 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2146 | "dev": true, 2147 | "license": "ISC" 2148 | }, 2149 | "node_modules/slash": { 2150 | "version": "3.0.0", 2151 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2152 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2153 | "dev": true, 2154 | "license": "MIT", 2155 | "engines": { 2156 | "node": ">=8" 2157 | } 2158 | }, 2159 | "node_modules/source-map": { 2160 | "version": "0.8.0-beta.0", 2161 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 2162 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 2163 | "dev": true, 2164 | "license": "BSD-3-Clause", 2165 | "dependencies": { 2166 | "whatwg-url": "^7.0.0" 2167 | }, 2168 | "engines": { 2169 | "node": ">= 8" 2170 | } 2171 | }, 2172 | "node_modules/source-map-js": { 2173 | "version": "1.2.1", 2174 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2175 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2176 | "dev": true, 2177 | "license": "BSD-3-Clause", 2178 | "engines": { 2179 | "node": ">=0.10.0" 2180 | } 2181 | }, 2182 | "node_modules/stackback": { 2183 | "version": "0.0.2", 2184 | "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", 2185 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 2186 | "dev": true, 2187 | "license": "MIT" 2188 | }, 2189 | "node_modules/std-env": { 2190 | "version": "3.8.0", 2191 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", 2192 | "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", 2193 | "dev": true, 2194 | "license": "MIT" 2195 | }, 2196 | "node_modules/string-width": { 2197 | "version": "5.1.2", 2198 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2199 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2200 | "dev": true, 2201 | "license": "MIT", 2202 | "dependencies": { 2203 | "eastasianwidth": "^0.2.0", 2204 | "emoji-regex": "^9.2.2", 2205 | "strip-ansi": "^7.0.1" 2206 | }, 2207 | "engines": { 2208 | "node": ">=12" 2209 | }, 2210 | "funding": { 2211 | "url": "https://github.com/sponsors/sindresorhus" 2212 | } 2213 | }, 2214 | "node_modules/string-width-cjs": { 2215 | "name": "string-width", 2216 | "version": "4.2.3", 2217 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2218 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2219 | "dev": true, 2220 | "license": "MIT", 2221 | "dependencies": { 2222 | "emoji-regex": "^8.0.0", 2223 | "is-fullwidth-code-point": "^3.0.0", 2224 | "strip-ansi": "^6.0.1" 2225 | }, 2226 | "engines": { 2227 | "node": ">=8" 2228 | } 2229 | }, 2230 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 2231 | "version": "5.0.1", 2232 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2233 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2234 | "dev": true, 2235 | "license": "MIT", 2236 | "engines": { 2237 | "node": ">=8" 2238 | } 2239 | }, 2240 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 2241 | "version": "8.0.0", 2242 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2243 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2244 | "dev": true, 2245 | "license": "MIT" 2246 | }, 2247 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 2248 | "version": "6.0.1", 2249 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2250 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2251 | "dev": true, 2252 | "license": "MIT", 2253 | "dependencies": { 2254 | "ansi-regex": "^5.0.1" 2255 | }, 2256 | "engines": { 2257 | "node": ">=8" 2258 | } 2259 | }, 2260 | "node_modules/strip-ansi": { 2261 | "version": "7.1.0", 2262 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2263 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2264 | "dev": true, 2265 | "license": "MIT", 2266 | "dependencies": { 2267 | "ansi-regex": "^6.0.1" 2268 | }, 2269 | "engines": { 2270 | "node": ">=12" 2271 | }, 2272 | "funding": { 2273 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2274 | } 2275 | }, 2276 | "node_modules/strip-ansi-cjs": { 2277 | "name": "strip-ansi", 2278 | "version": "6.0.1", 2279 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2280 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2281 | "dev": true, 2282 | "license": "MIT", 2283 | "dependencies": { 2284 | "ansi-regex": "^5.0.1" 2285 | }, 2286 | "engines": { 2287 | "node": ">=8" 2288 | } 2289 | }, 2290 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 2291 | "version": "5.0.1", 2292 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2293 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2294 | "dev": true, 2295 | "license": "MIT", 2296 | "engines": { 2297 | "node": ">=8" 2298 | } 2299 | }, 2300 | "node_modules/strip-final-newline": { 2301 | "version": "2.0.0", 2302 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 2303 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 2304 | "dev": true, 2305 | "license": "MIT", 2306 | "engines": { 2307 | "node": ">=6" 2308 | } 2309 | }, 2310 | "node_modules/sucrase": { 2311 | "version": "3.35.0", 2312 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 2313 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 2314 | "dev": true, 2315 | "license": "MIT", 2316 | "dependencies": { 2317 | "@jridgewell/gen-mapping": "^0.3.2", 2318 | "commander": "^4.0.0", 2319 | "glob": "^10.3.10", 2320 | "lines-and-columns": "^1.1.6", 2321 | "mz": "^2.7.0", 2322 | "pirates": "^4.0.1", 2323 | "ts-interface-checker": "^0.1.9" 2324 | }, 2325 | "bin": { 2326 | "sucrase": "bin/sucrase", 2327 | "sucrase-node": "bin/sucrase-node" 2328 | }, 2329 | "engines": { 2330 | "node": ">=16 || 14 >=14.17" 2331 | } 2332 | }, 2333 | "node_modules/thenify": { 2334 | "version": "3.3.1", 2335 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 2336 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 2337 | "dev": true, 2338 | "license": "MIT", 2339 | "dependencies": { 2340 | "any-promise": "^1.0.0" 2341 | } 2342 | }, 2343 | "node_modules/thenify-all": { 2344 | "version": "1.6.0", 2345 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 2346 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 2347 | "dev": true, 2348 | "license": "MIT", 2349 | "dependencies": { 2350 | "thenify": ">= 3.1.0 < 4" 2351 | }, 2352 | "engines": { 2353 | "node": ">=0.8" 2354 | } 2355 | }, 2356 | "node_modules/tinybench": { 2357 | "version": "2.9.0", 2358 | "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", 2359 | "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", 2360 | "dev": true, 2361 | "license": "MIT" 2362 | }, 2363 | "node_modules/tinyexec": { 2364 | "version": "0.3.2", 2365 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", 2366 | "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", 2367 | "dev": true, 2368 | "license": "MIT" 2369 | }, 2370 | "node_modules/tinypool": { 2371 | "version": "1.0.2", 2372 | "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", 2373 | "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", 2374 | "dev": true, 2375 | "license": "MIT", 2376 | "engines": { 2377 | "node": "^18.0.0 || >=20.0.0" 2378 | } 2379 | }, 2380 | "node_modules/tinyrainbow": { 2381 | "version": "2.0.0", 2382 | "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", 2383 | "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", 2384 | "dev": true, 2385 | "license": "MIT", 2386 | "engines": { 2387 | "node": ">=14.0.0" 2388 | } 2389 | }, 2390 | "node_modules/tinyspy": { 2391 | "version": "3.0.2", 2392 | "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", 2393 | "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", 2394 | "dev": true, 2395 | "license": "MIT", 2396 | "engines": { 2397 | "node": ">=14.0.0" 2398 | } 2399 | }, 2400 | "node_modules/to-regex-range": { 2401 | "version": "5.0.1", 2402 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2403 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2404 | "dev": true, 2405 | "license": "MIT", 2406 | "dependencies": { 2407 | "is-number": "^7.0.0" 2408 | }, 2409 | "engines": { 2410 | "node": ">=8.0" 2411 | } 2412 | }, 2413 | "node_modules/tr46": { 2414 | "version": "1.0.1", 2415 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 2416 | "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", 2417 | "dev": true, 2418 | "license": "MIT", 2419 | "dependencies": { 2420 | "punycode": "^2.1.0" 2421 | } 2422 | }, 2423 | "node_modules/tree-kill": { 2424 | "version": "1.2.2", 2425 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 2426 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 2427 | "dev": true, 2428 | "license": "MIT", 2429 | "bin": { 2430 | "tree-kill": "cli.js" 2431 | } 2432 | }, 2433 | "node_modules/ts-interface-checker": { 2434 | "version": "0.1.13", 2435 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 2436 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 2437 | "dev": true, 2438 | "license": "Apache-2.0" 2439 | }, 2440 | "node_modules/tsup": { 2441 | "version": "8.1.0", 2442 | "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.1.0.tgz", 2443 | "integrity": "sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==", 2444 | "dev": true, 2445 | "license": "MIT", 2446 | "dependencies": { 2447 | "bundle-require": "^4.0.0", 2448 | "cac": "^6.7.12", 2449 | "chokidar": "^3.5.1", 2450 | "debug": "^4.3.1", 2451 | "esbuild": "^0.21.4", 2452 | "execa": "^5.0.0", 2453 | "globby": "^11.0.3", 2454 | "joycon": "^3.0.1", 2455 | "postcss-load-config": "^4.0.1", 2456 | "resolve-from": "^5.0.0", 2457 | "rollup": "^4.0.2", 2458 | "source-map": "0.8.0-beta.0", 2459 | "sucrase": "^3.20.3", 2460 | "tree-kill": "^1.2.2" 2461 | }, 2462 | "bin": { 2463 | "tsup": "dist/cli-default.js", 2464 | "tsup-node": "dist/cli-node.js" 2465 | }, 2466 | "engines": { 2467 | "node": ">=18" 2468 | }, 2469 | "peerDependencies": { 2470 | "@microsoft/api-extractor": "^7.36.0", 2471 | "@swc/core": "^1", 2472 | "postcss": "^8.4.12", 2473 | "typescript": ">=4.5.0" 2474 | }, 2475 | "peerDependenciesMeta": { 2476 | "@microsoft/api-extractor": { 2477 | "optional": true 2478 | }, 2479 | "@swc/core": { 2480 | "optional": true 2481 | }, 2482 | "postcss": { 2483 | "optional": true 2484 | }, 2485 | "typescript": { 2486 | "optional": true 2487 | } 2488 | } 2489 | }, 2490 | "node_modules/typescript": { 2491 | "version": "5.4.5", 2492 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", 2493 | "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", 2494 | "dev": true, 2495 | "license": "Apache-2.0", 2496 | "bin": { 2497 | "tsc": "bin/tsc", 2498 | "tsserver": "bin/tsserver" 2499 | }, 2500 | "engines": { 2501 | "node": ">=14.17" 2502 | } 2503 | }, 2504 | "node_modules/undici-types": { 2505 | "version": "5.26.5", 2506 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2507 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2508 | "dev": true, 2509 | "license": "MIT" 2510 | }, 2511 | "node_modules/vite": { 2512 | "version": "6.0.11", 2513 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz", 2514 | "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==", 2515 | "dev": true, 2516 | "license": "MIT", 2517 | "dependencies": { 2518 | "esbuild": "^0.24.2", 2519 | "postcss": "^8.4.49", 2520 | "rollup": "^4.23.0" 2521 | }, 2522 | "bin": { 2523 | "vite": "bin/vite.js" 2524 | }, 2525 | "engines": { 2526 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 2527 | }, 2528 | "funding": { 2529 | "url": "https://github.com/vitejs/vite?sponsor=1" 2530 | }, 2531 | "optionalDependencies": { 2532 | "fsevents": "~2.3.3" 2533 | }, 2534 | "peerDependencies": { 2535 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 2536 | "jiti": ">=1.21.0", 2537 | "less": "*", 2538 | "lightningcss": "^1.21.0", 2539 | "sass": "*", 2540 | "sass-embedded": "*", 2541 | "stylus": "*", 2542 | "sugarss": "*", 2543 | "terser": "^5.16.0", 2544 | "tsx": "^4.8.1", 2545 | "yaml": "^2.4.2" 2546 | }, 2547 | "peerDependenciesMeta": { 2548 | "@types/node": { 2549 | "optional": true 2550 | }, 2551 | "jiti": { 2552 | "optional": true 2553 | }, 2554 | "less": { 2555 | "optional": true 2556 | }, 2557 | "lightningcss": { 2558 | "optional": true 2559 | }, 2560 | "sass": { 2561 | "optional": true 2562 | }, 2563 | "sass-embedded": { 2564 | "optional": true 2565 | }, 2566 | "stylus": { 2567 | "optional": true 2568 | }, 2569 | "sugarss": { 2570 | "optional": true 2571 | }, 2572 | "terser": { 2573 | "optional": true 2574 | }, 2575 | "tsx": { 2576 | "optional": true 2577 | }, 2578 | "yaml": { 2579 | "optional": true 2580 | } 2581 | } 2582 | }, 2583 | "node_modules/vite-node": { 2584 | "version": "3.0.4", 2585 | "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.4.tgz", 2586 | "integrity": "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==", 2587 | "dev": true, 2588 | "license": "MIT", 2589 | "dependencies": { 2590 | "cac": "^6.7.14", 2591 | "debug": "^4.4.0", 2592 | "es-module-lexer": "^1.6.0", 2593 | "pathe": "^2.0.2", 2594 | "vite": "^5.0.0 || ^6.0.0" 2595 | }, 2596 | "bin": { 2597 | "vite-node": "vite-node.mjs" 2598 | }, 2599 | "engines": { 2600 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 2601 | }, 2602 | "funding": { 2603 | "url": "https://opencollective.com/vitest" 2604 | } 2605 | }, 2606 | "node_modules/vite/node_modules/@esbuild/aix-ppc64": { 2607 | "version": "0.24.2", 2608 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 2609 | "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 2610 | "cpu": [ 2611 | "ppc64" 2612 | ], 2613 | "dev": true, 2614 | "license": "MIT", 2615 | "optional": true, 2616 | "os": [ 2617 | "aix" 2618 | ], 2619 | "engines": { 2620 | "node": ">=18" 2621 | } 2622 | }, 2623 | "node_modules/vite/node_modules/@esbuild/android-arm": { 2624 | "version": "0.24.2", 2625 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 2626 | "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 2627 | "cpu": [ 2628 | "arm" 2629 | ], 2630 | "dev": true, 2631 | "license": "MIT", 2632 | "optional": true, 2633 | "os": [ 2634 | "android" 2635 | ], 2636 | "engines": { 2637 | "node": ">=18" 2638 | } 2639 | }, 2640 | "node_modules/vite/node_modules/@esbuild/android-arm64": { 2641 | "version": "0.24.2", 2642 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 2643 | "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 2644 | "cpu": [ 2645 | "arm64" 2646 | ], 2647 | "dev": true, 2648 | "license": "MIT", 2649 | "optional": true, 2650 | "os": [ 2651 | "android" 2652 | ], 2653 | "engines": { 2654 | "node": ">=18" 2655 | } 2656 | }, 2657 | "node_modules/vite/node_modules/@esbuild/android-x64": { 2658 | "version": "0.24.2", 2659 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 2660 | "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 2661 | "cpu": [ 2662 | "x64" 2663 | ], 2664 | "dev": true, 2665 | "license": "MIT", 2666 | "optional": true, 2667 | "os": [ 2668 | "android" 2669 | ], 2670 | "engines": { 2671 | "node": ">=18" 2672 | } 2673 | }, 2674 | "node_modules/vite/node_modules/@esbuild/darwin-arm64": { 2675 | "version": "0.24.2", 2676 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 2677 | "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 2678 | "cpu": [ 2679 | "arm64" 2680 | ], 2681 | "dev": true, 2682 | "license": "MIT", 2683 | "optional": true, 2684 | "os": [ 2685 | "darwin" 2686 | ], 2687 | "engines": { 2688 | "node": ">=18" 2689 | } 2690 | }, 2691 | "node_modules/vite/node_modules/@esbuild/darwin-x64": { 2692 | "version": "0.24.2", 2693 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 2694 | "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 2695 | "cpu": [ 2696 | "x64" 2697 | ], 2698 | "dev": true, 2699 | "license": "MIT", 2700 | "optional": true, 2701 | "os": [ 2702 | "darwin" 2703 | ], 2704 | "engines": { 2705 | "node": ">=18" 2706 | } 2707 | }, 2708 | "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { 2709 | "version": "0.24.2", 2710 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 2711 | "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 2712 | "cpu": [ 2713 | "arm64" 2714 | ], 2715 | "dev": true, 2716 | "license": "MIT", 2717 | "optional": true, 2718 | "os": [ 2719 | "freebsd" 2720 | ], 2721 | "engines": { 2722 | "node": ">=18" 2723 | } 2724 | }, 2725 | "node_modules/vite/node_modules/@esbuild/freebsd-x64": { 2726 | "version": "0.24.2", 2727 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 2728 | "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 2729 | "cpu": [ 2730 | "x64" 2731 | ], 2732 | "dev": true, 2733 | "license": "MIT", 2734 | "optional": true, 2735 | "os": [ 2736 | "freebsd" 2737 | ], 2738 | "engines": { 2739 | "node": ">=18" 2740 | } 2741 | }, 2742 | "node_modules/vite/node_modules/@esbuild/linux-arm": { 2743 | "version": "0.24.2", 2744 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 2745 | "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 2746 | "cpu": [ 2747 | "arm" 2748 | ], 2749 | "dev": true, 2750 | "license": "MIT", 2751 | "optional": true, 2752 | "os": [ 2753 | "linux" 2754 | ], 2755 | "engines": { 2756 | "node": ">=18" 2757 | } 2758 | }, 2759 | "node_modules/vite/node_modules/@esbuild/linux-arm64": { 2760 | "version": "0.24.2", 2761 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 2762 | "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 2763 | "cpu": [ 2764 | "arm64" 2765 | ], 2766 | "dev": true, 2767 | "license": "MIT", 2768 | "optional": true, 2769 | "os": [ 2770 | "linux" 2771 | ], 2772 | "engines": { 2773 | "node": ">=18" 2774 | } 2775 | }, 2776 | "node_modules/vite/node_modules/@esbuild/linux-ia32": { 2777 | "version": "0.24.2", 2778 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 2779 | "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 2780 | "cpu": [ 2781 | "ia32" 2782 | ], 2783 | "dev": true, 2784 | "license": "MIT", 2785 | "optional": true, 2786 | "os": [ 2787 | "linux" 2788 | ], 2789 | "engines": { 2790 | "node": ">=18" 2791 | } 2792 | }, 2793 | "node_modules/vite/node_modules/@esbuild/linux-loong64": { 2794 | "version": "0.24.2", 2795 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 2796 | "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 2797 | "cpu": [ 2798 | "loong64" 2799 | ], 2800 | "dev": true, 2801 | "license": "MIT", 2802 | "optional": true, 2803 | "os": [ 2804 | "linux" 2805 | ], 2806 | "engines": { 2807 | "node": ">=18" 2808 | } 2809 | }, 2810 | "node_modules/vite/node_modules/@esbuild/linux-mips64el": { 2811 | "version": "0.24.2", 2812 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 2813 | "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 2814 | "cpu": [ 2815 | "mips64el" 2816 | ], 2817 | "dev": true, 2818 | "license": "MIT", 2819 | "optional": true, 2820 | "os": [ 2821 | "linux" 2822 | ], 2823 | "engines": { 2824 | "node": ">=18" 2825 | } 2826 | }, 2827 | "node_modules/vite/node_modules/@esbuild/linux-ppc64": { 2828 | "version": "0.24.2", 2829 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 2830 | "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 2831 | "cpu": [ 2832 | "ppc64" 2833 | ], 2834 | "dev": true, 2835 | "license": "MIT", 2836 | "optional": true, 2837 | "os": [ 2838 | "linux" 2839 | ], 2840 | "engines": { 2841 | "node": ">=18" 2842 | } 2843 | }, 2844 | "node_modules/vite/node_modules/@esbuild/linux-riscv64": { 2845 | "version": "0.24.2", 2846 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 2847 | "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 2848 | "cpu": [ 2849 | "riscv64" 2850 | ], 2851 | "dev": true, 2852 | "license": "MIT", 2853 | "optional": true, 2854 | "os": [ 2855 | "linux" 2856 | ], 2857 | "engines": { 2858 | "node": ">=18" 2859 | } 2860 | }, 2861 | "node_modules/vite/node_modules/@esbuild/linux-s390x": { 2862 | "version": "0.24.2", 2863 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 2864 | "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 2865 | "cpu": [ 2866 | "s390x" 2867 | ], 2868 | "dev": true, 2869 | "license": "MIT", 2870 | "optional": true, 2871 | "os": [ 2872 | "linux" 2873 | ], 2874 | "engines": { 2875 | "node": ">=18" 2876 | } 2877 | }, 2878 | "node_modules/vite/node_modules/@esbuild/linux-x64": { 2879 | "version": "0.24.2", 2880 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 2881 | "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 2882 | "cpu": [ 2883 | "x64" 2884 | ], 2885 | "dev": true, 2886 | "license": "MIT", 2887 | "optional": true, 2888 | "os": [ 2889 | "linux" 2890 | ], 2891 | "engines": { 2892 | "node": ">=18" 2893 | } 2894 | }, 2895 | "node_modules/vite/node_modules/@esbuild/netbsd-x64": { 2896 | "version": "0.24.2", 2897 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 2898 | "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 2899 | "cpu": [ 2900 | "x64" 2901 | ], 2902 | "dev": true, 2903 | "license": "MIT", 2904 | "optional": true, 2905 | "os": [ 2906 | "netbsd" 2907 | ], 2908 | "engines": { 2909 | "node": ">=18" 2910 | } 2911 | }, 2912 | "node_modules/vite/node_modules/@esbuild/openbsd-x64": { 2913 | "version": "0.24.2", 2914 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 2915 | "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 2916 | "cpu": [ 2917 | "x64" 2918 | ], 2919 | "dev": true, 2920 | "license": "MIT", 2921 | "optional": true, 2922 | "os": [ 2923 | "openbsd" 2924 | ], 2925 | "engines": { 2926 | "node": ">=18" 2927 | } 2928 | }, 2929 | "node_modules/vite/node_modules/@esbuild/sunos-x64": { 2930 | "version": "0.24.2", 2931 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 2932 | "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 2933 | "cpu": [ 2934 | "x64" 2935 | ], 2936 | "dev": true, 2937 | "license": "MIT", 2938 | "optional": true, 2939 | "os": [ 2940 | "sunos" 2941 | ], 2942 | "engines": { 2943 | "node": ">=18" 2944 | } 2945 | }, 2946 | "node_modules/vite/node_modules/@esbuild/win32-arm64": { 2947 | "version": "0.24.2", 2948 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 2949 | "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 2950 | "cpu": [ 2951 | "arm64" 2952 | ], 2953 | "dev": true, 2954 | "license": "MIT", 2955 | "optional": true, 2956 | "os": [ 2957 | "win32" 2958 | ], 2959 | "engines": { 2960 | "node": ">=18" 2961 | } 2962 | }, 2963 | "node_modules/vite/node_modules/@esbuild/win32-ia32": { 2964 | "version": "0.24.2", 2965 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 2966 | "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 2967 | "cpu": [ 2968 | "ia32" 2969 | ], 2970 | "dev": true, 2971 | "license": "MIT", 2972 | "optional": true, 2973 | "os": [ 2974 | "win32" 2975 | ], 2976 | "engines": { 2977 | "node": ">=18" 2978 | } 2979 | }, 2980 | "node_modules/vite/node_modules/@esbuild/win32-x64": { 2981 | "version": "0.24.2", 2982 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 2983 | "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 2984 | "cpu": [ 2985 | "x64" 2986 | ], 2987 | "dev": true, 2988 | "license": "MIT", 2989 | "optional": true, 2990 | "os": [ 2991 | "win32" 2992 | ], 2993 | "engines": { 2994 | "node": ">=18" 2995 | } 2996 | }, 2997 | "node_modules/vite/node_modules/esbuild": { 2998 | "version": "0.24.2", 2999 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 3000 | "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 3001 | "dev": true, 3002 | "hasInstallScript": true, 3003 | "license": "MIT", 3004 | "bin": { 3005 | "esbuild": "bin/esbuild" 3006 | }, 3007 | "engines": { 3008 | "node": ">=18" 3009 | }, 3010 | "optionalDependencies": { 3011 | "@esbuild/aix-ppc64": "0.24.2", 3012 | "@esbuild/android-arm": "0.24.2", 3013 | "@esbuild/android-arm64": "0.24.2", 3014 | "@esbuild/android-x64": "0.24.2", 3015 | "@esbuild/darwin-arm64": "0.24.2", 3016 | "@esbuild/darwin-x64": "0.24.2", 3017 | "@esbuild/freebsd-arm64": "0.24.2", 3018 | "@esbuild/freebsd-x64": "0.24.2", 3019 | "@esbuild/linux-arm": "0.24.2", 3020 | "@esbuild/linux-arm64": "0.24.2", 3021 | "@esbuild/linux-ia32": "0.24.2", 3022 | "@esbuild/linux-loong64": "0.24.2", 3023 | "@esbuild/linux-mips64el": "0.24.2", 3024 | "@esbuild/linux-ppc64": "0.24.2", 3025 | "@esbuild/linux-riscv64": "0.24.2", 3026 | "@esbuild/linux-s390x": "0.24.2", 3027 | "@esbuild/linux-x64": "0.24.2", 3028 | "@esbuild/netbsd-arm64": "0.24.2", 3029 | "@esbuild/netbsd-x64": "0.24.2", 3030 | "@esbuild/openbsd-arm64": "0.24.2", 3031 | "@esbuild/openbsd-x64": "0.24.2", 3032 | "@esbuild/sunos-x64": "0.24.2", 3033 | "@esbuild/win32-arm64": "0.24.2", 3034 | "@esbuild/win32-ia32": "0.24.2", 3035 | "@esbuild/win32-x64": "0.24.2" 3036 | } 3037 | }, 3038 | "node_modules/vitest": { 3039 | "version": "3.0.4", 3040 | "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.4.tgz", 3041 | "integrity": "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==", 3042 | "dev": true, 3043 | "license": "MIT", 3044 | "dependencies": { 3045 | "@vitest/expect": "3.0.4", 3046 | "@vitest/mocker": "3.0.4", 3047 | "@vitest/pretty-format": "^3.0.4", 3048 | "@vitest/runner": "3.0.4", 3049 | "@vitest/snapshot": "3.0.4", 3050 | "@vitest/spy": "3.0.4", 3051 | "@vitest/utils": "3.0.4", 3052 | "chai": "^5.1.2", 3053 | "debug": "^4.4.0", 3054 | "expect-type": "^1.1.0", 3055 | "magic-string": "^0.30.17", 3056 | "pathe": "^2.0.2", 3057 | "std-env": "^3.8.0", 3058 | "tinybench": "^2.9.0", 3059 | "tinyexec": "^0.3.2", 3060 | "tinypool": "^1.0.2", 3061 | "tinyrainbow": "^2.0.0", 3062 | "vite": "^5.0.0 || ^6.0.0", 3063 | "vite-node": "3.0.4", 3064 | "why-is-node-running": "^2.3.0" 3065 | }, 3066 | "bin": { 3067 | "vitest": "vitest.mjs" 3068 | }, 3069 | "engines": { 3070 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3071 | }, 3072 | "funding": { 3073 | "url": "https://opencollective.com/vitest" 3074 | }, 3075 | "peerDependencies": { 3076 | "@edge-runtime/vm": "*", 3077 | "@types/debug": "^4.1.12", 3078 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3079 | "@vitest/browser": "3.0.4", 3080 | "@vitest/ui": "3.0.4", 3081 | "happy-dom": "*", 3082 | "jsdom": "*" 3083 | }, 3084 | "peerDependenciesMeta": { 3085 | "@edge-runtime/vm": { 3086 | "optional": true 3087 | }, 3088 | "@types/debug": { 3089 | "optional": true 3090 | }, 3091 | "@types/node": { 3092 | "optional": true 3093 | }, 3094 | "@vitest/browser": { 3095 | "optional": true 3096 | }, 3097 | "@vitest/ui": { 3098 | "optional": true 3099 | }, 3100 | "happy-dom": { 3101 | "optional": true 3102 | }, 3103 | "jsdom": { 3104 | "optional": true 3105 | } 3106 | } 3107 | }, 3108 | "node_modules/webidl-conversions": { 3109 | "version": "4.0.2", 3110 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 3111 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", 3112 | "dev": true, 3113 | "license": "BSD-2-Clause" 3114 | }, 3115 | "node_modules/whatwg-url": { 3116 | "version": "7.1.0", 3117 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 3118 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 3119 | "dev": true, 3120 | "license": "MIT", 3121 | "dependencies": { 3122 | "lodash.sortby": "^4.7.0", 3123 | "tr46": "^1.0.1", 3124 | "webidl-conversions": "^4.0.2" 3125 | } 3126 | }, 3127 | "node_modules/which": { 3128 | "version": "2.0.2", 3129 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3130 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3131 | "dev": true, 3132 | "license": "ISC", 3133 | "dependencies": { 3134 | "isexe": "^2.0.0" 3135 | }, 3136 | "bin": { 3137 | "node-which": "bin/node-which" 3138 | }, 3139 | "engines": { 3140 | "node": ">= 8" 3141 | } 3142 | }, 3143 | "node_modules/why-is-node-running": { 3144 | "version": "2.3.0", 3145 | "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", 3146 | "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", 3147 | "dev": true, 3148 | "license": "MIT", 3149 | "dependencies": { 3150 | "siginfo": "^2.0.0", 3151 | "stackback": "0.0.2" 3152 | }, 3153 | "bin": { 3154 | "why-is-node-running": "cli.js" 3155 | }, 3156 | "engines": { 3157 | "node": ">=8" 3158 | } 3159 | }, 3160 | "node_modules/wrap-ansi": { 3161 | "version": "8.1.0", 3162 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 3163 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 3164 | "dev": true, 3165 | "license": "MIT", 3166 | "dependencies": { 3167 | "ansi-styles": "^6.1.0", 3168 | "string-width": "^5.0.1", 3169 | "strip-ansi": "^7.0.1" 3170 | }, 3171 | "engines": { 3172 | "node": ">=12" 3173 | }, 3174 | "funding": { 3175 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3176 | } 3177 | }, 3178 | "node_modules/wrap-ansi-cjs": { 3179 | "name": "wrap-ansi", 3180 | "version": "7.0.0", 3181 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3182 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3183 | "dev": true, 3184 | "license": "MIT", 3185 | "dependencies": { 3186 | "ansi-styles": "^4.0.0", 3187 | "string-width": "^4.1.0", 3188 | "strip-ansi": "^6.0.0" 3189 | }, 3190 | "engines": { 3191 | "node": ">=10" 3192 | }, 3193 | "funding": { 3194 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3195 | } 3196 | }, 3197 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 3198 | "version": "5.0.1", 3199 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3200 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3201 | "dev": true, 3202 | "license": "MIT", 3203 | "engines": { 3204 | "node": ">=8" 3205 | } 3206 | }, 3207 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 3208 | "version": "4.3.0", 3209 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3210 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3211 | "dev": true, 3212 | "license": "MIT", 3213 | "dependencies": { 3214 | "color-convert": "^2.0.1" 3215 | }, 3216 | "engines": { 3217 | "node": ">=8" 3218 | }, 3219 | "funding": { 3220 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3221 | } 3222 | }, 3223 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 3224 | "version": "8.0.0", 3225 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3226 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3227 | "dev": true, 3228 | "license": "MIT" 3229 | }, 3230 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 3231 | "version": "4.2.3", 3232 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3233 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3234 | "dev": true, 3235 | "license": "MIT", 3236 | "dependencies": { 3237 | "emoji-regex": "^8.0.0", 3238 | "is-fullwidth-code-point": "^3.0.0", 3239 | "strip-ansi": "^6.0.1" 3240 | }, 3241 | "engines": { 3242 | "node": ">=8" 3243 | } 3244 | }, 3245 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 3246 | "version": "6.0.1", 3247 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3248 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3249 | "dev": true, 3250 | "license": "MIT", 3251 | "dependencies": { 3252 | "ansi-regex": "^5.0.1" 3253 | }, 3254 | "engines": { 3255 | "node": ">=8" 3256 | } 3257 | }, 3258 | "node_modules/yaml": { 3259 | "version": "2.4.5", 3260 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", 3261 | "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", 3262 | "dev": true, 3263 | "license": "ISC", 3264 | "bin": { 3265 | "yaml": "bin.mjs" 3266 | }, 3267 | "engines": { 3268 | "node": ">= 14" 3269 | } 3270 | } 3271 | } 3272 | } 3273 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chatgptreversed", 3 | "version": "0.2.4", 4 | "main": "./dist/index.js", 5 | "module": "./dist/index.mjs", 6 | "types": "./dist/index.d.ts", 7 | "scripts": { 8 | "build": "tsup --minify", 9 | "publish": "npm run build && npm publish", 10 | "test": "vitest --disable-console-intercept" 11 | }, 12 | "author": "gin337", 13 | "license": "MIT", 14 | "homepage": "https://github.com/gin337/ChatGPTReversed", 15 | "repository": { 16 | "url": "https://github.com/gin337/ChatGPTReversed" 17 | }, 18 | "description": "Free ChatGPT API reversed and simplified", 19 | "keywords": [ 20 | "chatgpt", 21 | "chatgpt api", 22 | "chatgpt proxy", 23 | "openai" 24 | ], 25 | "devDependencies": { 26 | "@types/node": "^20.14.2", 27 | "tsup": "^8.1.0", 28 | "typescript": "^5.4.5", 29 | "vitest": "^3.0.4" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import {randomUUID} from "crypto"; 2 | import { 3 | generateFakeSentinelToken, 4 | simulateBypassHeaders, 5 | solveSentinelChallenge, 6 | } from "./utils/utils"; 7 | 8 | export class ChatGPTReversed { 9 | public static csrfToken: string | undefined = undefined; 10 | private static initialized: boolean = false; 11 | 12 | constructor() { 13 | if (ChatGPTReversed.initialized) throw new Error("ChatGPTReversed has already been initialized."); 14 | 15 | this.initialize(); 16 | } 17 | 18 | private async initialize(): Promise { 19 | ChatGPTReversed.initialized = true; 20 | } 21 | 22 | public async rotateSessionData(): Promise<{ 23 | uuid: string; 24 | csrf: string; 25 | sentinel: { 26 | token: string; 27 | proof: string; 28 | oaiSc: string; 29 | }; 30 | }> { 31 | const uuid = randomUUID(); 32 | const csrfToken = await this.getCSRFToken(uuid); 33 | const sentinelToken = await this.getSentinelToken(uuid, csrfToken); 34 | 35 | ChatGPTReversed.csrfToken = csrfToken; 36 | 37 | return { 38 | uuid, 39 | csrf: csrfToken, 40 | sentinel: sentinelToken, 41 | }; 42 | } 43 | 44 | private async getCSRFToken(uuid: string): Promise { 45 | if (ChatGPTReversed.csrfToken !== undefined) { 46 | return ChatGPTReversed.csrfToken; 47 | } 48 | 49 | const headers = await simulateBypassHeaders({ 50 | spoofAddress: true, 51 | preOaiUUID: uuid, 52 | accept: "application/json", 53 | }); 54 | 55 | const response = await fetch("https://chatgpt.com/api/auth/csrf", { 56 | method: "GET", 57 | headers: headers, 58 | }); 59 | 60 | const data = await response.json(); 61 | 62 | if (data.csrfToken === undefined) { 63 | throw new Error("Failed to fetch required CSRF token"); 64 | } 65 | 66 | return data.csrfToken; 67 | } 68 | 69 | private async getSentinelToken( 70 | uuid: string, 71 | csrf: string 72 | ): Promise<{ 73 | token: string; 74 | proof: string; 75 | oaiSc: string; 76 | }> { 77 | const headers = await simulateBypassHeaders({ 78 | spoofAddress: true, 79 | preOaiUUID: uuid, 80 | accept: "application/json", 81 | }); 82 | 83 | const test = await generateFakeSentinelToken(); 84 | 85 | const response = await fetch("https://chatgpt.com/backend-anon/sentinel/chat-requirements", { 86 | body: JSON.stringify({ 87 | p: test, 88 | }), 89 | headers: { 90 | ...headers, 91 | Cookie: `__Host-next-auth.csrf-token=${csrf}; oai-did=${uuid}; oai-nav-state=1;`, 92 | }, 93 | method: "POST", 94 | }); 95 | 96 | const data = await response.json(); 97 | 98 | if (data.token === undefined || data.proofofwork === undefined) { 99 | throw new Error("Failed to fetch required required sentinel token"); 100 | } 101 | 102 | const oaiSc = response.headers.get("set-cookie")?.split("oai-sc=")[1]?.split(";")[0] || ""; 103 | 104 | if (!oaiSc) { 105 | throw new Error("Failed to fetch required oai-sc token"); 106 | } 107 | 108 | const challengeToken = await solveSentinelChallenge(data.proofofwork.seed, data.proofofwork.difficulty); 109 | 110 | return { 111 | token: data.token, 112 | proof: challengeToken, 113 | oaiSc: oaiSc, 114 | }; 115 | } 116 | 117 | public async complete(message: string): Promise { 118 | const sessionData = await this.rotateSessionData(); 119 | 120 | if (!ChatGPTReversed.initialized) { 121 | throw new Error( 122 | "ChatGPTReversed has not been initialized. Please initialize the instance before calling this method." 123 | ); 124 | } 125 | 126 | const headers = await simulateBypassHeaders({ 127 | accept: "text/event-stream", 128 | spoofAddress: true, 129 | preOaiUUID: sessionData.uuid, 130 | }); 131 | 132 | const response = await fetch("https://chatgpt.com/backend-anon/conversation", { 133 | headers: { 134 | ...headers, 135 | Cookie: `__Host-next-auth.csrf-token=${sessionData.csrf}; oai-did=${sessionData.uuid}; oai-nav-state=1; oai-sc=${sessionData.sentinel.oaiSc};`, 136 | "openai-sentinel-chat-requirements-token": sessionData.sentinel.token, 137 | "openai-sentinel-proof-token": sessionData.sentinel.proof, 138 | }, 139 | body: JSON.stringify({ 140 | action: "next", 141 | messages: [ 142 | { 143 | id: randomUUID(), 144 | author: { 145 | role: "user", 146 | }, 147 | content: { 148 | content_type: "text", 149 | parts: [message], 150 | }, 151 | metadata: {}, 152 | }, 153 | ], 154 | parent_message_id: randomUUID(), 155 | model: "auto", 156 | timezone_offset_min: -120, 157 | suggestions: [], 158 | history_and_training_disabled: false, 159 | conversation_mode: { 160 | kind: "primary_assistant", 161 | plugin_ids: null, 162 | }, 163 | force_paragen: false, 164 | force_paragen_model_slug: "", 165 | force_nulligen: false, 166 | force_rate_limit: false, 167 | reset_rate_limits: false, 168 | websocket_request_id: randomUUID(), 169 | force_use_sse: true, 170 | }), 171 | method: "POST", 172 | }); 173 | 174 | if (response.body === null) { 175 | throw new Error("Failed to receive response body. Please check your sessionToken and try again."); 176 | } 177 | 178 | const reader = response.body.getReader(); 179 | const decoder = new TextDecoder(); 180 | let result = ""; 181 | let buffer: any = ""; 182 | 183 | while (true) { 184 | const {done, value} = await reader.read(); 185 | if (done) break; 186 | 187 | buffer += decoder.decode(value, {stream: true}); 188 | let lines = buffer.split("\n"); 189 | buffer = lines.pop(); 190 | 191 | for (const line of lines) { 192 | if (line.startsWith("data:")) { 193 | try { 194 | const json = JSON.parse(line.replace("data:", "").trim()); 195 | if (json.message?.content?.parts && json.message.status === "finished_successfully") { 196 | result = json.message.content.parts[0]; 197 | break; 198 | } 199 | } catch (e) { 200 | continue; 201 | } 202 | } 203 | } 204 | if (result) break; 205 | } 206 | 207 | if (!result && buffer.startsWith("data:")) { 208 | try { 209 | const json = JSON.parse(buffer.replace("data:", "").trim()); 210 | if (json.message?.content?.parts && json.message.status === "finished_successfully") { 211 | result = json.message.content.parts[0]; 212 | } 213 | } catch (e) {} 214 | } 215 | 216 | return result; 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /src/utils/utils.ts: -------------------------------------------------------------------------------- 1 | import {randomUUID, randomInt, createHash} from "crypto"; 2 | 3 | export const randomIP = async (): Promise => 4 | Array.from({length: 4}, () => Math.floor(Math.random() * 256)).join("."); 5 | 6 | export const _randomUUID = (): string => randomUUID().toString(); 7 | 8 | const simulated = { 9 | agent: 10 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36", 11 | platform: "Windows", 12 | mobile: "?0", 13 | ua: 'Not A(Brand";v="8", "Chromium";v="132", "Google Chrome";v="132', 14 | }; 15 | 16 | export async function simulateBypassHeaders({ 17 | accept, 18 | spoofAddress = false, 19 | preOaiUUID, 20 | }: { 21 | accept: string; 22 | spoofAddress?: boolean; 23 | preOaiUUID?: string; 24 | }): Promise> { 25 | const ip = await randomIP(); 26 | const uuid = _randomUUID(); 27 | 28 | return { 29 | accept: accept, 30 | "Content-Type": "application/json", 31 | "cache-control": "no-cache", 32 | Referer: "https://chatgpt.com/", 33 | "Referrer-Policy": "strict-origin-when-cross-origin", 34 | "oai-device-id": preOaiUUID || uuid, 35 | "User-Agent": simulated.agent, 36 | pragma: "no-cache", 37 | priority: "u=1, i", 38 | "sec-ch-ua": `"${simulated.ua}"`, 39 | "sec-ch-ua-mobile": simulated.mobile, 40 | "sec-ch-ua-platform": `"${simulated.platform}"`, 41 | "sec-fetch-site": "same-origin", 42 | "sec-fetch-mode": "cors", 43 | ...(spoofAddress 44 | ? { 45 | "X-Forwarded-For": ip, 46 | "X-Originating-IP": ip, 47 | "X-Remote-IP": ip, 48 | "X-Remote-Addr": ip, 49 | "X-Host": ip, 50 | "X-Forwarded-Host": ip, 51 | } 52 | : {}), 53 | }; 54 | } 55 | 56 | export async function solveSentinelChallenge(seed: string, difficulty: string): Promise { 57 | const cores = [8, 12, 16, 24]; 58 | const screens = [3000, 4000, 6000]; 59 | 60 | const core = cores[randomInt(0, cores.length)]; 61 | const screen = screens[randomInt(0, screens.length)]; 62 | 63 | const now = new Date(Date.now() - 8 * 3600 * 1000); 64 | const parseTime = now.toUTCString().replace("GMT", "GMT+0100 (Central European Time)"); 65 | 66 | const config = [core + screen, parseTime, 4294705152, 0, simulated.agent]; 67 | 68 | const diffLen = difficulty.length / 2; 69 | 70 | for (let i = 0; i < 100000; i++) { 71 | config[3] = i; 72 | const jsonData = JSON.stringify(config); 73 | const base = Buffer.from(jsonData).toString("base64"); 74 | const hashValue = createHash("sha3-512") 75 | .update(seed + base) 76 | .digest(); 77 | 78 | if (hashValue.toString("hex").substring(0, diffLen) <= difficulty) { 79 | const result = "gAAAAAB" + base; 80 | return result; 81 | } 82 | } 83 | 84 | const fallbackBase = Buffer.from(`"${seed}"`).toString("base64"); 85 | return "gAAAAABwQ8Lk5FbGpA2NcR9dShT6gYjU7VxZ4D" + fallbackBase; 86 | } 87 | 88 | export async function generateFakeSentinelToken() { 89 | const prefix = "gAAAAAC"; 90 | 91 | const config = [ 92 | randomInt(3000, 6000), 93 | new Date().toUTCString().replace("GMT", "GMT+0100 (Central European Time)"), 94 | 4294705152, 95 | 0, 96 | simulated.agent, 97 | "de", 98 | "de", 99 | 401, 100 | "mediaSession", 101 | "location", 102 | "scrollX", 103 | randomFloat(1000, 5000), 104 | crypto.randomUUID(), 105 | "", 106 | 12, 107 | Date.now(), 108 | ]; 109 | 110 | const base64 = Buffer.from(JSON.stringify(config)).toString("base64"); 111 | 112 | return prefix + base64; 113 | } 114 | 115 | function randomFloat(min: number, max: number) { 116 | return (Math.random() * (max - min) + min).toFixed(4); 117 | } 118 | -------------------------------------------------------------------------------- /tests/answer.test.ts: -------------------------------------------------------------------------------- 1 | import {expect, test} from "vitest"; 2 | import {ChatGPTReversed} from "../src/index"; 3 | 4 | test("Retrieves answer from oai", async () => { 5 | const chatgpt = new ChatGPTReversed(); 6 | 7 | const result = await chatgpt.complete("Hey, how are you?"); 8 | console.log("Result: ", result); 9 | 10 | expect(result).toBeTypeOf("string"); 11 | }); 12 | -------------------------------------------------------------------------------- /tests/rotate.test.ts: -------------------------------------------------------------------------------- 1 | import {expect, test} from "vitest"; 2 | import {ChatGPTReversed} from "../src/index"; 3 | 4 | test("Rotates all needed values", async () => { 5 | const chatgpt = new ChatGPTReversed(); 6 | 7 | const result = await chatgpt.rotateSessionData(); 8 | 9 | console.log("Result: ", result); 10 | 11 | expect(result).toEqual({ 12 | uuid: expect.any(String), 13 | csrf: expect.any(String), 14 | sentinel: { 15 | token: expect.any(String), 16 | proof: expect.any(String), 17 | oaiSc: expect.any(String), 18 | }, 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "noImplicitAny": true, 5 | "esModuleInterop": true, 6 | "strictNullChecks": true, 7 | "target": "ES2022", 8 | "moduleResolution": "Node10", 9 | "module": "CommonJS", 10 | "declaration": true, 11 | "isolatedModules": true, 12 | "noEmit": true, 13 | "outDir": "dist" 14 | }, 15 | "include": [ 16 | "src" 17 | ], 18 | "exclude": [ 19 | "node_modules" 20 | ] 21 | } -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import {defineConfig} from "tsup"; 2 | 3 | export default defineConfig({ 4 | format: ["cjs", "esm"], 5 | entry: ["./src/index.ts"], 6 | dts: true, 7 | shims: true, 8 | skipNodeModulesBundle: true, 9 | clean: true, 10 | }); -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import {defineConfig} from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | globals: true, 6 | environment: "node", 7 | }, 8 | }); --------------------------------------------------------------------------------