From b872c1905be50da35545db49ca1cb539da86d6ca Mon Sep 17 00:00:00 2001 From: sdairs Date: Mon, 5 Oct 2026 09:33:39 +0100 Subject: [PATCH] Add Astro equipment quote catalogue with typed oRPC and Postgres --- .github/workflows/quote-catalogue.yml | 25 + applications/quote-catalogue/.env.example | 9 + applications/quote-catalogue/.gitignore | 7 + applications/quote-catalogue/README.md | 174 + .../quote-catalogue/assets/quote-saved.png | Bin 0 -> 192172 bytes applications/quote-catalogue/astro.config.mjs | 10 + .../quote-catalogue/package-lock.json | 7347 +++++++++++++++++ applications/quote-catalogue/package.json | 42 + .../quote-catalogue/scripts/migrate.ts | 39 + applications/quote-catalogue/scripts/probe.ts | 19 + applications/quote-catalogue/scripts/seed.ts | 97 + .../quote-catalogue/scripts/start.mjs | 6 + .../quote-catalogue/sql/bootstrap.sql | 12 + applications/quote-catalogue/sql/grants.sql | 3 + .../src/components/QuoteBuilder.tsx | 317 + .../quote-catalogue/src/layouts/Layout.astro | 6 + .../quote-catalogue/src/lib/client.ts | 12 + .../quote-catalogue/src/lib/contract.ts | 48 + .../quote-catalogue/src/middleware.ts | 19 + .../src/pages/hire-guide.astro | 4 + .../quote-catalogue/src/pages/index.astro | 14 + .../src/pages/rpc/[...path].ts | 11 + applications/quote-catalogue/src/server/db.ts | 58 + .../quote-catalogue/src/server/quotes.ts | 117 + .../quote-catalogue/src/server/router.ts | 8 + .../quote-catalogue/src/styles/app.css | 396 + applications/quote-catalogue/tests/README.md | 7 + applications/quote-catalogue/tests/browser.ts | 115 + applications/quote-catalogue/tests/helpers.ts | 44 + .../quote-catalogue/tests/integration.ts | 156 + applications/quote-catalogue/tsconfig.json | 16 + 31 files changed, 9138 insertions(+) create mode 100644 .github/workflows/quote-catalogue.yml create mode 100644 applications/quote-catalogue/.env.example create mode 100644 applications/quote-catalogue/.gitignore create mode 100644 applications/quote-catalogue/README.md create mode 100644 applications/quote-catalogue/assets/quote-saved.png create mode 100644 applications/quote-catalogue/astro.config.mjs create mode 100644 applications/quote-catalogue/package-lock.json create mode 100644 applications/quote-catalogue/package.json create mode 100644 applications/quote-catalogue/scripts/migrate.ts create mode 100644 applications/quote-catalogue/scripts/probe.ts create mode 100644 applications/quote-catalogue/scripts/seed.ts create mode 100644 applications/quote-catalogue/scripts/start.mjs create mode 100644 applications/quote-catalogue/sql/bootstrap.sql create mode 100644 applications/quote-catalogue/sql/grants.sql create mode 100644 applications/quote-catalogue/src/components/QuoteBuilder.tsx create mode 100644 applications/quote-catalogue/src/layouts/Layout.astro create mode 100644 applications/quote-catalogue/src/lib/client.ts create mode 100644 applications/quote-catalogue/src/lib/contract.ts create mode 100644 applications/quote-catalogue/src/middleware.ts create mode 100644 applications/quote-catalogue/src/pages/hire-guide.astro create mode 100644 applications/quote-catalogue/src/pages/index.astro create mode 100644 applications/quote-catalogue/src/pages/rpc/[...path].ts create mode 100644 applications/quote-catalogue/src/server/db.ts create mode 100644 applications/quote-catalogue/src/server/quotes.ts create mode 100644 applications/quote-catalogue/src/server/router.ts create mode 100644 applications/quote-catalogue/src/styles/app.css create mode 100644 applications/quote-catalogue/tests/README.md create mode 100644 applications/quote-catalogue/tests/browser.ts create mode 100644 applications/quote-catalogue/tests/helpers.ts create mode 100644 applications/quote-catalogue/tests/integration.ts create mode 100644 applications/quote-catalogue/tsconfig.json diff --git a/.github/workflows/quote-catalogue.yml b/.github/workflows/quote-catalogue.yml new file mode 100644 index 00000000..5ba2055f --- /dev/null +++ b/.github/workflows/quote-catalogue.yml @@ -0,0 +1,25 @@ +name: Quote catalogue build +on: + pull_request: + paths: ['applications/quote-catalogue/**', '.github/workflows/quote-catalogue.yml'] + push: + branches: [main] + paths: ['applications/quote-catalogue/**', '.github/workflows/quote-catalogue.yml'] +permissions: + contents: read +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: applications/quote-catalogue + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24.21.0' + cache: npm + cache-dependency-path: applications/quote-catalogue/package-lock.json + - run: npm ci + - run: npm run check + - run: npm run build diff --git a/applications/quote-catalogue/.env.example b/applications/quote-catalogue/.env.example new file mode 100644 index 00000000..69ea8005 --- /dev/null +++ b/applications/quote-catalogue/.env.example @@ -0,0 +1,9 @@ +HOST=127.0.0.1 +PORT=4321 +APP_ORIGIN=http://127.0.0.1:4321 +DB_HOST=YOUR_DIRECT_POSTGRES_HOST +DB_PORT=5432 +DB_DATABASE=postgres +DB_USER=quote_catalogue_app +DB_PASSWORD=YOUR_RUNTIME_PASSWORD +PG_CA_CERT_PATH=/absolute/path/postgres-ca.pem diff --git a/applications/quote-catalogue/.gitignore b/applications/quote-catalogue/.gitignore new file mode 100644 index 00000000..cf85107b --- /dev/null +++ b/applications/quote-catalogue/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +dist/ +.astro/ +.deployment/ +.env +.env.* +!.env.example diff --git a/applications/quote-catalogue/README.md b/applications/quote-catalogue/README.md new file mode 100644 index 00000000..5206b1d3 --- /dev/null +++ b/applications/quote-catalogue/README.md @@ -0,0 +1,174 @@ +# Equipment quote catalogue + +Build and save a small equipment-hire quote with **Astro**, **Preact**, **daisyUI**, **oRPC**, **ArkType**, **Kysely**, and [ClickHouse Managed Postgres](https://clickhouse.com/cloud/postgres). + +Astro renders the editorial catalogue introduction and hire guide. A hydrated Preact island lets you filter eight synthetic products, choose quantities and hire days, save a quote, and recover it after a server restart. daisyUI supplies cards, controls, badges, alerts and the reload confirmation dialog. The typed oRPC contract validates actual inputs and outputs with ArkType. Kysely reads current prices and saves the header and line snapshots in one Postgres transaction. + +![A saved studio-session quote with two cinema cameras, one LED panel and a £444.00 total](assets/quote-saved.png) + +The application is a trusted local workbench, with no sign-in, payment or reservation flow. Two seeded quote headers are shared local drafts. A quote does not reserve equipment. + +## Run the example + +Use Linux, Node 24.21.0, npm 11, psql 15+, curl, jq and OpenSSL. On macOS, work in an [isolated OrbStack machine](https://docs.orbstack.dev/machines/isolated) with source copied into its own home directory. Install application dependencies in Linux, not on the host. + +```sh +git clone https://github.com/ClickHouse/examples.git +cd examples/applications/quote-catalogue +npm ci +npm run check +npm run build +``` + +Pinned versions are Astro 7.3.5, Node adapter 11.1.6, Astro Preact integration 6.0.5, Preact 10.29.8, daisyUI 5.7.47, Tailwind 4.3.3, oRPC 1.15.4, ArkType 2.2.7, Kysely 0.29.6, pg 8.23.1 and TypeScript 6.0.3. Astro's Preact integration supports Preact 10; Astro's checker supports TypeScript 5 or 6. Use the lockfile rather than upgrading those packages independently. + +### 1. Authenticate clickhousectl + +Install [clickhousectl](https://clickhouse.com/docs/concepts/features/interfaces/cli) on the machine that will manage your Cloud resources: + +```sh +curl -fsSL https://clickhouse.com/cli | sh +export PATH="$HOME/.local/bin:$PATH" +clickhousectl --version +clickhousectl cloud auth login --interactive +clickhousectl cloud auth status +clickhousectl cloud org list +umask 077 +mkdir -p .deployment +``` + +Creation requires an Admin API key. Enter credentials at the prompt. Keep Cloud API credentials outside the app and browser; in an isolated maintainer workflow, management stays on the host and only database credentials and the CA enter Linux. + +Create `.deployment/resources.env` with your organization and supported AWS region/size: + +```dotenv +CH_ORG_ID=YOUR_ORGANIZATION_UUID +DEPLOYMENT_NAME=quote-catalogue-example +CLOUD_REGION=YOUR_AVAILABLE_AWS_REGION +PG_SIZE=YOUR_AVAILABLE_POSTGRES_SIZE +``` + +The tested PostgreSQL 18.6 fixture used us-east-1, c6gd.large, Postgres 18 and no HA. Review [pricing](https://clickhouse.com/pricing) before creation. The service incurs charges until deleted; stopping the API or VM does not stop database billing. + +### 2. Create the service and retrieve its CA + +```sh +source .deployment/resources.env +clickhousectl cloud postgres create --org-id "$CH_ORG_ID" \ + --name "$DEPLOYMENT_NAME" --provider aws --region "$CLOUD_REGION" \ + --size "$PG_SIZE" --pg-version 18 --ha-type none \ + --tag project=quote-catalogue --json > .deployment/postgres-create.json +PG_SERVICE_ID="$(jq -er '.id' .deployment/postgres-create.json)" +printf 'PG_SERVICE_ID=%s\n' "$PG_SERVICE_ID" >> .deployment/resources.env +``` + +Preserve the private receipt, including its one-time administrator password. Repeat **get**, not creation, until state is running: + +```sh +clickhousectl cloud postgres get "$PG_SERVICE_ID" --org-id "$CH_ORG_ID" \ + --json > .deployment/postgres-status.json +jq '{id, state, hostname, username, postgresVersion, size}' .deployment/postgres-status.json +clickhousectl cloud postgres certs get "$PG_SERVICE_ID" --org-id "$CH_ORG_ID" \ + --output .deployment/postgres-ca.pem +``` + +If creation was interrupted, reconcile the receipt with `clickhousectl cloud postgres list --org-id "$CH_ORG_ID" --json` before creating anything else. + +### 3. Bootstrap roles, migrate and seed + +Continue inside Linux with the private database receipt and CA available. Generate passwords once and preserve this file on retries: + +```sh +cat > .deployment/passwords.env < .deployment/owner.env < .deployment/app.env +chmod 600 .deployment/*.env +unset PG_OWNER_PASSWORD PG_APP_PASSWORD +set -a +source .deployment/app.env +set +a +npm start +``` + +Open `http://127.0.0.1:4321` in Linux, or tunnel the VM's loopback port using the same configured host and origin. The start script permits only a loopback listener. Requests must use the configured Host; RPC requests require the same Origin and the client's custom header. No database credentials enter the browser. The database pool uses separate fields, the Cloud CA and verified TLS, with at most five connections per process. + +## Try a quote + +1. Add **Cinema camera**, then increase its quantity to 2. +2. Add **LED panel** and select 3 hire days. The estimate is **£444.00**. +3. Click **Save quote**. The server calculates the saved total from current Postgres prices. Reload to recover quantities, duration, revision and rate snapshots. +4. Filter the catalogue to **Audio**. Filtering leaves the quote intact. +5. Open the same quote in another tab, then save a change in the first. Saving edits from the older tab shows a conflict and keeps those edits visible. Reloading asks before discarding them. +6. Open **Hire guide** to read Astro-rendered planning notes. `/?quote=2` opens the second seeded quote. + +All prices are integer GBP pennies. Estimates use the catalogue loaded with the page. Each save reprices the full quote from current server prices and captures unit-price snapshots. Later price changes do not rewrite an already-saved quote. There are no taxes, discounts, delivery charges or payment promises. + +[contract.ts](src/lib/contract.ts) declares the input/output schemas. Quantities must be whole numbers 1–20, duration 1–14 days, and a save must include 1–10 unique known products. Client prices/totals are undeclared keys and rejected. [quotes.ts](src/server/quotes.ts) locks the quote header, checks its revision, reads prices, replaces lines and increments the revision atomically. Invalid products and duplicate lines fail before writes. A failed insert restores both old lines and the old header. Shared read locks keep returned lines and revision coherent. + +Runtime can read the catalogue/quotes, replace quote lines, and update only duration/revision/timestamp on headers. It cannot change prices, delete headers or create schema objects. The separate owner runs migrations and fixture tests. + +## Verify and clean up + +```sh +npm run check +npm run build +npx playwright install --with-deps chromium +``` + +For live tests, stop the running app and use a dedicated example database. Copy app.env to a private test.env and add `TEST_OWNER_PASSWORD` with this schema owner's password. The tests create their own quotes/products and delete them afterward; the integration test briefly adds a fixture-specific constraint in this dedicated schema. + +```sh +node --env-file=.deployment/test.env --import tsx tests/integration.ts +node --env-file=.deployment/test.env --import tsx tests/browser.ts +node --env-file=.deployment/app.env --import tsx scripts/probe.ts +node --env-file=.deployment/app.env --import tsx scripts/probe.ts --wrong-host +``` + +The integration test uses the actual typed oRPC HTTP client, invalid inputs, price tampering, competing revisions, a genuine server restart, snapshot/repricing behavior, atomic failure and restricted grants. Chromium exercises the real Preact island and daisyUI controls. The last probe is a deliberate failure, connecting to the same service IP with a wrong TLS name. A wrong-CA control points `PG_CA_CERT_PATH` to an unrelated test CA. Keep negative results separate from passing controls. + +Stop the app with Ctrl-C. Verify the private receipt's ID, then delete only a service created exclusively for this example: + +```sh +source .deployment/resources.env +clickhousectl cloud postgres get "$PG_SERVICE_ID" --org-id "$CH_ORG_ID" --json +clickhousectl cloud postgres delete "$PG_SERVICE_ID" --org-id "$CH_ORG_ID" +clickhousectl cloud postgres list --org-id "$CH_ORG_ID" --json +``` + +Deletion removes the service and its data. Confirm its ID is absent, then remove unneeded credential files. Keep source and any evidence you need. The small eight-item catalogue is a teaching example, not a scale benchmark. diff --git a/applications/quote-catalogue/assets/quote-saved.png b/applications/quote-catalogue/assets/quote-saved.png new file mode 100644 index 0000000000000000000000000000000000000000..27127ce7fad7c791baa30f6c11bd2b118937c17e GIT binary patch literal 192172 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

