From b39b59e46b2e90e07b47f4c7a08d0900b9c36f1e Mon Sep 17 00:00:00 2001 From: quoccuong205 Date: Sat, 21 Mar 2026 15:14:02 +0700 Subject: [PATCH 1/3] feat(code): Add solution for problem 4 --- src/problem4/index.ts | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/problem4/index.ts diff --git a/src/problem4/index.ts b/src/problem4/index.ts new file mode 100644 index 000000000..441bb252a --- /dev/null +++ b/src/problem4/index.ts @@ -0,0 +1,56 @@ +/** + * Problem 4: Three ways to sum to n + * Summation from 1 to n: sum_to_n(5) === 1 + 2 + 3 + 4 + 5 === 15 + * Handles positive integers, negative integers, and zero. + */ + +/** + * Implementation A: Gauss closed-form formula + * + * For n >= 0: n * (n + 1) / 2 (standard arithmetic series) + * For n < 0: -(|n| * (|n| + 1) / 2) (symmetric signed sum toward -1) + * + * Time complexity: O(1) — single arithmetic expression, no iteration + * Space complexity: O(1) — no additional memory + */ +export function sum_to_n_a(n: number): number { + const abs = Math.abs(n); + return Math.sign(n) * (abs * (abs + 1)) / 2; +} + +/** + * Implementation B: Iterative loop + * + * Accumulates the sum by iterating from 1 to n (or n to -1 for negatives). + * + * Time complexity: O(n) — linear, one pass through all integers up to n + * Space complexity: O(1) — only a single accumulator variable + */ +export function sum_to_n_b(n: number): number { + let sum = 0; + if (n >= 0) { + for (let i = 1; i <= n; i++) { + sum += i; + } + } else { + for (let i = -1; i >= n; i--) { + sum += i; + } + } + return sum; +} + +/** + * Implementation C: Recursive + * + * Recursively sums by reducing n toward 0 on each call. + * + * Time complexity: O(n) — n recursive calls on the call stack + * Space complexity: O(n) — each call frame is kept on the stack until unwinding; + * this can cause a stack overflow for very large |n| + */ +export function sum_to_n_c(n: number): number { + if (n === 0) return 0; + if (n > 0) return n + sum_to_n_c(n - 1); + return n + sum_to_n_c(n + 1); +} From 524ca3eadf5ab3958713691f953356691f0c72d0 Mon Sep 17 00:00:00 2001 From: quoccuong205 Date: Sat, 21 Mar 2026 16:04:07 +0700 Subject: [PATCH 2/3] feat(api): Add solution for problem 5 --- src/problem5/.env.example | 3 + src/problem5/.gitignore | 6 + src/problem5/.npmrc | 1 + src/problem5/README.md | 201 + src/problem5/jest.config.ts | 13 + src/problem5/package-lock.json | 7579 +++++++++++++++++ src/problem5/package.json | 33 + src/problem5/postman_collection.json | 235 + src/problem5/src/app.ts | 17 + .../src/common/constants/httpStatus.ts | 8 + .../src/common/middleware/error.middleware.ts | 31 + .../common/middleware/validate.middleware.ts | 20 + src/problem5/src/common/types/express.d.ts | 1 + src/problem5/src/common/utils/logger.ts | 10 + src/problem5/src/config/database.ts | 12 + src/problem5/src/config/env.ts | 7 + src/problem5/src/database/seed/index.ts | 24 + .../__tests__/resource.service.test.ts | 111 + .../__tests__/resource.validation.test.ts | 123 + .../modules/resource/resource.controller.ts | 54 + .../src/modules/resource/resource.dto.ts | 27 + .../src/modules/resource/resource.model.ts | 28 + .../modules/resource/resource.repository.ts | 61 + .../src/modules/resource/resource.routes.ts | 22 + .../src/modules/resource/resource.service.ts | 31 + .../modules/resource/resource.validation.ts | 30 + src/problem5/src/routes/index.ts | 6 + src/problem5/src/server.ts | 17 + src/problem5/tsconfig.json | 18 + 29 files changed, 8729 insertions(+) create mode 100644 src/problem5/.env.example create mode 100644 src/problem5/.gitignore create mode 100644 src/problem5/.npmrc create mode 100644 src/problem5/README.md create mode 100644 src/problem5/jest.config.ts create mode 100644 src/problem5/package-lock.json create mode 100644 src/problem5/package.json create mode 100644 src/problem5/postman_collection.json create mode 100644 src/problem5/src/app.ts create mode 100644 src/problem5/src/common/constants/httpStatus.ts create mode 100644 src/problem5/src/common/middleware/error.middleware.ts create mode 100644 src/problem5/src/common/middleware/validate.middleware.ts create mode 100644 src/problem5/src/common/types/express.d.ts create mode 100644 src/problem5/src/common/utils/logger.ts create mode 100644 src/problem5/src/config/database.ts create mode 100644 src/problem5/src/config/env.ts create mode 100644 src/problem5/src/database/seed/index.ts create mode 100644 src/problem5/src/modules/resource/__tests__/resource.service.test.ts create mode 100644 src/problem5/src/modules/resource/__tests__/resource.validation.test.ts create mode 100644 src/problem5/src/modules/resource/resource.controller.ts create mode 100644 src/problem5/src/modules/resource/resource.dto.ts create mode 100644 src/problem5/src/modules/resource/resource.model.ts create mode 100644 src/problem5/src/modules/resource/resource.repository.ts create mode 100644 src/problem5/src/modules/resource/resource.routes.ts create mode 100644 src/problem5/src/modules/resource/resource.service.ts create mode 100644 src/problem5/src/modules/resource/resource.validation.ts create mode 100644 src/problem5/src/routes/index.ts create mode 100644 src/problem5/src/server.ts create mode 100644 src/problem5/tsconfig.json diff --git a/src/problem5/.env.example b/src/problem5/.env.example new file mode 100644 index 000000000..5a76a7d2c --- /dev/null +++ b/src/problem5/.env.example @@ -0,0 +1,3 @@ +PORT=3000 +NODE_ENV=development +DB_PATH=./data/dev.db diff --git a/src/problem5/.gitignore b/src/problem5/.gitignore new file mode 100644 index 000000000..cb4099fde --- /dev/null +++ b/src/problem5/.gitignore @@ -0,0 +1,6 @@ +node_modules/ +dist/ +.env +*.db +*.db-shm +*.db-wal diff --git a/src/problem5/.npmrc b/src/problem5/.npmrc new file mode 100644 index 000000000..521a9f7c0 --- /dev/null +++ b/src/problem5/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true diff --git a/src/problem5/README.md b/src/problem5/README.md new file mode 100644 index 000000000..ef273369f --- /dev/null +++ b/src/problem5/README.md @@ -0,0 +1,201 @@ +# Problem 5 – Crude Server + +A production-quality REST API built with **Express.js**, **TypeScript**, **TypeORM**, and **SQLite**. + +## Stack + +| Layer | Technology | +|---|---| +| Framework | Express.js | +| Language | TypeScript | +| ORM | TypeORM | +| Database | SQLite (via sqlite3) | +| Validation | Zod | +| Testing | Jest + ts-jest | + +## Project Structure + +``` +src/ +├── app.ts # Express app setup +├── server.ts # Entry point +├── config/ +│ ├── env.ts # Environment variables +│ └── database.ts # TypeORM DataSource +├── modules/ +│ └── resource/ +│ ├── resource.model.ts # TypeORM entity +│ ├── resource.dto.ts # Types / interfaces +│ ├── resource.validation.ts # Zod schemas +│ ├── resource.repository.ts # Database queries +│ ├── resource.service.ts # Business logic +│ ├── resource.controller.ts # Request / response handling +│ └── resource.routes.ts # Express router +├── common/ +│ ├── middleware/ +│ │ ├── error.middleware.ts # Centralized error handler +│ │ └── validate.middleware.ts # Zod validation middleware +│ ├── utils/logger.ts +│ ├── types/express.d.ts +│ └── constants/httpStatus.ts +├── routes/ +│ └── index.ts # Combines all routes +└── database/ + └── seed/index.ts # Seed data +``` + +## Prerequisites + +- Node.js >= 18 +- npm + +## Configuration + +Copy `.env.example` to `.env`: + +```bash +cp .env.example .env +``` + +| Variable | Default | Description | +|---|---|---| +| `PORT` | `3000` | HTTP port | +| `NODE_ENV` | `development` | Environment | +| `DB_PATH` | `./data/dev.db` | SQLite file path | + +## Running + +### Development + +```bash +npm install +npm run dev +``` + +The database tables are created automatically on first start (`synchronize: true`). + +### Production + +```bash +npm run build +npm start +``` + +### Seed (optional) + +```bash +npm run db:seed +``` + +## Testing + +```bash +# Run all tests +npm test + +# Watch mode +npm run test:watch +``` + +### Test coverage + +| File | What is tested | +|---|---| +| `resource.validation.ts` | All Zod schemas — valid input, edge cases, cross-field rules (`minPrice ≤ maxPrice`) | +| `resource.service.ts` | All service methods with mocked repository — happy path and 404 error cases | + +Tests are located in `src/modules/resource/__tests__/`. + +## API Reference + +Base URL: `http://localhost:3000/api` + +### List resources + +``` +GET /resources +``` + +Query parameters: + +| Param | Type | Description | +|---|---|---| +| `name` | string | Partial name match | +| `minPrice` | number | Minimum price | +| `maxPrice` | number | Maximum price | +| `page` | number | Page number (default: 1) | +| `limit` | number | Page size (default: 20, max: 100) | + +**Response** +```json +{ + "data": [...], + "total": 10, + "page": 1, + "limit": 20, + "totalPages": 1 +} +``` + +### Get resource + +``` +GET /resources/:id +``` + +### Create resource + +``` +POST /resources +Content-Type: application/json + +{ + "name": "Laptop", + "description": "High performance laptop", + "price": 999.99 +} +``` + +**Response:** `201 Created` + +### Update resource + +``` +PATCH /resources/:id +Content-Type: application/json + +{ + "price": 899.99 +} +``` + +### Delete resource + +``` +DELETE /resources/:id +``` + +**Response:** `204 No Content` + +## Example curl commands + +```bash +# Create +curl -X POST http://localhost:3000/api/resources \ + -H "Content-Type: application/json" \ + -d '{"name":"Laptop","description":"Gaming laptop","price":999.99}' + +# List with filters +curl "http://localhost:3000/api/resources?minPrice=100&maxPrice=1000&page=1&limit=10" + +# Get by id +curl http://localhost:3000/api/resources/1 + +# Update +curl -X PATCH http://localhost:3000/api/resources/1 \ + -H "Content-Type: application/json" \ + -d '{"price":899.99}' + +# Delete +curl -X DELETE http://localhost:3000/api/resources/1 +``` diff --git a/src/problem5/jest.config.ts b/src/problem5/jest.config.ts new file mode 100644 index 000000000..fccdbce2f --- /dev/null +++ b/src/problem5/jest.config.ts @@ -0,0 +1,13 @@ +import type { Config } from 'jest'; + +const config: Config = { + preset: 'ts-jest', + testEnvironment: 'node', + rootDir: 'src', + testMatch: ['**/__tests__/**/*.test.ts'], + moduleNameMapper: { + '^reflect-metadata$': '/../node_modules/reflect-metadata', + }, +}; + +export default config; diff --git a/src/problem5/package-lock.json b/src/problem5/package-lock.json new file mode 100644 index 000000000..3aea9f1c9 --- /dev/null +++ b/src/problem5/package-lock.json @@ -0,0 +1,7579 @@ +{ + "name": "problem5-crud-server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "problem5-crud-server", + "version": "1.0.0", + "dependencies": { + "dotenv": "^17.3.1", + "express": "^4.19.2", + "reflect-metadata": "^0.2.1", + "sqlite3": "^6.0.1", + "typeorm": "^0.3.20", + "zod": "^3.22.4" + }, + "devDependencies": { + "@types/express": "^4.17.21", + "@types/jest": "^30.0.0", + "@types/node": "^20.11.5", + "@types/sqlite3": "^3.1.11", + "jest": "^30.3.0", + "ts-jest": "^29.4.6", + "tsx": "^4.7.0", + "typescript": "^5.3.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", + "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@gar/promise-retry": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz", + "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", + "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", + "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.3.0", + "jest-config": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-resolve-dependencies": "30.3.0", + "jest-runner": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "jest-watcher": "30.3.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.3.0", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", + "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/types": "30.3.0", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", + "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", + "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", + "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/types": "30.3.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", + "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", + "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "license": "ISC", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "license": "ISC", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", + "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", + "license": "ISC", + "optional": true, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sqlite3": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.11.tgz", + "integrity": "sha512-KYF+QgxAnnAh7DWPdNDroxkDI3/MspH1NMx6m/N/6fT1G6+jvsw4/ZePt8R8cr7ta58aboeTfYFBDxTJ5yv15w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "license": "ISC", + "optional": true, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", + "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.3.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", + "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", + "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz", + "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz", + "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==", + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/cacache/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "optional": true, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001780", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", + "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "optional": true + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "optional": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", + "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/types": "30.3.0", + "import-local": "^3.2.0", + "jest-cli": "30.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", + "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.3.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", + "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "p-limit": "^3.1.0", + "pretty-format": "30.3.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", + "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", + "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.3.0", + "@jest/types": "30.3.0", + "babel-jest": "30.3.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.3.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-runner": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "parse-json": "^5.2.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", + "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", + "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", + "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", + "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/environment": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-leak-detector": "30.3.0", + "jest-message-util": "30.3.0", + "jest-resolve": "30.3.0", + "jest-runtime": "30.3.0", + "jest-util": "30.3.0", + "jest-watcher": "30.3.0", + "jest-worker": "30.3.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", + "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/globals": "30.3.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-snapshot": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", + "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "pretty-format": "30.3.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", + "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", + "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.3.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "license": "BlueOak-1.0.0", + "optional": true, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz", + "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==", + "license": "ISC", + "optional": true, + "dependencies": { + "@gar/promise-retry": "^1.0.0", + "@npmcli/agent": "^4.0.0", + "@npmcli/redact": "^4.0.0", + "cacache": "^20.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^5.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^6.0.0", + "ssri": "^13.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", + "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^2.0.0", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + }, + "optionalDependencies": { + "iconv-lite": "^0.7.2" + } + }, + "node_modules/minipass-fetch/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/minipass-sized": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", + "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.89.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.89.0.tgz", + "integrity": "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", + "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-gyp": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", + "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^15.0.0", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "tar": "^7.5.4", + "tinyglobby": "^0.2.12", + "which": "^6.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "optional": true, + "engines": { + "node": ">=20" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "optional": true, + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "^4.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "optional": true, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "optional": true, + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "optional": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sql-highlight": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", + "funding": [ + "https://github.com/scriptcoded/sql-highlight?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/scriptcoded" + } + ], + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/sqlite3": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-6.0.1.tgz", + "integrity": "sha512-X0czUUMG2tmSqJpEQa3tCuZSHKIx8PwM53vLZzKp/o6Rpy25fiVfjdbnZ988M8+O3ZWR1ih0K255VumCb3MAnQ==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^8.0.0", + "prebuild-install": "^7.1.3", + "tar": "^7.5.10" + }, + "engines": { + "node": ">=20.17.0" + }, + "optionalDependencies": { + "node-gyp": "12.x" + }, + "peerDependencies": { + "node-gyp": "12.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/ssri": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", + "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tar": { + "version": "7.5.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.12.tgz", + "integrity": "sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-jest": { + "version": "29.4.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", + "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.8", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.3", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typeorm": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", + "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", + "license": "MIT", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^4.2.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.19", + "debug": "^4.4.3", + "dedent": "^1.7.0", + "dotenv": "^16.6.1", + "glob": "^10.5.0", + "reflect-metadata": "^0.2.2", + "sha.js": "^2.4.12", + "sql-highlight": "^6.1.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@sap/hana-client": "^2.14.22", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typeorm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/typeorm/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/typeorm/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/src/problem5/package.json b/src/problem5/package.json new file mode 100644 index 000000000..f9b8eb95c --- /dev/null +++ b/src/problem5/package.json @@ -0,0 +1,33 @@ +{ + "name": "problem5-crud-server", + "version": "1.0.0", + "description": "Production-quality ExpressJS CRUD server with TypeScript, TypeORM, and SQLite", + "main": "dist/server.js", + "scripts": { + "dev": "tsx watch src/server.ts", + "build": "tsc", + "start": "node dist/server.js", + "typecheck": "tsc --noEmit", + "db:seed": "tsx src/database/seed/index.ts", + "test": "jest", + "test:watch": "jest --watch" + }, + "dependencies": { + "dotenv": "^17.3.1", + "express": "^4.19.2", + "reflect-metadata": "^0.2.1", + "sqlite3": "^6.0.1", + "typeorm": "^0.3.20", + "zod": "^3.22.4" + }, + "devDependencies": { + "@types/express": "^4.17.21", + "@types/jest": "^30.0.0", + "@types/node": "^20.11.5", + "@types/sqlite3": "^3.1.11", + "jest": "^30.3.0", + "ts-jest": "^29.4.6", + "tsx": "^4.7.0", + "typescript": "^5.3.3" + } +} diff --git a/src/problem5/postman_collection.json b/src/problem5/postman_collection.json new file mode 100644 index 000000000..d58ed4725 --- /dev/null +++ b/src/problem5/postman_collection.json @@ -0,0 +1,235 @@ +{ + "info": { + "name": "Problem 5 - CRUD API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "variable": [ + { + "key": "baseUrl", + "value": "http://localhost:3000", + "type": "string" + } + ], + "item": [ + { + "name": "Health", + "item": [ + { + "name": "Health Check", + "request": { + "method": "GET", + "url": { + "raw": "{{baseUrl}}/health", + "host": ["{{baseUrl}}"], + "path": ["health"] + } + } + } + ] + }, + { + "name": "Resources", + "item": [ + { + "name": "List Resources", + "request": { + "method": "GET", + "url": { + "raw": "{{baseUrl}}/api/resources?page=1&limit=20", + "host": ["{{baseUrl}}"], + "path": ["api", "resources"], + "query": [ + { "key": "page", "value": "1" }, + { "key": "limit", "value": "20" }, + { "key": "name", "value": "", "disabled": true }, + { "key": "minPrice", "value": "", "disabled": true }, + { "key": "maxPrice", "value": "", "disabled": true } + ] + } + } + }, + { + "name": "List Resources - Filter by Name", + "request": { + "method": "GET", + "url": { + "raw": "{{baseUrl}}/api/resources?name=laptop&page=1&limit=20", + "host": ["{{baseUrl}}"], + "path": ["api", "resources"], + "query": [ + { "key": "name", "value": "laptop" }, + { "key": "page", "value": "1" }, + { "key": "limit", "value": "20" } + ] + } + } + }, + { + "name": "List Resources - Filter by Price Range", + "request": { + "method": "GET", + "url": { + "raw": "{{baseUrl}}/api/resources?minPrice=100&maxPrice=1000&page=1&limit=20", + "host": ["{{baseUrl}}"], + "path": ["api", "resources"], + "query": [ + { "key": "minPrice", "value": "100" }, + { "key": "maxPrice", "value": "1000" }, + { "key": "page", "value": "1" }, + { "key": "limit", "value": "20" } + ] + } + } + }, + { + "name": "Create Resource", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/api/resources", + "host": ["{{baseUrl}}"], + "path": ["api", "resources"] + }, + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Laptop\",\n \"description\": \"High performance laptop\",\n \"price\": 999.99\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, + { + "name": "Create Resource - Validation Error", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/api/resources", + "host": ["{{baseUrl}}"], + "path": ["api", "resources"] + }, + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"price\": -10\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, + { + "name": "Get Resource by ID", + "request": { + "method": "GET", + "url": { + "raw": "{{baseUrl}}/api/resources/1", + "host": ["{{baseUrl}}"], + "path": ["api", "resources", "1"] + } + } + }, + { + "name": "Get Resource by ID - Not Found", + "request": { + "method": "GET", + "url": { + "raw": "{{baseUrl}}/api/resources/9999", + "host": ["{{baseUrl}}"], + "path": ["api", "resources", "9999"] + } + } + }, + { + "name": "Update Resource", + "request": { + "method": "PATCH", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/api/resources/1", + "host": ["{{baseUrl}}"], + "path": ["api", "resources", "1"] + }, + "body": { + "mode": "raw", + "raw": "{\n \"price\": 899.99\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, + { + "name": "Update Resource - Not Found", + "request": { + "method": "PATCH", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/api/resources/9999", + "host": ["{{baseUrl}}"], + "path": ["api", "resources", "9999"] + }, + "body": { + "mode": "raw", + "raw": "{\n \"price\": 899.99\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, + { + "name": "Delete Resource", + "request": { + "method": "DELETE", + "url": { + "raw": "{{baseUrl}}/api/resources/1", + "host": ["{{baseUrl}}"], + "path": ["api", "resources", "1"] + } + } + }, + { + "name": "Delete Resource - Not Found", + "request": { + "method": "DELETE", + "url": { + "raw": "{{baseUrl}}/api/resources/9999", + "host": ["{{baseUrl}}"], + "path": ["api", "resources", "9999"] + } + } + } + ] + } + ] +} diff --git a/src/problem5/src/app.ts b/src/problem5/src/app.ts new file mode 100644 index 000000000..449ad3882 --- /dev/null +++ b/src/problem5/src/app.ts @@ -0,0 +1,17 @@ +import 'reflect-metadata'; +import express from 'express'; +import { rootRouter } from './routes'; +import { errorMiddleware } from './common/middleware/error.middleware'; + +export function createApp() { + const app = express(); + + app.use(express.json()); + + app.get('/health', (_req, res) => res.json({ status: 'ok' })); + app.use('/api', rootRouter); + + app.use(errorMiddleware); + + return app; +} diff --git a/src/problem5/src/common/constants/httpStatus.ts b/src/problem5/src/common/constants/httpStatus.ts new file mode 100644 index 000000000..fd3eddf71 --- /dev/null +++ b/src/problem5/src/common/constants/httpStatus.ts @@ -0,0 +1,8 @@ +export const HttpStatus = { + OK: 200, + CREATED: 201, + NO_CONTENT: 204, + BAD_REQUEST: 400, + NOT_FOUND: 404, + INTERNAL_SERVER_ERROR: 500, +} as const; diff --git a/src/problem5/src/common/middleware/error.middleware.ts b/src/problem5/src/common/middleware/error.middleware.ts new file mode 100644 index 000000000..7c21924b6 --- /dev/null +++ b/src/problem5/src/common/middleware/error.middleware.ts @@ -0,0 +1,31 @@ +import { Request, Response, NextFunction } from 'express'; +import { HttpStatus } from '../constants/httpStatus'; +import { logger } from '../utils/logger'; + +export class AppError extends Error { + constructor( + public readonly statusCode: number, + message: string + ) { + super(message); + this.name = 'AppError'; + } +} + +export function errorMiddleware( + err: Error, + _req: Request, + res: Response, + _next: NextFunction +): void { + if (err instanceof AppError) { + res.status(err.statusCode).json({ error: err.message }); + return; + } + + logger.error(err.message, err.stack); + res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({ + error: 'Internal server error', + ...(process.env.NODE_ENV !== 'production' && { details: err.message }), + }); +} diff --git a/src/problem5/src/common/middleware/validate.middleware.ts b/src/problem5/src/common/middleware/validate.middleware.ts new file mode 100644 index 000000000..ceb06927c --- /dev/null +++ b/src/problem5/src/common/middleware/validate.middleware.ts @@ -0,0 +1,20 @@ +import { Request, Response, NextFunction } from 'express'; +import { ZodSchema } from 'zod'; +import { HttpStatus } from '../constants/httpStatus'; + +type Target = 'body' | 'query' | 'params'; + +export function validate(schema: ZodSchema, target: Target = 'body') { + return (req: Request, res: Response, next: NextFunction): void => { + const result = schema.safeParse(req[target]); + if (!result.success) { + res.status(HttpStatus.BAD_REQUEST).json({ + error: 'Validation failed', + details: result.error.flatten().fieldErrors, + }); + return; + } + req[target] = result.data; + next(); + }; +} diff --git a/src/problem5/src/common/types/express.d.ts b/src/problem5/src/common/types/express.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/src/problem5/src/common/types/express.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/problem5/src/common/utils/logger.ts b/src/problem5/src/common/utils/logger.ts new file mode 100644 index 000000000..12794d521 --- /dev/null +++ b/src/problem5/src/common/utils/logger.ts @@ -0,0 +1,10 @@ +const timestamp = () => new Date().toISOString(); + +export const logger = { + info: (msg: string, ...args: unknown[]) => + console.log(`[${timestamp()}] INFO: ${msg}`, ...args), + error: (msg: string, ...args: unknown[]) => + console.error(`[${timestamp()}] ERROR: ${msg}`, ...args), + warn: (msg: string, ...args: unknown[]) => + console.warn(`[${timestamp()}] WARN: ${msg}`, ...args), +}; diff --git a/src/problem5/src/config/database.ts b/src/problem5/src/config/database.ts new file mode 100644 index 000000000..e8f3b6fd6 --- /dev/null +++ b/src/problem5/src/config/database.ts @@ -0,0 +1,12 @@ +import 'reflect-metadata'; +import { DataSource } from 'typeorm'; +import { Resource } from '../modules/resource/resource.model'; +import { env } from './env'; + +export const AppDataSource = new DataSource({ + type: 'sqlite', + database: env.dbPath, + entities: [Resource], + synchronize: true, + logging: env.nodeEnv === 'development', +}); diff --git a/src/problem5/src/config/env.ts b/src/problem5/src/config/env.ts new file mode 100644 index 000000000..f4edc326f --- /dev/null +++ b/src/problem5/src/config/env.ts @@ -0,0 +1,7 @@ +import 'dotenv/config'; + +export const env = { + port: parseInt(process.env.PORT ?? '3000', 10), + nodeEnv: process.env.NODE_ENV ?? 'development', + dbPath: process.env.DB_PATH ?? './data/dev.db', +}; diff --git a/src/problem5/src/database/seed/index.ts b/src/problem5/src/database/seed/index.ts new file mode 100644 index 000000000..c1a6e7e8f --- /dev/null +++ b/src/problem5/src/database/seed/index.ts @@ -0,0 +1,24 @@ +import 'reflect-metadata'; +import { AppDataSource } from '../../config/database'; +import { Resource } from '../../modules/resource/resource.model'; + +async function seed() { + await AppDataSource.initialize(); + const repo = AppDataSource.getRepository(Resource); + + const seeds = [ + { name: 'Laptop', description: 'High performance laptop', price: 999.99 }, + { name: 'Keyboard', description: 'Mechanical keyboard', price: 149.99 }, + { name: 'Monitor', description: '4K display', price: 499.99 }, + ]; + + for (const data of seeds) { + const resource = repo.create(data); + await repo.save(resource); + } + + console.log('Seed completed.'); + await AppDataSource.destroy(); +} + +seed().catch(console.error); diff --git a/src/problem5/src/modules/resource/__tests__/resource.service.test.ts b/src/problem5/src/modules/resource/__tests__/resource.service.test.ts new file mode 100644 index 000000000..fea9c34bc --- /dev/null +++ b/src/problem5/src/modules/resource/__tests__/resource.service.test.ts @@ -0,0 +1,111 @@ +import { ResourceService } from '../resource.service'; +import { ResourceRepository } from '../resource.repository'; +import { AppError } from '../../../common/middleware/error.middleware'; +import { HttpStatus } from '../../../common/constants/httpStatus'; +import { Resource } from '../resource.model'; + +jest.mock('../resource.repository'); + +const MockedRepo = ResourceRepository as jest.Mocked; + +const makeResource = (overrides: Partial = {}): Resource => + ({ + id: 1, + name: 'Laptop', + description: 'A great laptop', + price: 999.99, + createdAt: new Date('2024-01-01'), + updatedAt: new Date('2024-01-01'), + ...overrides, + } as Resource); + +const defaultFilters = { page: 1, limit: 20 }; + +beforeEach(() => jest.clearAllMocks()); + +describe('ResourceService.getAll', () => { + it('delegates to repository and returns paginated result', async () => { + const paginated = { data: [makeResource()], total: 1, page: 1, limit: 20, totalPages: 1 }; + MockedRepo.findAll.mockResolvedValue(paginated); + + const result = await ResourceService.getAll(defaultFilters); + + expect(MockedRepo.findAll).toHaveBeenCalledWith(defaultFilters); + expect(result).toEqual(paginated); + }); +}); + +describe('ResourceService.getById', () => { + it('returns resource when found', async () => { + const resource = makeResource(); + MockedRepo.findById.mockResolvedValue(resource); + + const result = await ResourceService.getById(1); + + expect(MockedRepo.findById).toHaveBeenCalledWith(1); + expect(result).toEqual(resource); + }); + + it('throws 404 AppError when not found', async () => { + MockedRepo.findById.mockResolvedValue(null); + + await expect(ResourceService.getById(99)).rejects.toThrow(AppError); + await expect(ResourceService.getById(99)).rejects.toMatchObject({ + statusCode: HttpStatus.NOT_FOUND, + message: 'Resource not found', + }); + }); +}); + +describe('ResourceService.create', () => { + it('creates and returns a new resource', async () => { + const dto = { name: 'Keyboard', price: 149.99 }; + const resource = makeResource({ name: 'Keyboard', price: 149.99 }); + MockedRepo.create.mockResolvedValue(resource); + + const result = await ResourceService.create(dto); + + expect(MockedRepo.create).toHaveBeenCalledWith(dto); + expect(result).toEqual(resource); + }); +}); + +describe('ResourceService.update', () => { + it('updates and returns the resource when it exists', async () => { + const existing = makeResource(); + const updated = makeResource({ price: 799.99 }); + MockedRepo.findById.mockResolvedValue(existing); + MockedRepo.update.mockResolvedValue(updated); + + const result = await ResourceService.update(1, { price: 799.99 }); + + expect(MockedRepo.update).toHaveBeenCalledWith(1, { price: 799.99 }); + expect(result.price).toBe(799.99); + }); + + it('throws 404 AppError when resource does not exist', async () => { + MockedRepo.findById.mockResolvedValue(null); + + await expect(ResourceService.update(99, { price: 100 })).rejects.toMatchObject({ + statusCode: HttpStatus.NOT_FOUND, + }); + expect(MockedRepo.update).not.toHaveBeenCalled(); + }); +}); + +describe('ResourceService.delete', () => { + it('deletes successfully when resource exists', async () => { + MockedRepo.delete.mockResolvedValue(true); + + await expect(ResourceService.delete(1)).resolves.toBeUndefined(); + expect(MockedRepo.delete).toHaveBeenCalledWith(1); + }); + + it('throws 404 AppError when resource does not exist', async () => { + MockedRepo.delete.mockResolvedValue(false); + + await expect(ResourceService.delete(99)).rejects.toMatchObject({ + statusCode: HttpStatus.NOT_FOUND, + }); + }); +}); diff --git a/src/problem5/src/modules/resource/__tests__/resource.validation.test.ts b/src/problem5/src/modules/resource/__tests__/resource.validation.test.ts new file mode 100644 index 000000000..24314a7be --- /dev/null +++ b/src/problem5/src/modules/resource/__tests__/resource.validation.test.ts @@ -0,0 +1,123 @@ +import { + createResourceSchema, + updateResourceSchema, + resourceQuerySchema, + idParamSchema, +} from '../resource.validation'; + +describe('createResourceSchema', () => { + it('accepts valid input', () => { + const result = createResourceSchema.safeParse({ + name: 'Laptop', + description: 'A great laptop', + price: 999.99, + }); + expect(result.success).toBe(true); + }); + + it('accepts input without description (optional)', () => { + const result = createResourceSchema.safeParse({ name: 'Laptop', price: 0 }); + expect(result.success).toBe(true); + }); + + it('rejects empty name', () => { + const result = createResourceSchema.safeParse({ name: '', price: 100 }); + expect(result.success).toBe(false); + }); + + it('rejects name exceeding 200 characters', () => { + const result = createResourceSchema.safeParse({ name: 'a'.repeat(201), price: 100 }); + expect(result.success).toBe(false); + }); + + it('rejects negative price', () => { + const result = createResourceSchema.safeParse({ name: 'Item', price: -1 }); + expect(result.success).toBe(false); + }); + + it('rejects missing price', () => { + const result = createResourceSchema.safeParse({ name: 'Item' }); + expect(result.success).toBe(false); + }); + + it('rejects missing name', () => { + const result = createResourceSchema.safeParse({ price: 100 }); + expect(result.success).toBe(false); + }); +}); + +describe('updateResourceSchema', () => { + it('accepts partial input', () => { + const result = updateResourceSchema.safeParse({ price: 49.99 }); + expect(result.success).toBe(true); + }); + + it('accepts empty object (no-op update)', () => { + const result = updateResourceSchema.safeParse({}); + expect(result.success).toBe(true); + }); + + it('rejects negative price', () => { + const result = updateResourceSchema.safeParse({ price: -5 }); + expect(result.success).toBe(false); + }); +}); + +describe('resourceQuerySchema', () => { + it('uses default page and limit when omitted', () => { + const result = resourceQuerySchema.safeParse({}); + expect(result.success).toBe(true); + if (result.success) { + expect(result.data.page).toBe(1); + expect(result.data.limit).toBe(20); + } + }); + + it('coerces string numbers from query string', () => { + const result = resourceQuerySchema.safeParse({ page: '2', limit: '10', minPrice: '100' }); + expect(result.success).toBe(true); + if (result.success) { + expect(result.data.page).toBe(2); + expect(result.data.limit).toBe(10); + expect(result.data.minPrice).toBe(100); + } + }); + + it('rejects limit greater than 100', () => { + const result = resourceQuerySchema.safeParse({ limit: '101' }); + expect(result.success).toBe(false); + }); + + it('rejects minPrice greater than maxPrice', () => { + const result = resourceQuerySchema.safeParse({ minPrice: '500', maxPrice: '100' }); + expect(result.success).toBe(false); + }); + + it('accepts minPrice equal to maxPrice', () => { + const result = resourceQuerySchema.safeParse({ minPrice: '100', maxPrice: '100' }); + expect(result.success).toBe(true); + }); +}); + +describe('idParamSchema', () => { + it('accepts a valid positive integer', () => { + const result = idParamSchema.safeParse({ id: '1' }); + expect(result.success).toBe(true); + if (result.success) expect(result.data.id).toBe(1); + }); + + it('rejects zero', () => { + const result = idParamSchema.safeParse({ id: '0' }); + expect(result.success).toBe(false); + }); + + it('rejects negative id', () => { + const result = idParamSchema.safeParse({ id: '-1' }); + expect(result.success).toBe(false); + }); + + it('rejects non-numeric string', () => { + const result = idParamSchema.safeParse({ id: 'abc' }); + expect(result.success).toBe(false); + }); +}); diff --git a/src/problem5/src/modules/resource/resource.controller.ts b/src/problem5/src/modules/resource/resource.controller.ts new file mode 100644 index 000000000..9ff4f7b92 --- /dev/null +++ b/src/problem5/src/modules/resource/resource.controller.ts @@ -0,0 +1,54 @@ +import { Request, Response, NextFunction } from 'express'; +import { ResourceService } from './resource.service'; +import { HttpStatus } from '../../common/constants/httpStatus'; +import { CreateResourceDto, UpdateResourceDto, ResourceFilters } from './resource.dto'; + +export const ResourceController = { + async getAll(req: Request, res: Response, next: NextFunction) { + try { + const result = await ResourceService.getAll(req.query as unknown as ResourceFilters); + res.status(HttpStatus.OK).json(result); + } catch (err) { + next(err); + } + }, + + async getById(req: Request, res: Response, next: NextFunction) { + try { + const resource = await ResourceService.getById(Number(req.params.id)); + res.status(HttpStatus.OK).json(resource); + } catch (err) { + next(err); + } + }, + + async create(req: Request, res: Response, next: NextFunction) { + try { + const resource = await ResourceService.create(req.body as CreateResourceDto); + res.status(HttpStatus.CREATED).json(resource); + } catch (err) { + next(err); + } + }, + + async update(req: Request, res: Response, next: NextFunction) { + try { + const resource = await ResourceService.update( + Number(req.params.id), + req.body as UpdateResourceDto + ); + res.status(HttpStatus.OK).json(resource); + } catch (err) { + next(err); + } + }, + + async delete(req: Request, res: Response, next: NextFunction) { + try { + await ResourceService.delete(Number(req.params.id)); + res.status(HttpStatus.NO_CONTENT).send(); + } catch (err) { + next(err); + } + }, +}; diff --git a/src/problem5/src/modules/resource/resource.dto.ts b/src/problem5/src/modules/resource/resource.dto.ts new file mode 100644 index 000000000..15ebb18a0 --- /dev/null +++ b/src/problem5/src/modules/resource/resource.dto.ts @@ -0,0 +1,27 @@ +export interface CreateResourceDto { + name: string; + description?: string | null; + price: number; +} + +export interface UpdateResourceDto { + name?: string; + description?: string | null; + price?: number; +} + +export interface ResourceFilters { + name?: string; + minPrice?: number; + maxPrice?: number; + page: number; + limit: number; +} + +export interface PaginatedResult { + data: T[]; + total: number; + page: number; + limit: number; + totalPages: number; +} diff --git a/src/problem5/src/modules/resource/resource.model.ts b/src/problem5/src/modules/resource/resource.model.ts new file mode 100644 index 000000000..2987478e9 --- /dev/null +++ b/src/problem5/src/modules/resource/resource.model.ts @@ -0,0 +1,28 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, +} from 'typeorm'; + +@Entity('resources') +export class Resource { + @PrimaryGeneratedColumn() + id!: number; + + @Column({ type: 'varchar', length: 200 }) + name!: string; + + @Column({ type: 'text', nullable: true }) + description!: string | null; + + @Column({ type: 'float' }) + price!: number; + + @CreateDateColumn() + createdAt!: Date; + + @UpdateDateColumn() + updatedAt!: Date; +} diff --git a/src/problem5/src/modules/resource/resource.repository.ts b/src/problem5/src/modules/resource/resource.repository.ts new file mode 100644 index 000000000..b1d580b5f --- /dev/null +++ b/src/problem5/src/modules/resource/resource.repository.ts @@ -0,0 +1,61 @@ +import { Like, Between, MoreThanOrEqual, LessThanOrEqual } from 'typeorm'; +import { AppDataSource } from '../../config/database'; +import { Resource } from './resource.model'; +import { + CreateResourceDto, + UpdateResourceDto, + ResourceFilters, + PaginatedResult, +} from './resource.dto'; + +const repo = () => AppDataSource.getRepository(Resource); + +export const ResourceRepository = { + async findAll(filters: ResourceFilters): Promise> { + const where: Record = {}; + + if (filters.name) where.name = Like(`%${filters.name}%`); + + if (filters.minPrice !== undefined && filters.maxPrice !== undefined) { + where.price = Between(filters.minPrice, filters.maxPrice); + } else if (filters.minPrice !== undefined) { + where.price = MoreThanOrEqual(filters.minPrice); + } else if (filters.maxPrice !== undefined) { + where.price = LessThanOrEqual(filters.maxPrice); + } + + const [data, total] = await repo().findAndCount({ + where, + order: { createdAt: 'DESC' }, + skip: (filters.page - 1) * filters.limit, + take: filters.limit, + }); + + return { + data, + total, + page: filters.page, + limit: filters.limit, + totalPages: Math.ceil(total / filters.limit), + }; + }, + + async findById(id: number): Promise { + return repo().findOneBy({ id }); + }, + + async create(dto: CreateResourceDto): Promise { + const resource = repo().create(dto); + return repo().save(resource); + }, + + async update(id: number, dto: UpdateResourceDto): Promise { + await repo().update(id, dto); + return repo().findOneBy({ id }); + }, + + async delete(id: number): Promise { + const result = await repo().delete(id); + return (result.affected ?? 0) > 0; + }, +}; diff --git a/src/problem5/src/modules/resource/resource.routes.ts b/src/problem5/src/modules/resource/resource.routes.ts new file mode 100644 index 000000000..0c1418604 --- /dev/null +++ b/src/problem5/src/modules/resource/resource.routes.ts @@ -0,0 +1,22 @@ +import { Router } from 'express'; +import { ResourceController } from './resource.controller'; +import { validate } from '../../common/middleware/validate.middleware'; +import { + createResourceSchema, + updateResourceSchema, + resourceQuerySchema, + idParamSchema, +} from './resource.validation'; + +export const resourceRouter = Router(); + +resourceRouter.get('/', validate(resourceQuerySchema, 'query'), ResourceController.getAll); +resourceRouter.post('/', validate(createResourceSchema), ResourceController.create); +resourceRouter.get('/:id', validate(idParamSchema, 'params'), ResourceController.getById); +resourceRouter.patch( + '/:id', + validate(idParamSchema, 'params'), + validate(updateResourceSchema), + ResourceController.update +); +resourceRouter.delete('/:id', validate(idParamSchema, 'params'), ResourceController.delete); diff --git a/src/problem5/src/modules/resource/resource.service.ts b/src/problem5/src/modules/resource/resource.service.ts new file mode 100644 index 000000000..b41d9279c --- /dev/null +++ b/src/problem5/src/modules/resource/resource.service.ts @@ -0,0 +1,31 @@ +import { ResourceRepository } from './resource.repository'; +import { CreateResourceDto, UpdateResourceDto, ResourceFilters } from './resource.dto'; +import { AppError } from '../../common/middleware/error.middleware'; +import { HttpStatus } from '../../common/constants/httpStatus'; + +export const ResourceService = { + async getAll(filters: ResourceFilters) { + return ResourceRepository.findAll(filters); + }, + + async getById(id: number) { + const resource = await ResourceRepository.findById(id); + if (!resource) throw new AppError(HttpStatus.NOT_FOUND, 'Resource not found'); + return resource; + }, + + async create(dto: CreateResourceDto) { + return ResourceRepository.create(dto); + }, + + async update(id: number, dto: UpdateResourceDto) { + await ResourceService.getById(id); // throws 404 if not found + const updated = await ResourceRepository.update(id, dto); + return updated!; + }, + + async delete(id: number) { + const deleted = await ResourceRepository.delete(id); + if (!deleted) throw new AppError(HttpStatus.NOT_FOUND, 'Resource not found'); + }, +}; diff --git a/src/problem5/src/modules/resource/resource.validation.ts b/src/problem5/src/modules/resource/resource.validation.ts new file mode 100644 index 000000000..43e4eb14c --- /dev/null +++ b/src/problem5/src/modules/resource/resource.validation.ts @@ -0,0 +1,30 @@ +import { z } from 'zod'; + +export const createResourceSchema = z.object({ + name: z.string().min(1).max(200), + description: z.string().max(1000).nullable().optional(), + price: z.number().nonnegative(), +}); + +export const updateResourceSchema = createResourceSchema.partial(); + +export const resourceQuerySchema = z.object({ + name: z.string().optional(), + minPrice: z.coerce.number().nonnegative().optional(), + maxPrice: z.coerce.number().nonnegative().optional(), + page: z.coerce.number().int().positive().default(1), + limit: z.coerce.number().int().positive().max(100).default(20), +}).refine( + (data) => + data.minPrice === undefined || + data.maxPrice === undefined || + data.minPrice <= data.maxPrice, + { + message: 'minPrice must be less than or equal to maxPrice', + path: ['maxPrice'], + } +); + +export const idParamSchema = z.object({ + id: z.coerce.number().int().positive(), +}); diff --git a/src/problem5/src/routes/index.ts b/src/problem5/src/routes/index.ts new file mode 100644 index 000000000..c66bf6ee9 --- /dev/null +++ b/src/problem5/src/routes/index.ts @@ -0,0 +1,6 @@ +import { Router } from 'express'; +import { resourceRouter } from '../modules/resource/resource.routes'; + +export const rootRouter = Router(); + +rootRouter.use('/resources', resourceRouter); diff --git a/src/problem5/src/server.ts b/src/problem5/src/server.ts new file mode 100644 index 000000000..520070672 --- /dev/null +++ b/src/problem5/src/server.ts @@ -0,0 +1,17 @@ +import { AppDataSource } from './config/database'; +import { createApp } from './app'; +import { env } from './config/env'; +import { logger } from './common/utils/logger'; + +AppDataSource.initialize() + .then(() => { + logger.info('Database connected'); + const app = createApp(); + app.listen(env.port, () => { + logger.info(`Server running on http://localhost:${env.port}`); + }); + }) + .catch((err) => { + logger.error('Failed to connect to database', err); + process.exit(1); + }); diff --git a/src/problem5/tsconfig.json b/src/problem5/tsconfig.json new file mode 100644 index 000000000..5bb2063bb --- /dev/null +++ b/src/problem5/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "CommonJS", + "lib": ["ES2022"], + "outDir": "dist", + "rootDir": "src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "forceConsistentCasingInFileNames": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true + }, + "include": ["src"], + "exclude": ["node_modules", "dist"] +} From 90e320b69b3ffcb403e5a116f456aabe4161168e Mon Sep 17 00:00:00 2001 From: quoccuong205 Date: Sat, 21 Mar 2026 16:24:50 +0700 Subject: [PATCH 3/3] feat(doc): Add solution for problem 6 --- src/problem6/README.md | 21 ++++++++ src/problem6/api.md | 66 ++++++++++++++++++++++++ src/problem6/databaseDesign.png | Bin 0 -> 152197 bytes src/problem6/flow.md | 87 ++++++++++++++++++++++++++++++++ src/problem6/improvements.md | 79 +++++++++++++++++++++++++++++ src/problem6/security.md | 61 ++++++++++++++++++++++ src/problem6/systemdesign.png | Bin 0 -> 133938 bytes src/problem6/websocket.md | 42 +++++++++++++++ 8 files changed, 356 insertions(+) create mode 100644 src/problem6/README.md create mode 100644 src/problem6/api.md create mode 100644 src/problem6/databaseDesign.png create mode 100644 src/problem6/flow.md create mode 100644 src/problem6/improvements.md create mode 100644 src/problem6/security.md create mode 100644 src/problem6/systemdesign.png create mode 100644 src/problem6/websocket.md diff --git a/src/problem6/README.md b/src/problem6/README.md new file mode 100644 index 000000000..e33c3660e --- /dev/null +++ b/src/problem6/README.md @@ -0,0 +1,21 @@ +# Scoreboard Module — Technical Specification + +## Overview + +This module manages a **live scoreboard** that displays the top 10 users by score. It handles: + +- Secure score updates triggered by user action completions +- Real-time scoreboard broadcasting to all connected clients +- Prevention of unauthorized or fraudulent score manipulation + +--- + +## Documents + +| File | Description | +|---|---| +| [api.md](./api.md) | REST API endpoint specifications | +| [websocket.md](./websocket.md) | WebSocket events and connection flow | +| [flow.md](./flow.md) | Execution flow diagrams | +| [security.md](./security.md) | Auth, token design, rate limiting, threat model | +| [improvements.md](./improvements.md) | Suggested enhancements for the implementation team | diff --git a/src/problem6/api.md b/src/problem6/api.md new file mode 100644 index 000000000..fd4abdfe3 --- /dev/null +++ b/src/problem6/api.md @@ -0,0 +1,66 @@ +# REST API Specification + +Base URL: `https:///api` + +--- + +## POST /actions/complete + +Called by the client when a user completes an action. Updates the user's score and triggers a live scoreboard broadcast if the top 10 changes. + +### Headers + +| Key | Value | +|---|---| +| `Authorization` | `Bearer ` | +| `Content-Type` | `application/json` | + +### Request Body + +```json +{ + "actionToken": "a1b2c3d4-one-time-token-issued-per-action" +} +``` + +> `actionToken` is a one-time token pre-issued by the server when the action began. It proves the action was server-initiated and prevents clients from fabricating score updates. The score delta is determined server-side from the action definition — the client never sends a score value. + +### Success Response — `200 OK` + +```json +{ + "userId": "uuid", + "newScore": 1250, + "scoreDelta": 10 +} +``` + +### Error Responses + +| Status | Reason | +|---|---| +| `401 Unauthorized` | Missing or invalid JWT | +| `403 Forbidden` | JWT user does not match action token owner | +| `409 Conflict` | Action token already used (replay attack detected) | +| `422 Unprocessable Entity` | Invalid or expired action token | +| `429 Too Many Requests` | Rate limit exceeded | + +--- + +## GET /scoreboard + +Returns the current top 10 scores. Used for the **initial page load** — subsequent updates are delivered via WebSocket. + +### Response — `200 OK` + +```json +{ + "scoreboard": [ + { "rank": 1, "userId": "uuid", "username": "alice", "score": 5000 }, + { "rank": 2, "userId": "uuid", "username": "bob", "score": 4800 } + ], + "updatedAt": "2024-01-01T12:00:00Z" +} +``` + +> Response is served from the Redis cache. Falls back to a direct DB query if the cache is cold. diff --git a/src/problem6/databaseDesign.png b/src/problem6/databaseDesign.png new file mode 100644 index 0000000000000000000000000000000000000000..9d030075c047a35ee436d56a9825857be219f353 GIT binary patch literal 152197 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 OkEc8AcG)%b+dl#H │ │ + ├──────────────────────────────▶│ │ + │ │ │ + │ │ 1. Verify JWT │ + │ │ extract userId │ + │ │ │ + │ │ 2. Validate actionToken │ + │ │ check not used │ + │ │ check belongs to userId │ + │ ├────────────────────────────▶ │ + │ │ SELECT action_completions │ + │ │◀──────────────────────────── │ + │ │ │ + │ │ 3. BEGIN TRANSACTION │ + │ │ Mark token as used │ + │ │ UPDATE scores │ + │ │ INSERT action_completions │ + │ │ COMMIT │ + │ ├────────────────────────────▶ │ + │ │◀──────────────────────────── │ + │ │ │ + │ │ 4. Fetch new top 10 │ + │ ├────────────────────────────▶ │ + │ │◀────── top 10 result ─────── │ + │ │ │ + │ │ 5. Update Redis cache │ + │ ├────────────────────────────▶ │ + │ │ │ + │ │ 6. If top 10 changed: │ + │ │ emit scoreboard:update │ + │ │ via WebSocket │ + │ │──────── broadcast ──────────▶ All WS clients + │ │ │ + │ 200 OK { newScore: 1250 } │ │ + │◀──────────────────────────────│ │ +``` + +--- + +## 2. Client Initial Load Flow + +When a user first opens the scoreboard page. + +``` +Client API Server Redis + │ │ │ + │ 1. GET /api/scoreboard │ │ + ├──────────────────────────────▶│ │ + │ │ Check Redis cache │ + │ ├────────────────────────────▶ │ + │ │◀────── top 10 (cache hit) ── │ + │ 200 OK { scoreboard: [...] } │ │ + │◀──────────────────────────────│ │ + │ │ │ + │ 2. Connect WebSocket │ │ + │ ws://server/scoreboard │ │ + ├──────────────────────────────▶│ │ + │ (stays open for live updates)│ │ +``` + +--- + +## 3. Error Flow — Invalid Token + +``` +Client API Server + │ │ + │ POST /api/actions/complete │ + │ { actionToken: "used-token"} │ + ├──────────────────────────────▶│ + │ │ Token found but already used + │ 409 Conflict │ + │ { "error": "Action token │ + │ already used" } │ + │◀──────────────────────────────│ +``` diff --git a/src/problem6/improvements.md b/src/problem6/improvements.md new file mode 100644 index 000000000..8a5108a2c --- /dev/null +++ b/src/problem6/improvements.md @@ -0,0 +1,79 @@ +# Suggested Improvements + +## 1. Action Token Issuance Endpoint + +The current spec only covers `POST /api/actions/complete` but does not define how action tokens are issued in the first place. A dedicated endpoint is required: + +**`POST /api/actions/start`** — called before a user begins an action. Returns a one-time `actionToken` tied to that user and action type. + +Without this, there is no secure origin for tokens, and the security model cannot work. + +--- + +## 2. WebSocket Authentication + +The current design allows anonymous WebSocket connections (the scoreboard is public). If the scoreboard ever needs to be restricted to authenticated users, add JWT-based auth on connection: + +``` +ws://server/scoreboard?token= +``` + +The server validates the token on the `connection` event and disconnects unauthorized clients. + +--- + +## 3. Optimistic Top-10 Change Detection + +After every score update, querying the full top 10 from DB is wasteful under high traffic. Optimize with: + +- Cache the **minimum score** in the current top 10 in Redis. +- After updating a user's score, only query DB and broadcast if: + - `newScore > cachedMinimumScore` (user may enter top 10), or + - The updated user was already in the top 10 (their score change affects rankings). +- All other updates can skip the DB query and broadcast entirely. + +This significantly reduces DB load and WebSocket noise at scale. + +--- + +## 4. Horizontal Scaling — WebSocket Broadcast + +When running multiple API server instances behind a load balancer, a WebSocket event emitted on instance A will not reach clients connected to instance B. + +**Solution:** Use Redis Pub/Sub as the broadcast bus: + +``` +Instance A (processes score update) + │ + └─▶ Publish to Redis channel: scoreboard:updates + │ + ├─▶ Instance A receives → forwards to its WS clients + ├─▶ Instance B receives → forwards to its WS clients + └─▶ Instance C receives → forwards to its WS clients +``` + +All instances subscribe to the `scoreboard:updates` channel on startup. The publishing instance is also a subscriber, so it broadcasts to its own clients too. + +--- + +## 5. Score History / Audit Log Endpoint + +The `action_completions` table already stores a full audit trail. Expose it via: + +``` +GET /api/users/:id/score-history +``` + +This enables transparency, dispute resolution, and anomaly investigation without needing direct DB access. + +--- + +## 6. Soft Anomaly Detection + +Rather than blocking suspicious users outright (which can cause false positives), flag patterns for manual review: + +- A user completing actions faster than humanly possible (e.g. > 1 per second sustained). +- Score spikes that are statistical outliers compared to the user's historical rate. +- The same IP submitting for multiple user accounts simultaneously. + +Flagged accounts can be queued for human review while continuing to operate normally, avoiding disruption to legitimate users. diff --git a/src/problem6/security.md b/src/problem6/security.md new file mode 100644 index 000000000..cb7262cf5 --- /dev/null +++ b/src/problem6/security.md @@ -0,0 +1,61 @@ +# Security Design + +## 1. Authentication (JWT) + +Every score update request must carry a valid JWT in the `Authorization: Bearer` header. + +The server verifies: +- Signature is valid (using the server's secret key) +- Token has not expired (`exp` claim) +- User extracted from the token exists and is active + +Requests without a valid token receive `401 Unauthorized` immediately, before any business logic runs. + +--- + +## 2. Action Token — Replay Attack Prevention + +This is the core mechanism preventing users from inflating scores fraudulently. + +### How it works + +1. When a user **starts** an action, the server issues a **one-time `actionToken`** (UUID) stored in the DB with status `pending`. +2. The client submits this token when the action is completed. +3. The server verifies: + - Token exists in the DB and is `pending` (not already used or expired) + - Token belongs to the authenticated user (cannot use someone else's token) + - Token has not passed its TTL (e.g. 5-minute expiry) +4. The token is marked `used` **atomically** inside the same DB transaction as the score update — making double-spend impossible. + +### What this prevents + +| Attack | Why it fails | +|---|---| +| Client sends a fake token | Token must pre-exist in DB — cannot be fabricated | +| Client replays a completed token | Token is single-use, marked `used` atomically | +| Client steals another user's token | JWT `userId` must match token's `user_id` | +| Client sends arbitrary score value | Score delta is looked up server-side per action — never client-provided | + +--- + +## 3. Rate Limiting + +Applied per-user on `POST /api/actions/complete`: + +- **Limit:** 10 requests per minute per user +- **Response on breach:** `429 Too Many Requests` with `Retry-After` header + +This prevents automated scripts from flooding the endpoint even if they somehow obtain valid tokens. + +--- + +## 4. Threat Model Summary + +| Threat | Mitigation | +|---|---| +| Unauthenticated score update | JWT required on every request | +| User updates another user's score | JWT `userId` must match `actionToken` owner | +| Replay the same action twice | One-time token, marked `used` in same DB transaction | +| Client sends arbitrary score value | Score delta is server-defined per action | +| Brute-force / spam | Per-user rate limiting | +| Token interception | HTTPS enforced + short token TTL | diff --git a/src/problem6/systemdesign.png b/src/problem6/systemdesign.png new file mode 100644 index 0000000000000000000000000000000000000000..6665c10ad429b5a805e8a05af5743fc03f334ff0 GIT binary patch literal 133938 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/scoreboard` + +Clients connect on page load to receive live scoreboard updates. The connection stays open for the duration of the session. + +> The scoreboard is public — no auth required to connect. See [improvements.md](./improvements.md) for how to add authentication if needed. + +--- + +## Events + +### Server → Client: `scoreboard:update` + +Emitted whenever the top 10 ranking changes. The server does **not** emit on every score update — only when the top 10 is actually affected. + +```json +{ + "event": "scoreboard:update", + "payload": { + "scoreboard": [ + { "rank": 1, "userId": "uuid", "username": "alice", "score": 5010 }, + { "rank": 2, "userId": "uuid", "username": "bob", "score": 4800 } + ], + "updatedAt": "2024-01-01T12:00:05Z" + } +} +``` + +--- + +## Client Integration Example + +```js +const socket = io('wss://server'); + +socket.on('scoreboard:update', ({ scoreboard }) => { + renderScoreboard(scoreboard); +}); +```