98$_h`er 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

#qmhFB(gH{m8jF^ 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.0.0" + } + }, + "node_modules/@ark/schema": { + "version": "0.56.6", + "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.56.6.tgz", + "integrity": "sha512-OmLv80BCF2ib+zjecrXDosip/CSnZSYBGjblhqWYZWFOzdLQka6QymHToE9u7Z/HZW2KA8Hwc8MCNXoI3uGSIA==", + "license": "MIT", + "dependencies": { + "@ark/util": "0.56.6" + } + }, + "node_modules/@ark/util": { + "version": "0.56.6", + "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.56.6.tgz", + "integrity": "sha512-mHqq0f0HyDd9YadpFl25w0QECAP7d8HGIUpEC85duD+L+xr4i/CwfOid/Z7zJFFF/47oLt6+pZB9RbqWpBYTYg==", + "license": "MIT" + }, + "node_modules/@astrojs/astro2tsx": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@astrojs/astro2tsx/-/astro2tsx-0.1.2.tgz", + "integrity": "sha512-Uj/M9zbrhu5cIZEvWAGTbQJRKSxXWJ/E59BZwt7F+chrKhbfttW+9rkS/l+1QxoJP1KU3UnpM62M7yszfAI0WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emnapi/core": "1.11.3", + "@napi-rs/wasm-runtime": "1.2.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/check": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.10.tgz", + "integrity": "sha512-zgx/UQMozdjOa3bOxjgeCFdtpE3c9rRX6xHwa+2QXvy8z8Akifu2AtubHyv/zzC2znO8dl8fFWL4K+Ba9kS8HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/language-server": "^2.16.7", + "chokidar": "^4.0.3", + "kleur": "^4.1.5", + "yargs": "^18.0.0" + }, + "bin": { + "astro-check": "bin/astro-check.js" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/@astrojs/compiler-binding": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.5.1.tgz", + "integrity": "sha512-oczyolLUl9mNrtuBuNjuvn5thpHrFLXAHAWGTRg0JDHQ8cGVsVeFekOu2uSoQGgainJIi+A3/9m0DyYwz3Nlnw==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@astrojs/compiler-binding-android-arm64": "0.5.1", + "@astrojs/compiler-binding-darwin-arm64": "0.5.1", + "@astrojs/compiler-binding-darwin-x64": "0.5.1", + "@astrojs/compiler-binding-linux-arm64-gnu": "0.5.1", + "@astrojs/compiler-binding-linux-arm64-musl": "0.5.1", + "@astrojs/compiler-binding-linux-x64-gnu": "0.5.1", + "@astrojs/compiler-binding-linux-x64-musl": "0.5.1", + "@astrojs/compiler-binding-wasm32-wasi": "0.5.1", + "@astrojs/compiler-binding-win32-arm64-msvc": "0.5.1", + "@astrojs/compiler-binding-win32-x64-msvc": "0.5.1" + } + }, + "node_modules/@astrojs/compiler-binding-android-arm64": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-android-arm64/-/compiler-binding-android-arm64-0.5.1.tgz", + "integrity": "sha512-nMb2nMIJtcWLNH+fV75Enmi+jp4tIOYOfsv4XtpgdOWkqc9P4uSSdK5u1xb340AzrXo5V18SxLl/nc3vcqtamQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-darwin-arm64": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.5.1.tgz", + "integrity": "sha512-5k4+nZ/WRt+dcVow4z7rBuI7iv9A58h/uQ91YJe1PrTivbcCkq3u2Ynx/AZJwII4CsZawBCeGpojkFjutZBhBQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-darwin-x64": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.5.1.tgz", + "integrity": "sha512-0Buw+YST9Ff2EqQyhRMQujuFq/dijLw3zXWhsvI0dJ2pGrT38iVoxTEca2eBX/PfhlwkVWSRJEKO5gMqKHyeHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-arm64-gnu": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.5.1.tgz", + "integrity": "sha512-x5LRpyCoMKuu3INr18cn42YhwSOaRpp9b5Ny3eJJ/sWVeejC16Zeshu1JlvlSmEZACLeWxU5JM0RX6T6nI+YyA==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-arm64-musl": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.5.1.tgz", + "integrity": "sha512-mL7tQEuDk3rGfaKmrO63nw6WBy1TPVioQGmVyjcAr+C+a/k3SVMYBytNSMqH9mZPT/Swj30JaZ2N842Z1NnOEQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-x64-gnu": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.5.1.tgz", + "integrity": "sha512-uLGc9jtxwiDe4cQyhNPQim4ECiB/YzbWlXssfLAv8r374kArfTwBHjwR2+j+XVyF71yCx5mF9YNRclRqdNBgeg==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-x64-musl": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.5.1.tgz", + "integrity": "sha512-G0cywinaQUc8v1MrytvYKUX7svTDMmYtOCZfxjwKPbJi59zIqM+Ll0rWgO0GQWLZH3XoPYo19ZwlP3Xt9ep9YA==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-wasm32-wasi": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.5.1.tgz", + "integrity": "sha512-yMhLL8asmLydoAdnEZxAw6eLfNDs3YJl6jqn0pjPt6zrb2U5qIDLnii4/twThpIFODKkQ6YDpBRTOz/vSfZCxw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.3", + "@emnapi/runtime": "1.11.3", + "@napi-rs/wasm-runtime": "^1.2.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-win32-arm64-msvc": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.5.1.tgz", + "integrity": "sha512-aClIG6poFt3Wf/bZykrEAX2nAnKvBHW6RXiKUa69QjBtWH0/FOlOAjnFcxRNlhej2AMWNYFx0o+LGjwMcH8P7Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-win32-x64-msvc": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.5.1.tgz", + "integrity": "sha512-/E6uBCagY70YpWqssBC+/FuniNSloeQPRgj7l3LDWiqjxIyTLnIgX1sTt18FU7jrigetpSnC9cHAM6b6IxSgPw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-rs": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.5.1.tgz", + "integrity": "sha512-1k1acnX7DepIiea9U9/Y+d1hdAFfylu1ZQQkkYgRSwBOBAsXInolyZuh/2tax+83vu/A+hOYP6P3+265RvMTvw==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler-binding": "0.5.1" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.11.0.tgz", + "integrity": "sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.3.0", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/language-server": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.17.1.tgz", + "integrity": "sha512-gG7bvMVNIXgoSe1pM9dI1HsSDLU1EIc/dSAYQ0DuReLyLkOBjsiqvaRYgQltWaldLxh0bNEqjgreLfjd9OnUxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/astro2tsx": "^0.1.0", + "@astrojs/yaml2ts": "^0.2.4", + "@volar/kit": "~2.4.28", + "@volar/language-core": "~2.4.28", + "@volar/language-server": "~2.4.28", + "@volar/language-service": "~2.4.28", + "muggle-string": "^0.4.1", + "tinyglobby": "^0.2.17", + "volar-service-css": "0.0.71", + "volar-service-emmet": "0.0.71", + "volar-service-html": "0.0.71", + "volar-service-prettier": "0.0.71", + "volar-service-typescript": "0.0.71", + "volar-service-typescript-twoslash-queries": "0.0.71", + "volar-service-yaml": "0.0.71", + "vscode-html-languageservice": "^5.6.2", + "vscode-uri": "^3.2.0" + }, + "bin": { + "astro-ls": "bin/nodeServer.js" + }, + "peerDependencies": { + "prettier": "^3.0.0", + "prettier-plugin-astro": ">=0.11.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + } + } + }, + "node_modules/@astrojs/markdown-satteri": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.4.2.tgz", + "integrity": "sha512-g4QehXnB/MzxQWnSf17NciFInMqEJy9948p8cc7zGg/r7995m0Ln5PMr3Xlnj24iey1LchaoZ3SzTOa3D4P/3w==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "satteri": "^0.10.3" + } + }, + "node_modules/@astrojs/node": { + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-11.1.6.tgz", + "integrity": "sha512-jNZ10/vAT+HuXkX0E/tITsIYCSn3BmAvsooVAN1OjagG+FEzelpUWToy1bA3x6Irmu0VaknWRfReY+1twd35sQ==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "send": "^1.2.1", + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "^7.2.1" + } + }, + "node_modules/@astrojs/preact": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@astrojs/preact/-/preact-6.0.5.tgz", + "integrity": "sha512-ONNVrPUM3PxEGJ0Z1MseRRXn0MCirTxEzH84ZUphD8WoR2WOvgHAf4C/0RVc4dmJigytHG3UFg+hsZd/oFz03w==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@preact/preset-vite": "^2.10.5", + "@preact/signals": "^2.8.2", + "devalue": "^5.8.1", + "preact-render-to-string": "^6.6.6", + "vite": "^8.0.13" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "preact": "^10.6.5" + } + }, + "node_modules/@astrojs/prism": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz", + "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.3.tgz", + "integrity": "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.4.0", + "dset": "^3.1.4", + "is-docker": "^4.0.0", + "package-manager-detector": "^1.6.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.4.tgz", + "integrity": "sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "^2.8.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@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/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@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-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", + "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz", + "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz", + "integrity": "sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bruits/satteri-darwin-arm64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz", + "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@bruits/satteri-darwin-x64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz", + "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@bruits/satteri-linux-arm64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz", + "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-arm64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz", + "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-x64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz", + "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-x64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz", + "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-wasm32-wasi": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz", + "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-win32-arm64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz", + "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@bruits/satteri-win32-x64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz", + "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@capsizecss/unpack": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.1.tgz", + "integrity": "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@clack/core": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.5.1.tgz", + "integrity": "sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@clack/prompts": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.8.1.tgz", + "integrity": "sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.5.1", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", + "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", + "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-parser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.1.tgz", + "integrity": "sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/stream-reader": "^2.2.0", + "@emmetio/stream-reader-utils": "^0.1.0" + } + }, + "node_modules/@emmetio/html-matcher": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", + "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@emmetio/scanner": "^1.0.0" + } + }, + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", + "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", + "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@emnapi/wasi-threads": "1.2.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "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==", + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "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==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz", + "integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" + } + }, + "node_modules/@orpc/client": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/client/-/client-1.15.4.tgz", + "integrity": "sha512-8Iv2K8Rj8hf6xHCTxmQ+gxgiY6EATDossQk4gdt3oSbGVV0x2RSeLtRK9Zry+KVsmOqPJfnLahfRp7H2rQ/Vgg==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4", + "@orpc/standard-server-fetch": "1.15.4", + "@orpc/standard-server-peer": "1.15.4" + } + }, + "node_modules/@orpc/contract": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/contract/-/contract-1.15.4.tgz", + "integrity": "sha512-mxH+kuIsKz7BGsoqDHShnMjKG7GvCMGpvxTtJnkpbowIp2iBz8XiWosiWBybZcUl1Dy9W77TyOk6pNqG5I4D6w==", + "license": "MIT", + "dependencies": { + "@orpc/client": "1.15.4", + "@orpc/shared": "1.15.4", + "@standard-schema/spec": "^1.1.0", + "openapi-types": "^12.1.3" + } + }, + "node_modules/@orpc/interop": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/interop/-/interop-1.15.4.tgz", + "integrity": "sha512-ZCTNPenr1clZ2RBCJxsCsvS3eS8MJIDSx/LH1AIAKj9RjvfOXI/BnjHmgD4jUEIa6FcG+c2LV/1IXVJpC6NoTw==", + "license": "MIT" + }, + "node_modules/@orpc/server": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/server/-/server-1.15.4.tgz", + "integrity": "sha512-Ccs2Pdwql2XRtk7bzkiZohoYuUVNcffydbswhz75rdepCQt0HmKosfVhsqjAqCKDDB7c84ct7Q7c5Z/xQak7pQ==", + "license": "MIT", + "dependencies": { + "@orpc/client": "1.15.4", + "@orpc/contract": "1.15.4", + "@orpc/interop": "1.15.4", + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4", + "@orpc/standard-server-aws-lambda": "1.15.4", + "@orpc/standard-server-fastify": "1.15.4", + "@orpc/standard-server-fetch": "1.15.4", + "@orpc/standard-server-node": "1.15.4", + "@orpc/standard-server-peer": "1.15.4", + "cookie": "^1.1.1" + }, + "peerDependencies": { + "crossws": ">=0.3.4", + "ws": ">=8.18.1" + }, + "peerDependenciesMeta": { + "crossws": { + "optional": true + }, + "ws": { + "optional": true + } + } + }, + "node_modules/@orpc/shared": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/shared/-/shared-1.15.4.tgz", + "integrity": "sha512-syNylxXmv1WnroSDUvtYjuvu0YMAYzkLTjFPa0CggnaF3DH2YmAnRS5GGGzSPRAbhMtRAXArIoM7GVrRNKHxng==", + "license": "MIT", + "dependencies": { + "radash": "^12.1.1", + "type-fest": "^5.4.4" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + } + } + }, + "node_modules/@orpc/standard-server": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/standard-server/-/standard-server-1.15.4.tgz", + "integrity": "sha512-woaFpUJavYPiqRQ0Eh716jOHRZ7o84mPpmEPS79bBUJNDilGEj2OBSjbHV2ez4FYdVnEnlbg+rYy7sX3PwwENA==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4" + } + }, + "node_modules/@orpc/standard-server-aws-lambda": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/standard-server-aws-lambda/-/standard-server-aws-lambda-1.15.4.tgz", + "integrity": "sha512-Vq5nNhq/XSM3DPsI1MLEbMraP+++hb0btsS8IfdAj5eXTYvDzpTA5rZ+gMhhgnVuZvZcQbmBojTgtu41X8t4sA==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4", + "@orpc/standard-server-fetch": "1.15.4", + "@orpc/standard-server-node": "1.15.4" + } + }, + "node_modules/@orpc/standard-server-fastify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/standard-server-fastify/-/standard-server-fastify-1.15.4.tgz", + "integrity": "sha512-OkBWAUQhtssTrfaV3FF8X/gdJL7otS1MvfTBuxKoRKpf6u7CQB9QpdY76OSg407N/hvN8wzSW2lSbhlKljOxkQ==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4", + "@orpc/standard-server-node": "1.15.4" + }, + "peerDependencies": { + "fastify": ">=5.6.1" + }, + "peerDependenciesMeta": { + "fastify": { + "optional": true + } + } + }, + "node_modules/@orpc/standard-server-fetch": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/standard-server-fetch/-/standard-server-fetch-1.15.4.tgz", + "integrity": "sha512-u6zQDx/tUgNUWDQstJMbWkCKsecp9j+4WHWoPmNNuk2PyRdD6FEmvJJs23CAKa5njKu2V8aMzuuL9AW3jechuw==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4" + } + }, + "node_modules/@orpc/standard-server-node": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/standard-server-node/-/standard-server-node-1.15.4.tgz", + "integrity": "sha512-is6T03n1y6nx+g9ve0ip+F1BXbnR104r3NEGVUcGmkuLCqtxqbXCCjyzJTXWwGArTdEcxDOT4cW/zx/EORGN0g==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4", + "@orpc/standard-server-fetch": "1.15.4" + } + }, + "node_modules/@orpc/standard-server-peer": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@orpc/standard-server-peer/-/standard-server-peer-1.15.4.tgz", + "integrity": "sha512-qWH7gf+8Iv2oXVIQZIQIvAyk2LYUHcj0CXF+AKF5WzHU22vJInD4FKbl8+UesVU+nT8O+BrVmOXzrQ40TqngpQ==", + "license": "MIT", + "dependencies": { + "@orpc/shared": "1.15.4", + "@orpc/standard-server": "1.15.4" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@oxc-project/types": { + "version": "0.152.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz", + "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@playwright/test": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz", + "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@preact/preset-vite": { + "version": "2.10.6", + "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.10.6.tgz", + "integrity": "sha512-ZZ5RIT2ZVXg8UxRA8VZpoT8CdpDG7RFIqOT4bELqNBp85+HKvQBbgmh3gsoW1UOQXx26TLe+ZRNKI7q281Kckw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@prefresh/vite": "^2.4.11", + "@rollup/pluginutils": "^5.0.0", + "babel-plugin-transform-hook-names": "^1.0.2", + "debug": "^4.4.3", + "magic-string": "^0.30.21", + "picocolors": "^1.1.1", + "vite-prerender-plugin": "^0.5.8", + "zimmerframe": "^1.1.4" + }, + "peerDependencies": { + "@babel/core": "7.x", + "vite": "2.x || 3.x || 4.x || 5.x || 6.x || 7.x || 8.x" + } + }, + "node_modules/@preact/signals": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/@preact/signals/-/signals-2.11.3.tgz", + "integrity": "sha512-mttwFM98G/JiriTgMwU+UWygL6sfVmYEiNcPSKkUnv4PxPpZhmP2ugGC4qi360+ZIHyQ8NY05bfJT3b4RUIGlw==", + "license": "MIT", + "dependencies": { + "@preact/signals-core": "^1.14.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact": ">= 10.25.0 || >=11.0.0-0" + } + }, + "node_modules/@preact/signals-core": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.14.4.tgz", + "integrity": "sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/@prefresh/babel-plugin": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.5.4.tgz", + "integrity": "sha512-GSwqHGVem7AjnOKAkmLNbAExqZZFddf9S3ySOwowGEsJR8vwNKJ7Z/262fov5wra8LkDVSmFw3CjMGRdLoCmRA==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@prefresh/core": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.5.11.tgz", + "integrity": "sha512-Ml00PP8jeHaADxfQqxUs4+M5JS+T5J26UnvPVfsrmlpGw2I3e9XtM0DMeuzkmvg+Tn7VdHSMpLBrDPG0iHoDqQ==", + "license": "MIT", + "peerDependencies": { + "preact": "^10.0.0 || ^11.0.0-0" + } + }, + "node_modules/@prefresh/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==", + "license": "MIT" + }, + "node_modules/@prefresh/vite": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.4.12.tgz", + "integrity": "sha512-FY1fzXpUjiuosznMV0YM7XAOPZjB5FIdWS0W24+XnlxYkt9hNAwwsiKYn+cuTEoMtD/ZVazS5QVssBr9YhpCQA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.22.1", + "@prefresh/babel-plugin": "^0.5.2", + "@prefresh/core": "^1.5.0", + "@prefresh/utils": "^1.2.0", + "@rollup/pluginutils": "^4.2.1" + }, + "peerDependencies": { + "preact": "^10.4.0 || ^11.0.0-0", + "vite": ">=2.0.0" + } + }, + "node_modules/@prefresh/vite/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@prefresh/vite/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz", + "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz", + "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz", + "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz", + "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz", + "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz", + "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz", + "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz", + "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz", + "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz", + "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz", + "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz", + "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz", + "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz", + "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz", + "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", + "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@shikijs/core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.5.0.tgz", + "integrity": "sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==", + "license": "MIT", + "dependencies": { + "@shikijs/primitive": "4.5.0", + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.5.0.tgz", + "integrity": "sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.5.0.tgz", + "integrity": "sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.5.0.tgz", + "integrity": "sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.5.0.tgz", + "integrity": "sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.5.0.tgz", + "integrity": "sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.5.0.tgz", + "integrity": "sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", + "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.24.1", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", + "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-freebsd-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-musl": "4.3.3", + "@tailwindcss/oxide-wasm32-wasi": "4.3.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", + "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", + "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", + "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", + "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", + "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", + "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", + "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", + "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", + "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", + "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", + "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", + "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.3", + "@tailwindcss/oxide": "4.3.3", + "tailwindcss": "4.3.3" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.4.tgz", + "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "24.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz", + "integrity": "sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": ">=7.24.0 <7.24.7" + } + }, + "node_modules/@types/pg": { + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.23.1.tgz", + "integrity": "sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.4.0.tgz", + "integrity": "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==", + "license": "ISC" + }, + "node_modules/@volar/kit": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.28.tgz", + "integrity": "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.28" + } + }, + "node_modules/@volar/language-server": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.28.tgz", + "integrity": "sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/language-service": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.28.tgz", + "integrity": "sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz", + "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-i18n": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ajv-i18n/-/ajv-i18n-4.2.0.tgz", + "integrity": "sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.0.0-beta.0" + } + }, + "node_modules/am-i-vibing": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/am-i-vibing/-/am-i-vibing-0.4.0.tgz", + "integrity": "sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==", + "license": "MIT", + "dependencies": { + "process-ancestry": "^0.1.0" + }, + "bin": { + "am-i-vibing": "dist/cli.mjs" + } + }, + "node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arkregex": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/arkregex/-/arkregex-0.0.12.tgz", + "integrity": "sha512-sOxL0eX50pnRYO4OyajKZChGuuj/iHwC5tysiAaGOPBu+zJwJQckWn7/DRH2++ol5uaKpyRn7N0hKT7nDqGmgg==", + "license": "MIT", + "dependencies": { + "@ark/util": "0.56.6" + } + }, + "node_modules/arktype": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.2.7.tgz", + "integrity": "sha512-AbgM5SQvwCTURSR+ENfPtOG7cL5VZ0hqOVtoWyXKw2SviFddZhCBEUAjjVJYKCNFlPPR1VX5LGUKxsSqqc4Kdw==", + "license": "MIT", + "dependencies": { + "@ark/schema": "0.56.6", + "@ark/util": "0.56.6", + "arkregex": "0.0.12" + } + }, + "node_modules/astro": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/astro/-/astro-7.3.5.tgz", + "integrity": "sha512-1p/ernaq/RuESbM5NMjWzbO6SiebMGrGcYlGjMfBhzzgM+n/X7AUmVyw8BqW2QYCdivpsHwJBcD1fqmlTZjZHg==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler-rs": "^0.5.0", + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.2", + "@astrojs/telemetry": "3.3.3", + "@capsizecss/unpack": "^4.0.0", + "@clack/prompts": "^1.1.0", + "@oslojs/encoding": "^1.1.0", + "am-i-vibing": "^0.4.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "ci-info": "^4.4.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^2.0.0", + "cookie": "^2.0.1", + "devalue": "^5.8.1", + "diff": "^9.0.0", + "dset": "^3.1.4", + "es-module-lexer": "^2.0.0", + "esbuild": "^0.28.0", + "find-proc": "0.2.0", + "flattie": "^1.1.1", + "fontace": "~0.4.1", + "get-tsconfig": "5.0.0-beta.4", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "js-yaml": "^4.3.2", + "jsonc-parser": "^3.3.1", + "magic-string": "^1.0.0", + "magicast": "^0.5.2", + "mrmime": "^2.0.1", + "neotraverse": "^1.0.1", + "obug": "^3.0.0", + "p-limit": "^7.3.0", + "p-queue": "^9.1.0", + "package-manager-detector": "^1.6.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.4", + "shiki": "^4.0.2", + "smol-toml": "^1.8.0", + "svgo": "^4.1.0", + "tinyclip": "^1.0.1", + "tinyexec": "^1.0.4", + "tinyglobby": "^0.2.15", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.5", + "unstorage": "^1.17.5", + "verkit": "^0.4.0", + "vite": "^8.0.13", + "vitefu": "^1.1.2", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^22.0.0", + "zod": "^4.5.4" + }, + "bin": { + "astro": "bin/astro.mjs" + }, + "engines": { + "node": ">=22.12.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.35.4" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.3.0" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, + "node_modules/astro/node_modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==", + "license": "MIT", + "engines": { + "node": ">=22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/astro/node_modules/magic-string": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.3.tgz", + "integrity": "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.6.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-transform-hook-names": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", + "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.12.10" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.27.tgz", + "integrity": "sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.29.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.3.tgz", + "integrity": "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==", + "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.11.26", + "caniuse-lite": "^1.0.30001813", + "electron-to-chromium": "^1.5.439", + "node-releases": "^2.0.57", + "update-browserslist-db": "^1.3.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001814", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001814.tgz", + "integrity": "sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==", + "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/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/common-ancestor-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz", + "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">= 18" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", + "license": "MIT" + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/daisyui": { + "version": "5.7.47", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.7.47.tgz", + "integrity": "sha512-NOl4vPifelRqB3CMzoU751zc44KCDD9HdHMTTqQ30uiYVpIyK7+s94/ySDWgYqjdl1tQCaCrgGBx4KCizm+a3Q==", + "license": "MIT", + "funding": { + "url": "https://github.com/saadeghi/daisyui?sponsor=1" + } + }, + "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/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "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/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "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/devalue": { + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.4.tgz", + "integrity": "sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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.444", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.444.tgz", + "integrity": "sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==", + "license": "ISC" + }, + "node_modules/emmet": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", + "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], + "dependencies": { + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "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/enhanced-resolve": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz", + "integrity": "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "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/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "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/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-uri": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "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", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/find-proc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.2.0.tgz", + "integrity": "sha512-a6h2nTrgB3g5Wrn4au9Ux4kMk7IJtyF6oA8uGn+mk3weLZssUtc1cp6meHIzzuW2o1srrBAxzkmXLbqjRkgB6w==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz", + "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.2" + } + }, + "node_modules/fontkitten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz", + "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", + "license": "MIT", + "dependencies": { + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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==", + "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==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz", + "integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "5.0.0-beta.4", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz", + "integrity": "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "engines": { + "node": ">=20.20.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "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==", + "license": "ISC" + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.3.0.tgz", + "integrity": "sha512-M5t5LlJpS1UHMjvwRQVdFHvPISGeLAxNcrWuJkeGh0KxsqCHZ1O3NXZU/8x7cD0BDcGW8kapxMKTvwlqrNkHkA==", + "license": "BSD-2-Clause" + }, + "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/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/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-docker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", + "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "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==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "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==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, + "node_modules/kysely": { + "version": "0.29.6", + "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.29.6.tgz", + "integrity": "sha512-hHaB8C/rfzDDtr/t8YZwxAuPJTT0zHyaPoVzcXwDYhYNAgH/4sIfVhi/XLLIY+bL/FqaIJnjATDbi8ObSELmxg==", + "license": "MIT", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.5.tgz", + "integrity": "sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "source-map-js": "^1.2.1" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.3.tgz", + "integrity": "sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-1.0.1.tgz", + "integrity": "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "node_modules/node-html-parser/node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/node-html-parser/node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/node-mock-http": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.5.tgz", + "integrity": "sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.57", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.57.tgz", + "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/obug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz", + "integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz", + "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==", + "license": "MIT" + }, + "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/oniguruma-parser": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", + "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", + "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.3.tgz", + "integrity": "sha512-SKgVvDU5TNIxQ4r30U75BNLC6a+6GOEjngrk/ysM5+Zu3oJuk1SC5ApzIzY/7PjCEjoVPMWJ0zho/4QUiEB7TQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.3.tgz", + "integrity": "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.4", + "p-timeout": "^7.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.2.tgz", + "integrity": "sha512-prbX4Z3YszrFNgH+MW5Zoeq3baXrMtP/MQnFeET90UB/GtGcGDQ5Usg9OCy6ETjTTntOw1SL2z9fMPUppN3Guw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.9.0.tgz", + "integrity": "sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==", + "license": "MIT" + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg": { + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.23.1.tgz", + "integrity": "sha512-aL96AHANtWjPLDOLqnhx+ngp9+UK7ETEU8VJrDCGvsSSi/mGLcWYsS6Herg7lmaBJe4uwrfqsa7gTEFaSizDoQ==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.14.1", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.16.1", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.4.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.1.tgz", + "integrity": "sha512-6PQbsFWZcp9EmJEwy5cGQ2La+AMWpP46lgbb8X+U/XsHIUweYDNCpeuKck5RxL2MdVFi7krbbEi5nX4Zh7JhrQ==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.1.tgz", + "integrity": "sha512-qR3kGNPBLpCNtz0evbKA0Y/MRFXwSSdT+pTJvYp/bXTcReZbvX1kzF0IyTc1QnxqF7AZbOeBhNL8R5mYQZV/MA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.16.1.tgz", + "integrity": "sha512-p9VOFMiHB/ZbJATetbg+99PxssTVSQRnyuPSQ67mN1+1KBOjZaZ83ZQzltnxPhJwSsC3nwVjJ10DVJlerbFzLg==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", + "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", + "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preact": { + "version": "10.29.8", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.8.tgz", + "integrity": "sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact-render-to-string": ">=5" + }, + "peerDependenciesMeta": { + "preact-render-to-string": { + "optional": true + } + } + }, + "node_modules/preact-render-to-string": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.8.0.tgz", + "integrity": "sha512-2qiMrReQz+MZ5+/bT27kbVnFE7QNCC2fku/Tnc2H5bFUS3I3ASbRy0q72XLZ+2p2KyDE5xMfvSEtkmVo6TRNyA==", + "license": "MIT", + "peerDependencies": { + "preact": ">=10 || >= 11.0.0-0" + } + }, + "node_modules/prettier": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.9.tgz", + "integrity": "sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-ancestry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/process-ancestry/-/process-ancestry-0.1.0.tgz", + "integrity": "sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/property-information": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radash": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/radash/-/radash-12.1.1.tgz", + "integrity": "sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==", + "license": "MIT", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/request-light": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rolldown": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz", + "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.152.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm-eabi": "1.2.12", + "@rolldown/binding-android-arm64": "1.2.12", + "@rolldown/binding-darwin-arm64": "1.2.12", + "@rolldown/binding-darwin-x64": "1.2.12", + "@rolldown/binding-freebsd-x64": "1.2.12", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", + "@rolldown/binding-linux-arm64-gnu": "1.2.12", + "@rolldown/binding-linux-arm64-musl": "1.2.12", + "@rolldown/binding-linux-ppc64-gnu": "1.2.12", + "@rolldown/binding-linux-s390x-gnu": "1.2.12", + "@rolldown/binding-linux-x64-gnu": "1.2.12", + "@rolldown/binding-linux-x64-musl": "1.2.12", + "@rolldown/binding-openharmony-arm64": "1.2.12", + "@rolldown/binding-win32-arm64-msvc": "1.2.12", + "@rolldown/binding-win32-x64-msvc": "1.2.12" + } + }, + "node_modules/satteri": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz", + "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.5", + "@types/hast": "^3.0.5", + "@types/mdast": "^4.0.4", + "@types/unist": "^3.0.3" + }, + "optionalDependencies": { + "@bruits/satteri-darwin-arm64": "0.10.5", + "@bruits/satteri-darwin-x64": "0.10.5", + "@bruits/satteri-linux-arm64-gnu": "0.10.5", + "@bruits/satteri-linux-arm64-musl": "0.10.5", + "@bruits/satteri-linux-x64-gnu": "0.10.5", + "@bruits/satteri-linux-x64-musl": "0.10.5", + "@bruits/satteri-wasm32-wasi": "0.10.5", + "@bruits/satteri-win32-arm64-msvc": "0.10.5", + "@bruits/satteri-win32-x64-msvc": "0.10.5" + } + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "license": "ISC" + }, + "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/sharp": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shiki": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.5.0.tgz", + "integrity": "sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.5.0", + "@shikijs/engine-javascript": "4.5.0", + "@shikijs/engine-oniguruma": "4.5.0", + "@shikijs/langs": "4.5.0", + "@shikijs/themes": "4.5.0", + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/simple-code-frame": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/simple-code-frame/-/simple-code-frame-1.3.0.tgz", + "integrity": "sha512-MB4pQmETUBlNs62BBeRjIFGeuy/x6gGKh7+eRUemn1rCFhqo7K+4slPqsyizCbcbYLnaYqaoZ2FWsZ/jN06D8w==", + "license": "MIT", + "dependencies": { + "kolorist": "^1.6.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/smol-toml": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz", + "integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0.tgz", + "integrity": "sha512-H6D7134xi6qONvh7ZHKgviXf+rd3vhGBSvebPZCaUkd8zvQ+7PtDw6CljPTe4cXWNf2IKZGNqw6VJXSb9IgBpA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "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-width": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz", + "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/svgo": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz", + "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^6.0.0", + "css-tree": "^3.0.1", + "css-what": "^7.0.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "1.6.1" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", + "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyclip": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-1.0.3.tgz", + "integrity": "sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "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/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "devOptional": true, + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.23.15", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.15.tgz", + "integrity": "sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/type-fest": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.10.0.tgz", + "integrity": "sha512-NoSdpq/WEiAg5sjmBkmV/hfxv6HJH4NqPNrqjtSO5CwRmpsDfaf4begxW34KdJykH/l1yHtwBWQkCRdoXO8mPA==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typesafe-path": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-auto-import-cache": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.6.tgz", + "integrity": "sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.8" + } + }, + "node_modules/typescript-auto-import-cache/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.7.0.tgz", + "integrity": "sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz", + "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==", + "license": "MIT", + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/undici-types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.5.tgz", + "integrity": "sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.1.0", + "ohash": "^2.0.11", + "undici": "^8.0.0" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/unstorage/node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", + "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "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/verkit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.4.1.tgz", + "integrity": "sha512-mMVzj0TXExtVdlDEq+Mzp0eyOuyznNpFobNM3uAqe3HVm/Ps2c+u17BligMkZjZCA6EiXpoon8iRTer3iu40SQ==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.2.tgz", + "integrity": "sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==", + "license": "MIT", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.28", + "rolldown": "~1.2.11", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.7.1", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-prerender-plugin": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/vite-prerender-plugin/-/vite-prerender-plugin-0.5.14.tgz", + "integrity": "sha512-X2w9AS1OhwEUec9HSryGAmEnEQJGhW6eFoiCVJv8BfOTVpM8SOjk75cEw/IC28APDHZudeIRbP8Sp7wfABq+Aw==", + "license": "MIT", + "dependencies": { + "kolorist": "^1.8.0", + "magic-string": "0.x >= 0.26.0", + "node-html-parser": "^6.1.12", + "simple-code-frame": "^1.3.0", + "source-map": "^0.7.4", + "stack-trace": "^1.0.0-pre2" + }, + "peerDependencies": { + "vite": "5.x || 6.x || 7.x || 8.x" + } + }, + "node_modules/vite/node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/vite/node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vite/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/vitefu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", + "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/volar-service-css": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.71.tgz", + "integrity": "sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-css-languageservice": "^6.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-emmet": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.71.tgz", + "integrity": "sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/css-parser": "^0.4.1", + "@emmetio/html-matcher": "^1.3.0", + "@vscode/emmet-helper": "^2.9.3", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-html": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.71.tgz", + "integrity": "sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-html-languageservice": "^5.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-prettier": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.71.tgz", + "integrity": "sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0", + "prettier": "^2.2 || ^3.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + }, + "prettier": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.71.tgz", + "integrity": "sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-browserify": "^1.0.1", + "semver": "^7.6.2", + "typescript-auto-import-cache": "^0.3.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-nls": "^5.2.0", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript-twoslash-queries": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.71.tgz", + "integrity": "sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/volar-service-yaml": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.71.tgz", + "integrity": "sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8", + "yaml-language-server": "~1.23.0" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/vscode-css-languageservice": { + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.10.tgz", + "integrity": "sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-css-languageservice/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-html-languageservice": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.2.tgz", + "integrity": "sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-json-languageservice": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", + "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "npm": ">=7.0.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.3.tgz", + "integrity": "sha512-qETYf9PCl1lVfwR+oBmMfc4vP2nqLNA35ABxorw3j06+xlKRgDVxbLgKm4Y/xPL0YWdeDjLoI4ImICIT3nB0zQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.4.tgz", + "integrity": "sha512-CCXbyr99dafRJzJH/0Ryk7ly5T8XPmSR0//OuF2w4m+9JiOin7zcAT5iET8GRE7Z9taFBejb3GbM0a0mbjdbrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "9.0.3", + "vscode-languageserver-types": "3.18.4" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.15.tgz", + "integrity": "sha512-Gsfr9S8LU3S6885cS+NaleasJ0n3V5y/SOTqHCifQiXWFw3G9w9/YItDfwHrlCz+dSZWWZ8ilYVMcJe7Sz7Sxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.4.tgz", + "integrity": "sha512-nQsacoiijvl0fRf2q28uFDrAVwRhdCa3QveiF7/CX0r18mLR5FU/1WskSsCKOjmEbtteKUnY8x8Yzxop+k0zwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-nls": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.2.0.tgz", + "integrity": "sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", + "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", + "devOptional": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yaml-language-server": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.23.0.tgz", + "integrity": "sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "ajv-i18n": "^4.2.0", + "prettier": "^3.8.1", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^9.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-uri": "^3.0.2", + "yaml": "2.8.3" + }, + "bin": { + "yaml-language-server": "bin/yaml-language-server" + } + }, + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "dev": true, + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz", + "integrity": "sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^8.2.1", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.5.tgz", + "integrity": "sha512-msJxIvYDYcoNL+PJsu+7qmpDWsYmAxTY+2TNYXXF0hzBzBk0BMecOqDOG/EckUoKCuKwObfbugIl8QpqHDXeFA==", + "license": "MIT" + }, + "node_modules/zod": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz", + "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/applications/quote-catalogue/package.json b/applications/quote-catalogue/package.json new file mode 100644 index 00000000..d9099163 --- /dev/null +++ b/applications/quote-catalogue/package.json @@ -0,0 +1,42 @@ +{ + "name": "quote-catalogue", + "private": true, + "type": "module", + "version": "1.0.0", + "engines": { + "node": ">=24.0.0" + }, + "scripts": { + "check": "astro check", + "build": "astro build", + "start": "node scripts/start.mjs", + "db:migrate": "tsx scripts/migrate.ts", + "db:seed": "tsx scripts/seed.ts", + "db:probe": "tsx scripts/probe.ts", + "test:integration": "tsx tests/integration.ts", + "test:browser": "tsx tests/browser.ts" + }, + "dependencies": { + "astro": "7.3.5", + "@astrojs/node": "11.1.6", + "@astrojs/preact": "6.0.5", + "preact": "10.29.8", + "daisyui": "5.7.47", + "tailwindcss": "4.3.3", + "@tailwindcss/vite": "4.3.3", + "@orpc/server": "1.15.4", + "@orpc/client": "1.15.4", + "@orpc/contract": "1.15.4", + "arktype": "2.2.7", + "kysely": "0.29.6", + "pg": "8.23.1" + }, + "devDependencies": { + "@astrojs/check": "0.9.10", + "typescript": "6.0.3", + "tsx": "4.23.15", + "@types/pg": "8.23.1", + "@types/node": "24.19.1", + "@playwright/test": "1.63.0" + } +} diff --git a/applications/quote-catalogue/scripts/migrate.ts b/applications/quote-catalogue/scripts/migrate.ts new file mode 100644 index 00000000..0d352736 --- /dev/null +++ b/applications/quote-catalogue/scripts/migrate.ts @@ -0,0 +1,39 @@ +import { sql, type Kysely } from "kysely"; +import { Migrator } from "kysely/migration"; +import { createDb } from "../src/server/db"; +const db = createDb(); +const migrator = new Migrator({ + db, + migrationTableSchema: "quote_catalogue", + provider: { + async getMigrations() { + return { + "001_catalogue": { + async up(db: Kysely) { + await sql`CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT NOT NULL, category TEXT NOT NULL, + description TEXT NOT NULL, rate_minor INTEGER NOT NULL CHECK (rate_minor BETWEEN 0 AND 50000))`.execute( + db, + ); + await sql`CREATE TABLE quotes (id INTEGER PRIMARY KEY, title TEXT NOT NULL, days INTEGER NOT NULL DEFAULT 1 CHECK (days BETWEEN 1 AND 14), + revision INTEGER NOT NULL DEFAULT 0 CHECK (revision >= 0), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW())`.execute( + db, + ); + await sql`CREATE TABLE quote_lines (quote_id INTEGER REFERENCES quotes(id) ON DELETE CASCADE, product_id INTEGER REFERENCES products(id), + quantity INTEGER NOT NULL CHECK (quantity BETWEEN 1 AND 20), unit_minor INTEGER NOT NULL CHECK (unit_minor BETWEEN 0 AND 50000), + PRIMARY KEY (quote_id, product_id))`.execute(db); + }, + }, + }; + }, + }, +}); +try { + const result = await migrator.migrateToLatest(); + if (result.error) throw result.error; + console.log( + "Migrations applied", + result.results?.map((r) => r.status), + ); +} finally { + await db.destroy(); +} diff --git a/applications/quote-catalogue/scripts/probe.ts b/applications/quote-catalogue/scripts/probe.ts new file mode 100644 index 00000000..1af5f7ef --- /dev/null +++ b/applications/quote-catalogue/scripts/probe.ts @@ -0,0 +1,19 @@ +import { lookup } from "node:dns/promises"; +import { createDb, connection } from "../src/server/db"; +const config = connection(); +if (process.argv.includes("--wrong-host")) { + config.host = (await lookup(config.host!)).address; + config.ssl = { ...(config.ssl as object), servername: "wrong.example" }; +} +const db = createDb(config); +try { + const { sql } = await import("kysely"); + console.log( + await sql`SELECT current_user AS role, version() AS version`.execute(db), + ); +} catch (error) { + console.error((error as Error).name, (error as Error).message); + process.exitCode = 1; +} finally { + await db.destroy(); +} diff --git a/applications/quote-catalogue/scripts/seed.ts b/applications/quote-catalogue/scripts/seed.ts new file mode 100644 index 00000000..de157acc --- /dev/null +++ b/applications/quote-catalogue/scripts/seed.ts @@ -0,0 +1,97 @@ +import { createDb } from "../src/server/db"; +const db = createDb(); +try { + await db.transaction().execute(async (trx) => { + await trx + .insertInto("products") + .values([ + { + id: 1, + name: "Cinema camera", + category: "Camera", + description: + "A compact 4K body for interviews and short productions.", + rate_minor: 6500, + }, + { + id: 2, + name: "Portrait lens", + category: "Camera", + description: + "A fast 50mm prime for crisp portraits and close details.", + rate_minor: 2200, + }, + { + id: 3, + name: "LED panel", + category: "Lighting", + description: + "Soft adjustable light for a small studio or interview set.", + rate_minor: 1800, + }, + { + id: 4, + name: "Light stand", + category: "Lighting", + description: + "Stable support with a sandbag for each mounted fixture.", + rate_minor: 800, + }, + { + id: 5, + name: "Shotgun microphone", + category: "Audio", + description: "Directional audio capture with a windshield and mount.", + rate_minor: 1600, + }, + { + id: 6, + name: "Audio recorder", + category: "Audio", + description: + "Four inputs and a portable recorder for location sound.", + rate_minor: 2400, + }, + { + id: 7, + name: "Video tripod", + category: "Support", + description: "A fluid head for smooth pans and repeatable framing.", + rate_minor: 1400, + }, + { + id: 8, + name: "Portable power kit", + category: "Support", + description: + "Charged batteries and adapters for a full field session.", + rate_minor: 1200, + }, + ]) + .onConflict((oc) => oc.column("id").doNothing()) + .execute(); + await trx + .insertInto("quotes") + .values([ + { + id: 1, + title: "Studio session", + days: 1, + revision: 0, + updated_at: new Date().toISOString(), + }, + { + id: 2, + title: "Field shoot", + days: 1, + revision: 0, + updated_at: new Date().toISOString(), + }, + ]) + .onConflict((oc) => oc.column("id").doNothing()) + .execute(); + }); + console.log("Seeded 8 products and 2 quotes without resetting drafts"); +} finally { + await db.destroy(); +} diff --git a/applications/quote-catalogue/scripts/start.mjs b/applications/quote-catalogue/scripts/start.mjs new file mode 100644 index 00000000..d2c3f996 --- /dev/null +++ b/applications/quote-catalogue/scripts/start.mjs @@ -0,0 +1,6 @@ +const host = process.env.HOST ?? "127.0.0.1"; +if (!["127.0.0.1", "::1"].includes(host)) + throw new Error("HOST must be loopback"); +process.env.HOST = host; +process.env.PORT ??= "4321"; +await import("../dist/server/entry.mjs"); diff --git a/applications/quote-catalogue/sql/bootstrap.sql b/applications/quote-catalogue/sql/bootstrap.sql new file mode 100644 index 00000000..502a855f --- /dev/null +++ b/applications/quote-catalogue/sql/bootstrap.sql @@ -0,0 +1,12 @@ +\getenv owner_password PG_OWNER_PASSWORD +\getenv app_password PG_APP_PASSWORD +BEGIN; +CREATE ROLE quote_catalogue_owner LOGIN PASSWORD :'owner_password'; +CREATE ROLE quote_catalogue_app LOGIN PASSWORD :'app_password'; +CREATE SCHEMA quote_catalogue AUTHORIZATION quote_catalogue_owner; +GRANT USAGE ON SCHEMA quote_catalogue TO quote_catalogue_app; +ALTER ROLE quote_catalogue_owner SET search_path = quote_catalogue, pg_catalog; +ALTER ROLE quote_catalogue_app SET search_path = quote_catalogue, pg_catalog; +ALTER ROLE quote_catalogue_app SET statement_timeout = '5s'; +ALTER ROLE quote_catalogue_app SET lock_timeout = '3s'; +COMMIT; diff --git a/applications/quote-catalogue/sql/grants.sql b/applications/quote-catalogue/sql/grants.sql new file mode 100644 index 00000000..5984e2c1 --- /dev/null +++ b/applications/quote-catalogue/sql/grants.sql @@ -0,0 +1,3 @@ +GRANT SELECT ON products, quotes, quote_lines TO quote_catalogue_app; +GRANT UPDATE (days, revision, updated_at) ON quotes TO quote_catalogue_app; +GRANT INSERT, DELETE ON quote_lines TO quote_catalogue_app; diff --git a/applications/quote-catalogue/src/components/QuoteBuilder.tsx b/applications/quote-catalogue/src/components/QuoteBuilder.tsx new file mode 100644 index 00000000..5b89c79b --- /dev/null +++ b/applications/quote-catalogue/src/components/QuoteBuilder.tsx @@ -0,0 +1,317 @@ +import { useEffect, useMemo, useState, useRef } from "preact/hooks"; +import { quoteClient } from "../lib/client"; +import type { Product, Quote } from "../lib/contract"; +const money = (minor: number) => + new Intl.NumberFormat("en-GB", { style: "currency", currency: "GBP" }).format( + minor / 100, + ); +export default function QuoteBuilder({ + products, + quoteId, +}: { + products: Product[]; + quoteId: number; +}) { + const [quote, setQuote] = useState(null); + const [selected, setSelected] = useState>({}); + const [days, setDays] = useState(1); + const [dirty, setDirty] = useState(false); + const [busy, setBusy] = useState(true); + const [conflict, setConflict] = useState(false); + const [message, setMessage] = useState(""); + const [failed, setFailed] = useState(false); + const [category, setCategory] = useState("All equipment"); + const [reloadDialog, setReloadDialog] = useState(false); + const dialog = useRef(null); + useEffect(() => { + if (reloadDialog) dialog.current?.showModal(); + else dialog.current?.close(); + }, [reloadDialog]); + const client = useMemo(() => quoteClient(), []); + const apply = (next: Quote) => { + setQuote(next); + setDays(next.days); + setSelected( + Object.fromEntries(next.lines.map((l) => [l.productId, l.quantity])), + ); + setDirty(false); + setConflict(false); + }; + const load = async () => { + setBusy(true); + try { + apply(await client.get({ id: quoteId })); + setMessage(""); + setFailed(false); + } catch { + setMessage( + "The quote could not be loaded. Check the database connection and try again.", + ); + setFailed(true); + } finally { + setBusy(false); + } + }; + useEffect(() => { + void load(); + }, []); + const change = (id: number, quantity: number) => { + setSelected((old) => { + const next = { ...old }; + if (quantity === 0) delete next[id]; + else next[id] = quantity; + return next; + }); + setDirty(true); + setMessage(""); + }; + const lines = products.filter((p) => selected[p.id]); + const estimated = lines.reduce( + (total, p) => total + p.rateMinor * selected[p.id] * days, + 0, + ); + const shownRate = (p: Product) => + !dirty + ? (quote?.lines.find((l) => l.productId === p.id)?.unitMinor ?? + p.rateMinor) + : p.rateMinor; + const disabled = busy || conflict || !quote; + const save = async () => { + if (disabled || !dirty || lines.length === 0) return; + setBusy(true); + try { + const next = await client.save({ + id: quote!.id, + revision: quote!.revision, + days, + lines: lines.map((p) => ({ + productId: p.id, + quantity: selected[p.id], + })), + }); + apply(next); + setMessage("Quote saved. Rates and total were calculated by the server."); + setFailed(false); + } catch (error) { + const code = (error as { code?: string }).code; + setConflict(code === "CONFLICT"); + setFailed(true); + setMessage( + code === "CONFLICT" + ? "A newer quote was saved. Your edits remain here. Reload before editing again." + : "The quote could not be saved. Your edits remain here.", + ); + } finally { + setBusy(false); + } + }; + return ( +

+
+
+
+

THE EQUIPMENT SHELF

+

Choose your kit

+
+ +
+
+ {products + .filter( + (p) => category === "All equipment" || p.category === category, + ) + .map((p) => ( +
+ +
+ {p.category} +

{p.name}

+

{p.description}

+
+ + {money(p.rateMinor)} / day + + +
+
+
+ ))} +
+
+
+ setReloadDialog(false)} + onClose={() => setReloadDialog(false)} + > + + +
+ ); +} diff --git a/applications/quote-catalogue/src/layouts/Layout.astro b/applications/quote-catalogue/src/layouts/Layout.astro new file mode 100644 index 00000000..22d49ed2 --- /dev/null +++ b/applications/quote-catalogue/src/layouts/Layout.astro @@ -0,0 +1,6 @@ +--- +import '../styles/app.css' +const { title } = Astro.props +--- +{title} · Fieldwork +
Fieldwork · Synthetic equipment catalogue Saved quotes, clear revisions.
diff --git a/applications/quote-catalogue/src/lib/client.ts b/applications/quote-catalogue/src/lib/client.ts new file mode 100644 index 00000000..32f9640e --- /dev/null +++ b/applications/quote-catalogue/src/lib/client.ts @@ -0,0 +1,12 @@ +import { createORPCClient } from "@orpc/client"; +import { RPCLink } from "@orpc/client/fetch"; +import type { ContractRouterClient } from "@orpc/contract"; +import type { contract } from "./contract"; +export function quoteClient() { + return createORPCClient>( + new RPCLink({ + url: () => window.location.origin + "/rpc", + headers: { "X-Quote-Catalogue": "1" }, + }), + ); +} diff --git a/applications/quote-catalogue/src/lib/contract.ts b/applications/quote-catalogue/src/lib/contract.ts new file mode 100644 index 00000000..5bfb9efa --- /dev/null +++ b/applications/quote-catalogue/src/lib/contract.ts @@ -0,0 +1,48 @@ +import { oc } from "@orpc/contract"; +import { type } from "arktype"; +const id = "number.integer > 0"; +const lineInput = type({ + productId: id, + quantity: "1 <= number.integer <= 20", +}); +export const saveInput = type({ + id, + revision: "0 <= number.integer < 2147483647", + days: "1 <= number.integer <= 14", + lines: lineInput.array(), +}) + .onDeepUndeclaredKey("reject") + .narrow( + (input, ctx) => + (input.lines.length >= 1 && input.lines.length <= 10) || + ctx.mustBe("between 1 and 10 quote lines"), + ); +export const product = type({ + id, + name: "string", + category: "string", + description: "string", + rateMinor: "number.integer >= 0", +}); +export const quote = type({ + id, + title: "string", + revision: "number.integer >= 0", + days: "1 <= number.integer <= 14", + currency: "'GBP'", + totalMinor: "number.integer >= 0", + lines: type({ + productId: id, + name: "string", + quantity: "1 <= number.integer <= 20", + unitMinor: "number.integer >= 0", + lineMinor: "number.integer >= 0", + }).array(), +}); +export const contract = { + get: oc.input(type({ id }).onUndeclaredKey("reject")).output(quote), + save: oc.input(saveInput).output(quote), +}; +export type Product = typeof product.infer; +export type Quote = typeof quote.infer; +export type SaveInput = typeof saveInput.infer; diff --git a/applications/quote-catalogue/src/middleware.ts b/applications/quote-catalogue/src/middleware.ts new file mode 100644 index 00000000..79c865bd --- /dev/null +++ b/applications/quote-catalogue/src/middleware.ts @@ -0,0 +1,19 @@ +import { defineMiddleware } from "astro:middleware"; +export const onRequest = defineMiddleware(async ({ request }, next) => { + const origin = process.env.APP_ORIGIN ?? "http://127.0.0.1:4321"; + const expected = new URL(origin); + if (!["127.0.0.1", "[::1]", "localhost"].includes(expected.hostname)) + throw new Error("APP_ORIGIN must use loopback"); + if (request.headers.get("host") !== expected.host) + return new Response("Invalid host", { status: 403 }); + if ( + !["GET", "HEAD"].includes(request.method) && + (request.headers.get("origin") !== origin || + request.headers.get("x-quote-catalogue") !== "1") + ) { + return new Response("Same-origin requests required", { status: 403 }); + } + const response = await next(); + response.headers.set("Cache-Control", "no-store"); + return response; +}); diff --git a/applications/quote-catalogue/src/pages/hire-guide.astro b/applications/quote-catalogue/src/pages/hire-guide.astro new file mode 100644 index 00000000..d23d40d7 --- /dev/null +++ b/applications/quote-catalogue/src/pages/hire-guide.astro @@ -0,0 +1,4 @@ +--- +import Layout from '../layouts/Layout.astro' +--- +

FIELD NOTES / 01

Plan the kit around
the production.

A camera is only part of a useful equipment list. Think through the room, the sound and the time your crew will have.

Start with the shot

For an interview, pair the cinema camera with the portrait lens and a video tripod. A locked frame gives your crew time to focus on the conversation.

Control the light and sound

An LED panel and light stand create a repeatable setup. Add a shotgun microphone and audio recorder when the location sound matters. Each light stand should carry its supplied sandbag.

Count complete hire days

The example charges each item's daily rate for every selected hire day. Save a quote to capture the catalogue rates at that revision. Saving again reprices the full quote at current rates.

This synthetic catalogue creates draft quotes. It does not reserve equipment or take payment.
Build your equipment quote
diff --git a/applications/quote-catalogue/src/pages/index.astro b/applications/quote-catalogue/src/pages/index.astro new file mode 100644 index 00000000..2dee316f --- /dev/null +++ b/applications/quote-catalogue/src/pages/index.astro @@ -0,0 +1,14 @@ +--- +import Layout from '../layouts/Layout.astro' +import QuoteBuilder from '../components/QuoteBuilder' +import { catalogue } from '../server/quotes' +let products: Awaited> = [] +let unavailable = false +try { products = await catalogue() } catch { unavailable = true } +const quoteId = Number(Astro.url.searchParams.get('quote') ?? 1) +--- + +

SMALL CREWS. GOOD EQUIPMENT.

Bring your next
production together.

Build a kit for your studio session or field shoot.
Choose equipment, set the duration and save a quote you can return to.

+ {unavailable ? : + Number.isSafeInteger(quoteId) && quoteId > 0 ? :
Invalid quote number.
} +
diff --git a/applications/quote-catalogue/src/pages/rpc/[...path].ts b/applications/quote-catalogue/src/pages/rpc/[...path].ts new file mode 100644 index 00000000..1e1e40b2 --- /dev/null +++ b/applications/quote-catalogue/src/pages/rpc/[...path].ts @@ -0,0 +1,11 @@ +import type { APIRoute } from "astro"; +import { RPCHandler } from "@orpc/server/fetch"; +import { router } from "../../server/router"; +const handler = new RPCHandler(router); +export const ALL: APIRoute = async ({ request }) => { + const { response } = await handler.handle(request, { + prefix: "/rpc", + context: {}, + }); + return response ?? new Response("Not found", { status: 404 }); +}; diff --git a/applications/quote-catalogue/src/server/db.ts b/applications/quote-catalogue/src/server/db.ts new file mode 100644 index 00000000..a638458a --- /dev/null +++ b/applications/quote-catalogue/src/server/db.ts @@ -0,0 +1,58 @@ +import { readFileSync } from "node:fs"; +import pg from "pg"; +import { Kysely, PostgresDialect, type ColumnType } from "kysely"; +interface Products { + id: number; + name: string; + category: string; + description: string; + rate_minor: number; +} +interface Quotes { + id: number; + title: string; + days: number; + revision: number; + updated_at: ColumnType; +} +interface Lines { + quote_id: number; + product_id: number; + quantity: number; + unit_minor: number; +} +export interface Database { + products: Products; + quotes: Quotes; + quote_lines: Lines; +} +export function connection(overrides: pg.PoolConfig = {}): pg.PoolConfig { + const required = (key: string) => { + const v = process.env[key]; + if (!v) throw new Error(`Missing ${key}`); + return v; + }; + return { + host: required("DB_HOST"), + port: Number(process.env.DB_PORT ?? "5432"), + database: required("DB_DATABASE"), + user: required("DB_USER"), + password: required("DB_PASSWORD"), + max: 5, + ssl: { + ca: readFileSync(required("PG_CA_CERT_PATH"), "utf8"), + rejectUnauthorized: true, + servername: required("DB_HOST"), + }, + ...overrides, + }; +} +export function createDb(overrides: pg.PoolConfig = {}) { + return new Kysely({ + dialect: new PostgresDialect({ pool: new pg.Pool(connection(overrides)) }), + }); +} +let db: Kysely | undefined; +export function getDb() { + return (db ??= createDb()); +} diff --git a/applications/quote-catalogue/src/server/quotes.ts b/applications/quote-catalogue/src/server/quotes.ts new file mode 100644 index 00000000..747e22f7 --- /dev/null +++ b/applications/quote-catalogue/src/server/quotes.ts @@ -0,0 +1,117 @@ +import { ORPCError } from "@orpc/server"; +import { getDb, type Database } from "./db"; +import type { Transaction } from "kysely"; +import type { Product, Quote, SaveInput } from "../lib/contract"; +export async function catalogue(): Promise { + const rows = await getDb() + .selectFrom("products") + .selectAll() + .orderBy("id") + .execute(); + return rows.map((p) => ({ + id: p.id, + name: p.name, + category: p.category, + description: p.description, + rateMinor: p.rate_minor, + })); +} +async function read(trx: Transaction, id: number): Promise { + const header = await trx + .selectFrom("quotes") + .selectAll() + .where("id", "=", id) + .forShare() + .executeTakeFirst(); + if (!header) + throw new ORPCError("NOT_FOUND", { message: "This quote does not exist." }); + const rows = await trx + .selectFrom("quote_lines as l") + .innerJoin("products as p", "p.id", "l.product_id") + .select(["p.id", "p.name", "l.quantity", "l.unit_minor"]) + .where("l.quote_id", "=", id) + .orderBy("p.id") + .execute(); + const lines = rows.map((r) => ({ + productId: r.id, + name: r.name, + quantity: r.quantity, + unitMinor: r.unit_minor, + lineMinor: r.unit_minor * r.quantity * header.days, + })); + return { + id, + title: header.title, + days: header.days, + revision: header.revision, + currency: "GBP", + totalMinor: lines.reduce((sum, r) => sum + r.lineMinor, 0), + lines, + }; +} +export function getQuote(id: number) { + return getDb() + .transaction() + .execute((trx) => read(trx, id)); +} +export async function saveQuote(input: SaveInput) { + return getDb() + .transaction() + .execute(async (trx) => { + const header = await trx + .selectFrom("quotes") + .selectAll() + .where("id", "=", input.id) + .forUpdate() + .executeTakeFirst(); + if (!header) + throw new ORPCError("NOT_FOUND", { + message: "This quote does not exist.", + }); + if (header.revision !== input.revision) + throw new ORPCError("CONFLICT", { + message: "A newer quote was saved. Reload before editing again.", + }); + const ids = input.lines.map((l) => l.productId); + if (new Set(ids).size !== ids.length) + throw new ORPCError("BAD_REQUEST", { + message: "Include each product only once.", + }); + const prices = await trx + .selectFrom("products") + .select(["id", "rate_minor"]) + .where("id", "in", ids) + .orderBy("id") + .execute(); + if (prices.length !== ids.length) + throw new ORPCError("BAD_REQUEST", { + message: "One of these products is not in the catalogue.", + }); + const byId = new Map(prices.map((p) => [p.id, p.rate_minor])); + await trx + .deleteFrom("quote_lines") + .where("quote_id", "=", input.id) + .execute(); + await trx + .insertInto("quote_lines") + .values( + input.lines.map((l) => ({ + quote_id: input.id, + product_id: l.productId, + quantity: l.quantity, + unit_minor: byId.get(l.productId)!, + })), + ) + .execute(); + await trx + .updateTable("quotes") + .set({ + days: input.days, + revision: header.revision + 1, + updated_at: new Date().toISOString(), + }) + .where("id", "=", input.id) + .execute(); + return read(trx, input.id); + }); +} diff --git a/applications/quote-catalogue/src/server/router.ts b/applications/quote-catalogue/src/server/router.ts new file mode 100644 index 00000000..7d148099 --- /dev/null +++ b/applications/quote-catalogue/src/server/router.ts @@ -0,0 +1,8 @@ +import { implement } from "@orpc/server"; +import { contract } from "../lib/contract"; +import { getQuote, saveQuote } from "./quotes"; +const api = implement(contract); +export const router = api.router({ + get: api.get.handler(({ input }) => getQuote(input.id)), + save: api.save.handler(({ input }) => saveQuote(input)), +}); diff --git a/applications/quote-catalogue/src/styles/app.css b/applications/quote-catalogue/src/styles/app.css new file mode 100644 index 00000000..c69e434b --- /dev/null +++ b/applications/quote-catalogue/src/styles/app.css @@ -0,0 +1,396 @@ +@import "tailwindcss"; +@plugin "daisyui" { + themes: light --default; +} +@plugin "daisyui/theme" { + name: "light"; + default: true; + --color-primary: #244e43; + --color-primary-content: #ffffff; + --color-base-100: #ffffff; + --color-base-200: #f5f3ee; + --color-base-content: #273a34; + --radius-box: 0.8rem; + --radius-field: 0.35rem; +} +:root { + font-family: Arial, Helvetica, sans-serif; + color: #273a34; + background: #f5f3ee; +} +body { + margin: 0; +} +.site-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 24px 5%; + border-bottom: 1px solid #dddcd5; +} +.brand { + display: flex; + align-items: center; + gap: 10px; + font-size: 18px; + font-weight: 800; + letter-spacing: 2px; + text-decoration: none; +} +.brand-mark { + background: #244e43; + color: white; + padding: 6px 10px; + font-size: 22px; +} +.brand-note { + font-size: 9px; + font-weight: 500; + letter-spacing: 1px; + margin-left: 12px; +} +nav { + display: flex; + align-items: center; + gap: 26px; + font-size: 13px; +} +main { + max-width: 1500px; + margin: auto; + padding: 0 5%; +} +.hero-copy { + display: flex; + justify-content: space-between; + gap: 30px; + padding: 50px 0 40px; +} +.eyebrow { + font-size: 10px; + font-weight: 700; + letter-spacing: 2px; + color: #697c73; + margin-bottom: 12px; +} +.hero-copy h1, +.guide h1 { + font-size: clamp(36px, 4.4vw, 60px); + font-family: Georgia, serif; + line-height: 1.08; + letter-spacing: -1.6px; + font-weight: 400; +} +.hero-description { + font-size: 15px; + line-height: 1.7; + margin-top: 20px; + color: #65736c; +} +.hero-copy aside { + border-left: 1px solid #d4d7ce; + padding: 8px 0 0 34px; + min-width: 270px; +} +.hero-copy aside span { + font-size: 10px; + letter-spacing: 2px; + color: #6a7b70; +} +.hero-copy aside h2 { + font-family: Georgia, serif; + font-size: 24px; + line-height: 1.2; + margin: 15px 0; +} +.hero-copy aside p { + font-size: 12px; + line-height: 1.8; + color: #6e7d75; +} +.hero-copy aside a { + font-size: 11px; + display: block; + margin-top: 14px; +} +.workbench { + display: grid; + grid-template-columns: minmax(0, 1fr) 350px; + gap: 26px; + align-items: start; +} +.section-heading { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; +} +.section-heading h2 { + font-family: Georgia, serif; + font-size: 26px; +} +.section-heading .eyebrow { + margin-bottom: 5px; +} +.section-heading .select { + width: 150px; + font-size: 12px; +} +.product-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 18px; +} +.product-card { + overflow: hidden; + box-shadow: 0 2px 8px #253c3010; + border: 1px solid #e0e4dc; +} +.equipment-visual { + height: 115px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 26px; + font-family: Georgia, serif; +} +.equipment-visual span { + font-size: 52px; + line-height: 1; + color: #476f5866; +} +.equipment-visual strong { + font-size: 14px; + font-weight: 400; + letter-spacing: 1px; +} +.visual-camera { + background: #e5eadd; +} +.visual-lighting { + background: #efe6d6; +} +.visual-audio { + background: #dde7e6; +} +.visual-support { + background: #e7e0dc; +} +.product-card .card-body { + padding: 19px; + gap: 9px; +} +.product-card .badge { + font-size: 9px; + height: 18px; +} +.product-card h3 { + font-size: 16px; + font-weight: 600; +} +.product-card p { + font-size: 12px; + line-height: 1.6; + color: #758077; + min-height: 38px; +} +.card-actions { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 8px; +} +.card-actions > span { + font-size: 10px; + color: #68776c; +} +.card-actions strong { + font-size: 15px; + color: #273a34; +} +.btn { + font-size: 11px; + text-transform: none; +} +.quote-card { + position: sticky; + top: 20px; + border: 1px solid #dde3d8; + box-shadow: 0 4px 14px #2543340d; +} +.quote-card .card-body { + padding: 24px; + gap: 16px; +} +.quote-card h2 { + font-family: Georgia, serif; + font-size: 27px; +} +.quote-meta { + display: flex; + justify-content: space-between; + gap: 5px; +} +.quote-meta .badge { + font-size: 9px; +} +.field-label { + font-size: 11px; + display: flex; + flex-direction: column; + gap: 8px; + font-weight: 600; +} +.field-label select { + width: 100%; + font-weight: 400; +} +.empty-quote { + text-align: center; + padding: 26px 9px; + color: #6a796f; +} +.empty-quote > span { + font-size: 32px; + display: block; + margin-bottom: 15px; + color: #768d7e; +} +.empty-quote h3 { + font-size: 14px; + line-height: 1.5; + color: #415b4a; +} +.empty-quote p { + font-size: 11px; + margin-top: 8px; +} +.quote-line { + padding: 13px 0; + border-bottom: 1px solid #ecefe9; +} +.quote-line h3 { + font-size: 12px; + font-weight: 600; +} +.quote-line p { + font-size: 10px; + color: #748274; + margin: 5px 0 10px; +} +.quantity-controls { + display: flex; + align-items: center; + width: 105px; +} +.quantity-controls output { + width: 33px; + text-align: center; + font-size: 12px; +} +.total-row { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 8px; +} +.total-row span { + font-size: 12px; +} +.total-row strong { + font-family: Georgia, serif; + font-size: 29px; +} +.price-note { + font-size: 10px; + line-height: 1.5; + color: #748274; +} +.alert { + font-size: 11px; + line-height: 1.6; +} +.quote-card .link { + font-size: 11px; +} +.save-btn { + width: 100%; +} +.modal-box h2 { + font-size: 24px; + font-family: Georgia, serif; + margin-bottom: 12px; +} +.modal-box p { + font-size: 13px; +} +.guide { + max-width: 720px; + margin: 50px auto; +} +.guide .lead { + font-size: 18px; + line-height: 1.7; + margin: 25px 0; +} +.guide section { + margin: 30px 0; +} +.guide h2 { + font-family: Georgia, serif; + font-size: 26px; + margin-bottom: 10px; +} +.guide p { + line-height: 1.8; + color: #65736c; +} +.guide .btn { + margin-top: 25px; +} +footer { + margin: 45px 5% 0; + padding: 24px 0; + border-top: 1px solid #dddcd5; + font-size: 10px; + color: #738175; + display: flex; + justify-content: space-between; +} +@media (max-width: 950px) { + .workbench { + grid-template-columns: 1fr; + } + .quote-card { + position: static; + } + .hero-copy aside { + display: none; + } +} +@media (max-width: 580px) { + .product-grid { + grid-template-columns: 1fr; + } + .brand-note { + display: none; + } + nav .badge { + display: none; + } + .site-header { + gap: 15px; + } + nav { + gap: 14px; + } + .brand { + font-size: 13px; + } + .hero-copy { + padding: 35px 0; + } + .section-heading { + gap: 10px; + } +} diff --git a/applications/quote-catalogue/tests/README.md b/applications/quote-catalogue/tests/README.md new file mode 100644 index 00000000..897929cc --- /dev/null +++ b/applications/quote-catalogue/tests/README.md @@ -0,0 +1,7 @@ +# Live tests + +Use a dedicated example schema and the runtime environment with TEST_OWNER_PASSWORD added only to a private test.env file. Stop the normal app first. Tests start the actual production server through scripts/start.mjs and use the real oRPC HTTP client. + +Integration creates randomly numbered owned product/quote fixtures and deletes them in finally. It temporarily adds a constraint that applies only to its own quote ID to prove delete/insert replacement rollback; use this only on a dedicated schema. Browser tests create their own quote using the eight seeded products and remove it afterward. They do not reset either seeded quote. Screenshot paths default to /tmp/quote-catalogue-evidence or TEST_EVIDENCE_DIR. + +Owner credentials remain outside browser code and normal runtime configuration. The real Kysely/pg probe supports valid CA and a deliberately wrong hostname; a wrong-CA control changes only PG_CA_CERT_PATH to an unrelated test CA. Probe failures are expected negative controls, not passing results. diff --git a/applications/quote-catalogue/tests/browser.ts b/applications/quote-catalogue/tests/browser.ts new file mode 100644 index 00000000..5aa3f498 --- /dev/null +++ b/applications/quote-catalogue/tests/browser.ts @@ -0,0 +1,115 @@ +import { chromium, expect } from "@playwright/test"; +import { mkdir } from "node:fs/promises"; +import { owner, start, stop, origin, client } from "./helpers"; +const db = owner(); +const id = 800000 + Math.floor(Math.random() * 90000); +const evidence = + process.env.TEST_EVIDENCE_DIR ?? "/tmp/quote-catalogue-evidence"; +await mkdir(evidence, { recursive: true }); +let server: Awaited> | undefined; +const browser = await chromium.launch({ headless: true }); +try { + await db + .insertInto("quotes") + .values({ + id, + title: "Studio session", + days: 1, + revision: 0, + updated_at: new Date().toISOString(), + }) + .execute(); + server = await start(); + const context = await browser.newContext({ + viewport: { width: 1440, height: 1100 }, + }); + const page = await context.newPage(); + const errors: string[] = []; + page.on("pageerror", (e) => errors.push(e.message)); + await page.goto(origin + "/?quote=" + id); + await expect( + page.getByRole("button", { name: "Add Cinema camera", exact: true }), + ).toBeEnabled(); + await page + .getByRole("button", { name: "Add Cinema camera", exact: true }) + .click(); + await page + .getByRole("button", { name: "Increase Cinema camera", exact: true }) + .click(); + await page + .getByRole("button", { name: "Add LED panel", exact: true }) + .click(); + await page.getByLabel("Hire days").selectOption("3"); + await expect(page.getByTestId("total")).toHaveText("£444.00"); + await page.getByRole("button", { name: "Save quote", exact: true }).click(); + await expect(page.locator('[role="status"]')).toContainText("Quote saved"); + await page.reload(); + await expect(page.getByLabel("Quantity Cinema camera")).toHaveText("2"); + await expect(page.getByTestId("total")).toHaveText("£444.00"); + await page.screenshot({ + path: evidence + "/quote-saved.png", + fullPage: true, + }); + await page.getByLabel("Filter equipment").selectOption("Audio"); + await expect(page.locator("[data-product]")).toHaveCount(2); + await page.getByLabel("Filter equipment").selectOption("All equipment"); + const other = await context.newPage(); + await other.goto(origin + "/?quote=" + id); + await expect(other.getByLabel("Quantity Cinema camera")).toHaveText("2"); + await page + .getByRole("button", { name: "Increase Cinema camera", exact: true }) + .click(); + await page.getByRole("button", { name: "Save quote", exact: true }).click(); + await expect(page.locator('[role="status"]')).toContainText("Quote saved"); + await other + .getByRole("button", { name: "Increase LED panel", exact: true }) + .click(); + await other.getByRole("button", { name: "Save quote", exact: true }).click(); + await expect(other.locator('[role="status"]')).toContainText( + "A newer quote was saved", + ); + await expect( + other.getByRole("button", { name: "Save quote", exact: true }), + ).toBeDisabled(); + await other.screenshot({ + path: evidence + "/quote-conflict.png", + fullPage: true, + }); + await other + .getByRole("button", { name: "Reload saved quote", exact: true }) + .click(); + await expect(other.getByRole("dialog")).toBeVisible(); + await other + .getByRole("button", { name: "Discard and reload", exact: true }) + .click(); + await expect(other.getByLabel("Quantity Cinema camera")).toHaveText("3"); + await expect(other.getByTestId("total")).toHaveText("£639.00"); + await page + .getByRole("link", { name: "Read the equipment-hire guide" }) + .click(); + await expect( + page.getByRole("heading", { name: "Start with the shot" }), + ).toBeVisible(); + await page.screenshot({ path: evidence + "/hire-guide.png", fullPage: true }); + expect((await client.get({ id })).totalMinor).toBe(63900); + expect(errors).toEqual([]); + const failing = await context.newPage(); + await failing.route("**/rpc/get", (r) => + r.fulfill({ status: 503, body: "{}" }), + ); + await failing.goto(origin + "/?quote=" + id); + await expect(failing.locator('[role="status"]')).toContainText( + "The quote could not be loaded", + ); + console.log( + "PASS real hydrated Preact/daisyUI catalogue, quantities/days, typed oRPC save/reload, integer saved total and category filter", + ); + console.log( + "PASS two-tab conflict, discard modal/reload, Astro hire guide, visible RPC failure; no browser errors", + ); +} finally { + await browser.close(); + await stop(server); + await db.deleteFrom("quotes").where("id", "=", id).execute(); + await db.destroy(); +} diff --git a/applications/quote-catalogue/tests/helpers.ts b/applications/quote-catalogue/tests/helpers.ts new file mode 100644 index 00000000..8135e656 --- /dev/null +++ b/applications/quote-catalogue/tests/helpers.ts @@ -0,0 +1,44 @@ +import { spawn, type ChildProcess } from "node:child_process"; +import { once } from "node:events"; +import { createORPCClient } from "@orpc/client"; +import { RPCLink } from "@orpc/client/fetch"; +import type { ContractRouterClient } from "@orpc/contract"; +import type { contract } from "../src/lib/contract"; +import { createDb } from "../src/server/db"; +export const origin = process.env.APP_ORIGIN ?? "http://127.0.0.1:4321"; +export const client = createORPCClient>( + new RPCLink({ + url: origin + "/rpc", + headers: { Origin: origin, "X-Quote-Catalogue": "1" }, + }), +); +export const owner = () => + createDb({ + user: "quote_catalogue_owner", + password: process.env.TEST_OWNER_PASSWORD, + }); +export async function start(): Promise { + const child = spawn(process.execPath, ["scripts/start.mjs"], { + env: process.env, + stdio: ["ignore", "pipe", "pipe"], + }); + let errors = ""; + child.stderr?.on("data", (d) => { + errors += d.toString(); + }); + for (let i = 0; i < 100; i++) { + if (child.exitCode !== null) throw new Error("Server exited: " + errors); + try { + if ((await fetch(origin + "/hire-guide")).ok) return child; + } catch {} + await new Promise((resolve) => setTimeout(resolve, 100)); + } + child.kill("SIGTERM"); + throw new Error("Server readiness timed out: " + errors); +} +export async function stop(child?: ChildProcess) { + if (child && child.exitCode === null) { + child.kill("SIGTERM"); + await once(child, "exit"); + } +} diff --git a/applications/quote-catalogue/tests/integration.ts b/applications/quote-catalogue/tests/integration.ts new file mode 100644 index 00000000..210a5cac --- /dev/null +++ b/applications/quote-catalogue/tests/integration.ts @@ -0,0 +1,156 @@ +import assert from "node:assert/strict"; +import { sql } from "kysely"; +import { client, owner, start, stop } from "./helpers"; +import { createDb } from "../src/server/db"; +import type { SaveInput } from "../src/lib/contract"; +const db = owner(); +const runtime = createDb(); +const id = 900000 + Math.floor(Math.random() * 90000); +const p1 = id, + p2 = id + 100000; +let server: Awaited> | undefined; +const save = (value: unknown) => client.save(value as SaveInput); +const bad = async (value: unknown) => + assert.rejects( + save(value), + (error: unknown) => (error as { code?: string }).code === "BAD_REQUEST", + ); +try { + await db + .insertInto("products") + .values([ + { + id: p1, + name: "Fixture camera", + category: "Camera", + description: "Owned test fixture", + rate_minor: 3600, + }, + { + id: p2, + name: "Fixture stand", + category: "Support", + description: "Owned test fixture", + rate_minor: 800, + }, + ]) + .execute(); + await db + .insertInto("quotes") + .values({ + id, + title: "Owned integration fixture", + days: 1, + revision: 0, + updated_at: new Date().toISOString(), + }) + .execute(); + server = await start(); + const input = { + id, + revision: 0, + days: 3, + lines: [ + { productId: p1, quantity: 2 }, + { productId: p2, quantity: 1 }, + ], + }; + await bad({ ...input, days: 0 }); + await bad({ ...input, days: 1.5 }); + await bad({ ...input, totalMinor: 1 }); + await bad({ ...input, lines: [{ productId: p1, quantity: -1 }] }); + await bad({ ...input, lines: [{ productId: p1, quantity: 1.1 }] }); + await bad({ ...input, lines: [{ productId: p1, quantity: 21 }] }); + await bad({ ...input, lines: [] }); + await bad({ + ...input, + lines: [{ productId: p1, quantity: 1, unitMinor: 1 }], + }); + await bad({ + ...input, + lines: [ + { productId: p1, quantity: 1 }, + { productId: p1, quantity: 2 }, + ], + }); + await bad({ ...input, lines: [{ productId: 2000000000, quantity: 1 }] }); + const races = await Promise.allSettled([ + client.save(input), + client.save(input), + ]); + assert.equal(races.filter((r) => r.status === "fulfilled").length, 1); + assert.equal( + (races.find((r) => r.status === "rejected") as PromiseRejectedResult).reason + .code, + "CONFLICT", + ); + const saved = await client.get({ id }); + assert.equal(saved.totalMinor, 24000); + assert.equal(saved.revision, 1); + await stop(server); + server = await start(); + assert.deepEqual(await client.get({ id }), saved); + console.log( + "PASS actual oRPC/ArkType invalid inputs and product references; competing saves; genuine process restart; server-derived £240.00", + ); + // A product rate change does not rewrite saved line snapshots. A later save reprices the full quote. + await db + .updateTable("products") + .set({ rate_minor: 4000 }) + .where("id", "=", p1) + .execute(); + assert.equal((await client.get({ id })).totalMinor, 24000); + const repriced = await client.save({ ...input, revision: 1 }); + assert.equal(repriced.totalMinor, 26400); + await sql`ALTER TABLE quote_lines ADD CONSTRAINT quote_fixture_failure CHECK (quote_id <> ${sql.lit(id)} OR quantity <> 19)`.execute( + db, + ); + await assert.rejects( + client.save({ + ...input, + revision: 2, + days: 4, + lines: [ + { productId: p1, quantity: 1 }, + { productId: p2, quantity: 19 }, + ], + }), + ); + assert.deepEqual(await client.get({ id }), repriced); + await sql`ALTER TABLE quote_lines DROP CONSTRAINT quote_fixture_failure`.execute( + db, + ); + console.log( + "PASS saved rate snapshots, full server repricing, failed line write restores old lines and header revision", + ); + await assert.rejects( + runtime + .updateTable("products") + .set({ rate_minor: 1 }) + .where("id", "=", p1) + .execute(), + /permission denied/, + ); + await assert.rejects( + runtime.deleteFrom("quotes").where("id", "=", id).execute(), + /permission denied/, + ); + await assert.rejects( + sql`CREATE TABLE quote_catalogue.forbidden_fixture (id integer)`.execute( + runtime, + ), + /permission denied/, + ); + console.log( + "PASS restricted runtime denies catalogue prices, quote deletion and schema creation", + ); +} finally { + await stop(server); + await sql`ALTER TABLE quote_lines DROP CONSTRAINT IF EXISTS quote_fixture_failure`.execute( + db, + ); + await db.deleteFrom("quotes").where("id", "=", id).execute(); + await db.deleteFrom("products").where("id", "in", [p1, p2]).execute(); + await db.destroy(); + await runtime.destroy(); +} diff --git a/applications/quote-catalogue/tsconfig.json b/applications/quote-catalogue/tsconfig.json new file mode 100644 index 00000000..b7381143 --- /dev/null +++ b/applications/quote-catalogue/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "astro/tsconfigs/strict", + "compilerOptions": { + "jsx": "react-jsx", + "jsxImportSource": "preact", + "ignoreDeprecations": "6.0" + }, + "include": [ + ".astro/types.d.ts", + "**/*" + ], + "exclude": [ + "dist", + "node_modules" + ] +}