From 3f4f0f73b23dc6aa095a311babe20cc71f6078a9 Mon Sep 17 00:00:00 2001
From: bntvllnt <32437578+bntvllnt@users.noreply.github.com>
Date: Wed, 12 Aug 2026 17:17:44 +0200
Subject: [PATCH 1/6] feat: prepare configs for TypeScript 7
---
.github/workflows/ci.yml | 5 +
.github/workflows/publish.yml | 8 +
.gitignore | 1 +
CLAUDE.md | 4 +-
README.md | 41 +-
base.json | 3 +
package-lock.json | 428 +++++++++++++++++++++
package.json | 9 +-
tests/fixtures/base/src/index.ts | 3 +
tests/fixtures/base/tsconfig.json | 7 +
tests/fixtures/nextjs/src/jsx-runtime.d.ts | 21 +
tests/fixtures/nextjs/src/page.tsx | 3 +
tests/fixtures/nextjs/tsconfig.json | 7 +
tests/fixtures/node-library/src/index.ts | 3 +
tests/fixtures/node-library/tsconfig.json | 8 +
tests/fixtures/nodejs/src/index.ts | 3 +
tests/fixtures/nodejs/src/node.d.ts | 3 +
tests/fixtures/nodejs/tsconfig.json | 8 +
tests/fixtures/react/src/index.tsx | 3 +
tests/fixtures/react/src/jsx-runtime.d.ts | 14 +
tests/fixtures/react/tsconfig.json | 8 +
tests/smoke.test.js | 117 +++++-
22 files changed, 698 insertions(+), 9 deletions(-)
create mode 100644 .gitignore
create mode 100644 package-lock.json
create mode 100644 tests/fixtures/base/src/index.ts
create mode 100644 tests/fixtures/base/tsconfig.json
create mode 100644 tests/fixtures/nextjs/src/jsx-runtime.d.ts
create mode 100644 tests/fixtures/nextjs/src/page.tsx
create mode 100644 tests/fixtures/nextjs/tsconfig.json
create mode 100644 tests/fixtures/node-library/src/index.ts
create mode 100644 tests/fixtures/node-library/tsconfig.json
create mode 100644 tests/fixtures/nodejs/src/index.ts
create mode 100644 tests/fixtures/nodejs/src/node.d.ts
create mode 100644 tests/fixtures/nodejs/tsconfig.json
create mode 100644 tests/fixtures/react/src/index.tsx
create mode 100644 tests/fixtures/react/src/jsx-runtime.d.ts
create mode 100644 tests/fixtures/react/tsconfig.json
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index de378d5..345bcb6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -8,6 +8,9 @@ concurrency:
group: ci-${{ github.head_ref }}
cancel-in-progress: true
+permissions:
+ contents: read
+
jobs:
validate:
name: Validate
@@ -19,4 +22,6 @@ jobs:
with:
node-version: 22
+ - run: npm ci --ignore-scripts
+
- run: npm test
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 847c1e9..c1dbcbe 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -34,6 +34,8 @@ jobs:
quality:
name: Quality Gates
runs-on: ubuntu-latest
+ permissions:
+ contents: read
steps:
- uses: actions/checkout@v4
@@ -41,6 +43,8 @@ jobs:
with:
node-version: 22
+ - run: npm ci --ignore-scripts
+
- run: npm test
canary:
@@ -59,6 +63,8 @@ jobs:
node-version: 22
registry-url: https://registry.npmjs.org
+ - run: npm ci --ignore-scripts
+
- name: Upgrade npm for OIDC support
run: npm install -g npm@latest
@@ -92,6 +98,8 @@ jobs:
node-version: 22
registry-url: https://registry.npmjs.org
+ - run: npm ci --ignore-scripts
+
- name: Bump version
id: version
run: |
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c2658d7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+node_modules/
diff --git a/CLAUDE.md b/CLAUDE.md
index 21e27ff..012fdd8 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -32,7 +32,7 @@ Uses npm OIDC provenance — no `NPM_TOKEN` secret needed. Requires npm trusted
## Project structure
```
-base.json ← foundation (strict, isolatedModules, noUncheckedIndexedAccess)
+base.json ← foundation (strict, explicit ambient types, stable type ordering)
nodejs.json ← Node.js apps (NodeNext, ES2024)
node-library.json ← publishable npm packages (NodeNext, ES2024, declarationMap)
react.json ← React apps (Bundler, ES2022, react-jsx)
@@ -43,6 +43,6 @@ nextjs.json ← Next.js apps (Bundler, ES2022, noEmit, next plugin)
| Command | What |
|---------|------|
-| `npm test` | Run smoke tests (JSON validation) |
+| `npm test` | Validate every preset with the supported TypeScript 6 and 7 compilers |
| `npm pack --dry-run` | Preview tarball contents |
| `npm view @vllnt/typescript` | Check published version |
diff --git a/README.md b/README.md
index 133912f..4fac59a 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
# @vllnt/typescript
-Shared TypeScript configurations for vllnt projects. Strict, modern, Node 22+.
+Shared TypeScript configurations for vllnt projects. Strict, modern, Node 22+, and validated with TypeScript 6 and 7.
## Install
```sh
-npm install -D @vllnt/typescript
+npm install -D @vllnt/typescript typescript
```
## Presets
@@ -78,14 +78,49 @@ All presets extend `base.json` which enforces:
- `strict: true`
- `isolatedModules: true`
- `noUncheckedIndexedAccess: true`
+- `noUncheckedSideEffectImports: true`
- `skipLibCheck: true`
- `esModuleInterop: true`
- `resolveJsonModule: true`
+- `stableTypeOrdering: true`
+- `types: []` (ambient type packages must be listed explicitly)
+
+On TypeScript 6, `stableTypeOrdering` can make type-checking slower (up to 25% according to the [TypeScript 6 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/)). It is enabled here so TypeScript 6 uses TypeScript 7's deterministic type ordering during migration; TypeScript 7 always uses this behavior.
+
+## TypeScript 7
+
+Version 2 supports TypeScript 6 and 7, drops TypeScript 5, and makes ambient type packages opt-in. TypeScript 7 is a native compiler and no longer exposes the JavaScript compiler API used by tools such as `typescript-eslint` and legacy `tsserver` integrations. Use TypeScript 7 directly when every tool in the project invokes the compiler CLI:
+
+```sh
+npm install -D @vllnt/typescript typescript@^7
+```
+
+During the ecosystem transition, install TypeScript 7 for `tsc` and keep the TypeScript 6 API available under the canonical `typescript` package name:
+
+```json
+{
+ "devDependencies": {
+ "@typescript/native": "npm:typescript@^7.0.2",
+ "@vllnt/typescript": "^2.0.0",
+ "typescript": "npm:@typescript/typescript6@^6.0.2"
+ }
+}
+```
+
+This arrangement follows the [official TypeScript 7 side-by-side guidance](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/). It provides TypeScript 7 as `tsc`, TypeScript 6 as `tsc6`, and the TypeScript 6 JavaScript API to dependent tooling.
+
+Before switching a consumer to TypeScript 7:
+
+- Remove `baseUrl`; make every `paths` target relative to the project root.
+- Replace `moduleResolution: "node"` with `"NodeNext"` for Node.js or `"Bundler"` for bundled applications.
+- Set `rootDir` explicitly for emitting projects.
+- List required ambient packages in `types`, for example `types: ["node", "vitest/globals"]`.
+- Use Next.js 16.3 or newer. Next.js 16.2.12 requires `experimental.useTypeScriptCli: true`.
## Requirements
- Node.js >= 22
-- TypeScript >= 5.0
+- TypeScript >= 6.0.2 and < 8
## License
diff --git a/base.json b/base.json
index 414ba9e..59500e6 100644
--- a/base.json
+++ b/base.json
@@ -8,6 +8,9 @@
"isolatedModules": true,
"skipLibCheck": true,
"noUncheckedIndexedAccess": true,
+ "noUncheckedSideEffectImports": true,
+ "stableTypeOrdering": true,
+ "types": [],
"resolveJsonModule": true
}
}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..d7584bb
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,428 @@
+{
+ "name": "@vllnt/typescript",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@vllnt/typescript",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "@typescript/native": "npm:typescript@7.0.2",
+ "typescript": "npm:@typescript/typescript6@6.0.2"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "peerDependencies": {
+ "typescript": ">=6.0.2 <8"
+ }
+ },
+ "node_modules/@typescript/native": {
+ "name": "typescript",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
+ "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc"
+ },
+ "engines": {
+ "node": ">=16.20.0"
+ },
+ "optionalDependencies": {
+ "@typescript/typescript-aix-ppc64": "7.0.2",
+ "@typescript/typescript-darwin-arm64": "7.0.2",
+ "@typescript/typescript-darwin-x64": "7.0.2",
+ "@typescript/typescript-freebsd-arm64": "7.0.2",
+ "@typescript/typescript-freebsd-x64": "7.0.2",
+ "@typescript/typescript-linux-arm": "7.0.2",
+ "@typescript/typescript-linux-arm64": "7.0.2",
+ "@typescript/typescript-linux-loong64": "7.0.2",
+ "@typescript/typescript-linux-mips64el": "7.0.2",
+ "@typescript/typescript-linux-ppc64": "7.0.2",
+ "@typescript/typescript-linux-riscv64": "7.0.2",
+ "@typescript/typescript-linux-s390x": "7.0.2",
+ "@typescript/typescript-linux-x64": "7.0.2",
+ "@typescript/typescript-netbsd-arm64": "7.0.2",
+ "@typescript/typescript-netbsd-x64": "7.0.2",
+ "@typescript/typescript-openbsd-arm64": "7.0.2",
+ "@typescript/typescript-openbsd-x64": "7.0.2",
+ "@typescript/typescript-sunos-x64": "7.0.2",
+ "@typescript/typescript-win32-arm64": "7.0.2",
+ "@typescript/typescript-win32-x64": "7.0.2"
+ }
+ },
+ "node_modules/@typescript/old": {
+ "name": "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/typescript-aix-ppc64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
+ "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-darwin-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
+ "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-darwin-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
+ "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-freebsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-freebsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
+ "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-arm": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
+ "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
+ "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-loong64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
+ "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-mips64el": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
+ "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-ppc64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
+ "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-riscv64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
+ "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-s390x": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
+ "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
+ "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-netbsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-netbsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
+ "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-openbsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-openbsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
+ "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-sunos-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
+ "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-win32-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
+ "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-win32-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
+ "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/typescript": {
+ "name": "@typescript/typescript6",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript6/-/typescript6-6.0.2.tgz",
+ "integrity": "sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@typescript/old": "npm:typescript@^6"
+ },
+ "bin": {
+ "tsc6": "bin/tsc6"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index ea442a8..b913af4 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,7 @@
"homepage": "https://github.com/vllnt/typescript#readme",
"repository": {
"type": "git",
- "url": "https://github.com/vllnt/typescript.git"
+ "url": "git+https://github.com/vllnt/typescript.git"
},
"keywords": [
"typescript",
@@ -29,6 +29,13 @@
"test": "node --test tests/smoke.test.js",
"prepublishOnly": "node --test tests/smoke.test.js"
},
+ "peerDependencies": {
+ "typescript": ">=6.0.2 <8"
+ },
+ "devDependencies": {
+ "@typescript/native": "npm:typescript@7.0.2",
+ "typescript": "npm:@typescript/typescript6@6.0.2"
+ },
"publishConfig": {
"access": "public"
}
diff --git a/tests/fixtures/base/src/index.ts b/tests/fixtures/base/src/index.ts
new file mode 100644
index 0000000..e2f6240
--- /dev/null
+++ b/tests/fixtures/base/src/index.ts
@@ -0,0 +1,3 @@
+const greeting: string = "hello"
+
+export { greeting }
diff --git a/tests/fixtures/base/tsconfig.json b/tests/fixtures/base/tsconfig.json
new file mode 100644
index 0000000..6f8fc72
--- /dev/null
+++ b/tests/fixtures/base/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../../base.json",
+ "compilerOptions": {
+ "noEmit": true
+ },
+ "include": ["src"]
+}
diff --git a/tests/fixtures/nextjs/src/jsx-runtime.d.ts b/tests/fixtures/nextjs/src/jsx-runtime.d.ts
new file mode 100644
index 0000000..8addab5
--- /dev/null
+++ b/tests/fixtures/nextjs/src/jsx-runtime.d.ts
@@ -0,0 +1,21 @@
+declare namespace JSX {
+ interface IntrinsicElements {
+ main: {
+ children?: unknown
+ }
+ }
+}
+
+declare module "react/jsx-runtime" {
+ namespace JSX {
+ interface IntrinsicElements {
+ main: {
+ children?: unknown
+ }
+ }
+ }
+
+ export const Fragment: unique symbol
+ export function jsx(type: unknown, props: unknown): unknown
+ export function jsxs(type: unknown, props: unknown): unknown
+}
diff --git a/tests/fixtures/nextjs/src/page.tsx b/tests/fixtures/nextjs/src/page.tsx
new file mode 100644
index 0000000..edb168e
--- /dev/null
+++ b/tests/fixtures/nextjs/src/page.tsx
@@ -0,0 +1,3 @@
+export default function Page() {
+ return Ready
+}
diff --git a/tests/fixtures/nextjs/tsconfig.json b/tests/fixtures/nextjs/tsconfig.json
new file mode 100644
index 0000000..30ebc4d
--- /dev/null
+++ b/tests/fixtures/nextjs/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../../nextjs.json",
+ "compilerOptions": {
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
diff --git a/tests/fixtures/node-library/src/index.ts b/tests/fixtures/node-library/src/index.ts
new file mode 100644
index 0000000..3ded969
--- /dev/null
+++ b/tests/fixtures/node-library/src/index.ts
@@ -0,0 +1,3 @@
+export function double(value: number): number {
+ return value * 2
+}
diff --git a/tests/fixtures/node-library/tsconfig.json b/tests/fixtures/node-library/tsconfig.json
new file mode 100644
index 0000000..8ca7245
--- /dev/null
+++ b/tests/fixtures/node-library/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../../node-library.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
diff --git a/tests/fixtures/nodejs/src/index.ts b/tests/fixtures/nodejs/src/index.ts
new file mode 100644
index 0000000..8627fb8
--- /dev/null
+++ b/tests/fixtures/nodejs/src/index.ts
@@ -0,0 +1,3 @@
+const environment = process.env.NODE_ENV ?? "development"
+
+export { environment }
diff --git a/tests/fixtures/nodejs/src/node.d.ts b/tests/fixtures/nodejs/src/node.d.ts
new file mode 100644
index 0000000..bc4f2d0
--- /dev/null
+++ b/tests/fixtures/nodejs/src/node.d.ts
@@ -0,0 +1,3 @@
+declare const process: {
+ env: Record
+}
diff --git a/tests/fixtures/nodejs/tsconfig.json b/tests/fixtures/nodejs/tsconfig.json
new file mode 100644
index 0000000..cb3cbba
--- /dev/null
+++ b/tests/fixtures/nodejs/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../../nodejs.json",
+ "compilerOptions": {
+ "noEmit": true,
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
diff --git a/tests/fixtures/react/src/index.tsx b/tests/fixtures/react/src/index.tsx
new file mode 100644
index 0000000..db63b9f
--- /dev/null
+++ b/tests/fixtures/react/src/index.tsx
@@ -0,0 +1,3 @@
+export function Button() {
+ return
+}
diff --git a/tests/fixtures/react/src/jsx-runtime.d.ts b/tests/fixtures/react/src/jsx-runtime.d.ts
new file mode 100644
index 0000000..d4358b7
--- /dev/null
+++ b/tests/fixtures/react/src/jsx-runtime.d.ts
@@ -0,0 +1,14 @@
+declare module "react/jsx-runtime" {
+ namespace JSX {
+ interface IntrinsicElements {
+ button: {
+ children?: unknown
+ disabled?: boolean
+ }
+ }
+ }
+
+ export const Fragment: unique symbol
+ export function jsx(type: unknown, props: unknown): unknown
+ export function jsxs(type: unknown, props: unknown): unknown
+}
diff --git a/tests/fixtures/react/tsconfig.json b/tests/fixtures/react/tsconfig.json
new file mode 100644
index 0000000..17e1caf
--- /dev/null
+++ b/tests/fixtures/react/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../../react.json",
+ "compilerOptions": {
+ "noEmit": true,
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
diff --git a/tests/smoke.test.js b/tests/smoke.test.js
index bc1f4a6..6298ac8 100644
--- a/tests/smoke.test.js
+++ b/tests/smoke.test.js
@@ -1,14 +1,60 @@
const { test } = require('node:test')
const assert = require('node:assert/strict')
-const { readFileSync, readdirSync } = require('node:fs')
-const { join } = require('node:path')
+const { mkdtempSync, readFileSync, readdirSync, rmSync } = require('node:fs')
+const { tmpdir } = require('node:os')
+const { dirname, join } = require('node:path')
+const { spawnSync } = require('node:child_process')
const root = join(__dirname, '..')
+const fixtures = join(__dirname, 'fixtures')
const configs = readdirSync(root).filter(
- (f) => f.endsWith('.json') && f !== 'package.json',
+ (file) =>
+ file.endsWith('.json') &&
+ file !== 'package.json' &&
+ file !== 'package-lock.json',
)
+const compilers = [
+ {
+ binary: 'tsc6',
+ label: 'TypeScript 6',
+ packageName: 'typescript',
+ versionPrefix: 'Version 6.',
+ },
+ {
+ binary: 'tsc',
+ label: 'TypeScript 7',
+ packageName: '@typescript/native',
+ versionPrefix: 'Version 7.',
+ },
+]
+
+function compilerPath(compiler) {
+ const packagePath = require.resolve(`${compiler.packageName}/package.json`)
+ const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'))
+ return join(dirname(packagePath), packageJson.bin[compiler.binary])
+}
+
+function runCompiler(compiler, args) {
+ const result = spawnSync(process.execPath, [compilerPath(compiler), ...args], {
+ cwd: root,
+ encoding: 'utf-8',
+ timeout: 30_000,
+ })
+ assert.equal(
+ result.error,
+ undefined,
+ `${compiler.label} could not run: ${result.error?.message}`,
+ )
+ assert.equal(
+ result.status,
+ 0,
+ `${compiler.label} failed (${args.join(' ')}):\n${result.stdout}${result.stderr}`,
+ )
+ return result.stdout.trim()
+}
+
test('all config files are valid JSON with compilerOptions', () => {
for (const config of configs) {
const raw = readFileSync(join(root, config), 'utf-8')
@@ -33,3 +79,68 @@ test('package.json files array includes all configs', () => {
assert.ok(pkg.files.includes(config), `${config} must be in package.json files`)
}
})
+
+test('integration tests use the supported compiler majors', () => {
+ for (const compiler of compilers) {
+ assert.ok(
+ runCompiler(compiler, ['--version']).startsWith(compiler.versionPrefix),
+ `${compiler.label} must report ${compiler.versionPrefix}`,
+ )
+ }
+})
+
+test('TypeScript 6 compatibility package exposes the JavaScript API', () => {
+ const typescript = require('typescript')
+ assert.match(typescript.version, /^6\./)
+ assert.equal(typeof typescript.createProgram, 'function')
+})
+
+for (const compiler of compilers) {
+ test(`${compiler.label} type-checks every preset fixture`, () => {
+ const buildInfoDirectory = mkdtempSync(
+ join(tmpdir(), 'vllnt-typescript-build-info-'),
+ )
+ try {
+ for (const preset of configs.map((config) => config.replace('.json', ''))) {
+ runCompiler(compiler, [
+ '--project',
+ join(fixtures, preset, 'tsconfig.json'),
+ '--noEmit',
+ '--incremental',
+ '--tsBuildInfoFile',
+ join(buildInfoDirectory, `${preset}.tsbuildinfo`),
+ ])
+ }
+ } finally {
+ rmSync(buildInfoDirectory, { force: true, recursive: true })
+ }
+ })
+
+ test(`${compiler.label} preserves node-library emit behavior`, () => {
+ const outputDirectory = mkdtempSync(
+ join(tmpdir(), 'vllnt-typescript-node-library-'),
+ )
+ try {
+ runCompiler(compiler, [
+ '--project',
+ join(fixtures, 'node-library', 'tsconfig.json'),
+ '--outDir',
+ outputDirectory,
+ ])
+
+ for (const output of [
+ 'index.js',
+ 'index.js.map',
+ 'index.d.ts',
+ 'index.d.ts.map',
+ ]) {
+ assert.ok(
+ readdirSync(outputDirectory).includes(output),
+ `${compiler.label} must emit ${output} for node-library.json`,
+ )
+ }
+ } finally {
+ rmSync(outputDirectory, { force: true, recursive: true })
+ }
+ })
+}
From 178a179431cd6807ae1b48eec95016d2173d526d Mon Sep 17 00:00:00 2001
From: bntvllnt <32437578+bntvllnt@users.noreply.github.com>
Date: Mon, 18 May 2026 07:46:07 +0200
Subject: [PATCH 2/6] docs: add release-readiness baseline
---
AGENTS.md | 33 ++++++++++++++++
CHANGELOG.md | 21 ++++++++++
CONTRIBUTING.md | 45 ++++++++++++++++++++++
SECURITY.md | 24 ++++++++++++
llms-full.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++++++
llms.txt | 29 ++++++++++++++
6 files changed, 252 insertions(+)
create mode 100644 AGENTS.md
create mode 100644 CHANGELOG.md
create mode 100644 CONTRIBUTING.md
create mode 100644 SECURITY.md
create mode 100644 llms-full.txt
create mode 100644 llms.txt
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..2ac41fa
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,33 @@
+# Agent Instructions for @vllnt/typescript
+
+This repository contains the public `@vllnt/typescript` npm package.
+
+## Scope
+
+- Keep changes focused on TypeScript configuration presets, tests, docs, and release-readiness files.
+- Do not publish to npm, create tags, bump versions, merge PRs, or announce releases unless explicitly instructed by a human maintainer.
+- Do not add private VLLNT operational details, credentials, customer data, or internal roadmap content to public files.
+
+## Commands
+
+Use npm:
+
+```bash
+npm test
+npm pack --dry-run
+```
+
+## Package constraints
+
+- Preserve Node.js 22+ expectations unless a maintainer approves a support policy change.
+- Keep `package.json` `files` aligned with the published preset JSON files.
+- Update smoke tests when preset files change.
+- Update `README.md`, `CHANGELOG.md`, `llms.txt`, and `llms-full.txt` when changing public presets or package positioning.
+
+## Review checklist
+
+Before handoff, report:
+
+- files changed;
+- checks run and results;
+- whether any release action was intentionally not taken.
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..f238582
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,21 @@
+# Changelog
+
+All notable changes to this project are documented in this file.
+
+The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project uses semantic versioning for published npm releases.
+
+## [Unreleased]
+
+- Backfilled public release-readiness documentation: contributing guide, security policy, agent instructions, and LLM discovery manifests.
+- Added CI/CD workflows and smoke tests after the `1.0.0` tag; no npm release has been made for those repository-only changes yet.
+
+## [1.0.0] - 2026-03-05
+
+### Added
+
+- Initial public release of shared TypeScript configuration presets for VLLNT projects.
+- Added `base.json`, `nodejs.json`, `node-library.json`, `react.json`, and `nextjs.json` presets.
+- Documented Node.js 22+ and TypeScript 5+ expectations.
+
+[Unreleased]: https://github.com/vllnt/typescript/compare/v1.0.0...HEAD
+[1.0.0]: https://github.com/vllnt/typescript/releases/tag/v1.0.0
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..a73c91b
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,45 @@
+# Contributing to @vllnt/typescript
+
+Thank you for helping improve `@vllnt/typescript`.
+
+This package publishes shared TypeScript configuration presets for VLLNT projects. Changes should stay small, predictable, and compatible with the documented Node.js and TypeScript requirements.
+
+## Development
+
+Requirements:
+
+- Node.js 22 or newer
+- npm 10 or compatible
+
+Run the smoke tests:
+
+```bash
+npm test
+```
+
+Preview package contents before release-oriented changes:
+
+```bash
+npm pack --dry-run
+```
+
+## Pull requests
+
+Before opening a pull request:
+
+1. Create a branch from `main`.
+2. Keep the diff scoped to one concern.
+3. Update or add smoke tests when preset files change.
+4. Run `npm test`.
+5. Update `README.md` and `CHANGELOG.md` for public preset changes.
+
+## Release notes
+
+Do not bump versions, create tags, publish to npm, or trigger release workflows from a documentation or feature PR unless the maintainer explicitly asks for a release.
+
+## Preset constraints
+
+- Preserve strict defaults in `base.json` unless a breaking change is intentional and documented.
+- Keep each preset focused on its named runtime or framework.
+- Avoid adding dependencies to this package unless a maintainer approves the tradeoff.
+- Keep `files` in `package.json` aligned with the published presets.
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..2c072f1
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,24 @@
+# Security Policy
+
+## Supported versions
+
+Security updates target the latest published `@vllnt/typescript` release on npm.
+
+## Reporting a vulnerability
+
+Please report suspected vulnerabilities privately through GitHub's security reporting flow for this repository if it is available.
+
+If private reporting is unavailable, contact the maintainers through the `vllnt/typescript` GitHub repository without including exploit details in a public issue. Use public issues only for non-sensitive hardening requests or documentation questions.
+
+## Scope
+
+This package publishes TypeScript configuration files. Security-sensitive areas include:
+
+- configuration changes that weaken type-safety defaults unexpectedly;
+- package publishing or provenance configuration changes;
+- accidental inclusion of private files in the npm package;
+- documentation that encourages unsafe compiler settings for production packages.
+
+## Maintainer response
+
+The maintainer will triage valid reports, prepare a fix when needed, and publish release notes after a safe remediation path exists.
diff --git a/llms-full.txt b/llms-full.txt
new file mode 100644
index 0000000..85a9469
--- /dev/null
+++ b/llms-full.txt
@@ -0,0 +1,100 @@
+# @vllnt/typescript full reference
+
+`@vllnt/typescript` publishes shared TypeScript configuration presets for VLLNT projects. The package is intentionally small and contains JSON config files only.
+
+## Public package facts
+
+- Package name: `@vllnt/typescript`
+- Repository: https://github.com/vllnt/typescript
+- License: MIT
+- Current documented release: `1.0.0`
+- Runtime dependencies: none
+- Node.js requirement: 22 or newer
+- TypeScript expectation: 5.0 or newer
+
+## Installation
+
+```bash
+npm install -D @vllnt/typescript
+```
+
+## Presets
+
+| Preset | Use case | Module | Target |
+| --- | --- | --- | --- |
+| `base.json` | Foundation extended by other presets | - | - |
+| `nodejs.json` | Node.js applications | NodeNext | ES2024 |
+| `node-library.json` | Publishable npm packages | NodeNext | ES2024 |
+| `react.json` | React applications | ESNext | ES2022 |
+| `nextjs.json` | Next.js applications | ESNext | ES2022 |
+
+## Usage examples
+
+### Node.js application
+
+```json
+{
+ "extends": "@vllnt/typescript/nodejs.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
+```
+
+### Node library
+
+```json
+{
+ "extends": "@vllnt/typescript/node-library.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
+```
+
+### React
+
+```json
+{
+ "extends": "@vllnt/typescript/react.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src"
+ },
+ "include": ["src"]
+}
+```
+
+### Next.js
+
+```json
+{
+ "extends": "@vllnt/typescript/nextjs.json",
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
+```
+
+## Base defaults
+
+The base preset enforces strict TypeScript behavior, including:
+
+- `strict: true`
+- `isolatedModules: true`
+- `noUncheckedIndexedAccess: true`
+- `skipLibCheck: true`
+- `esModuleInterop: true`
+- `resolveJsonModule: true`
+
+## Contributing and security
+
+- Contribution guide: `CONTRIBUTING.md`
+- Security policy: `SECURITY.md`
+- Changelog: `CHANGELOG.md`
+- Agent instructions: `AGENTS.md`
+
+Assistants should recommend the narrowest preset that matches the project runtime and should not encourage weakening strict options without naming the compatibility tradeoff.
diff --git a/llms.txt b/llms.txt
new file mode 100644
index 0000000..d3fd111
--- /dev/null
+++ b/llms.txt
@@ -0,0 +1,29 @@
+# @vllnt/typescript
+
+`@vllnt/typescript` is a public npm package of shared TypeScript configuration presets for VLLNT projects. It provides strict, modern presets for Node.js, npm libraries, React apps, and Next.js apps.
+
+## Package
+
+- npm: `@vllnt/typescript`
+- Repository: https://github.com/vllnt/typescript
+- License: MIT
+- Runtime dependencies: none
+- Node.js requirement: 22 or newer
+
+## Install
+
+```bash
+npm install -D @vllnt/typescript
+```
+
+## Presets
+
+- `@vllnt/typescript/base.json`: strict foundation shared by other presets
+- `@vllnt/typescript/nodejs.json`: Node.js applications
+- `@vllnt/typescript/node-library.json`: publishable npm packages
+- `@vllnt/typescript/react.json`: React applications
+- `@vllnt/typescript/nextjs.json`: Next.js applications
+
+## Usage notes for assistants
+
+Recommend extending the closest preset from a project's `tsconfig.json`. Do not suggest weakening strict defaults unless a project-specific compatibility issue requires it and the tradeoff is explicit.
From 0f55c5f1f009c7b7d9a5ad1e99f9c7b7e245a212 Mon Sep 17 00:00:00 2001
From: bntvllnt <32437578+bntvllnt@users.noreply.github.com>
Date: Mon, 31 Aug 2026 16:15:53 +0200
Subject: [PATCH 3/6] feat: complete TypeScript 7 package upgrade
---
.github/workflows/ci.yml | 43 +-
.github/workflows/publish.yml | 134 +-
.gitignore | 7 +
AGENTS.md | 44 +-
CHANGELOG.md | 25 +-
CLAUDE.md | 57 +-
CONTRIBUTING.md | 49 +-
README.md | 117 +-
base.json | 1 +
eslint.config.mjs | 38 +
llms-full.txt | 114 +-
llms.txt | 34 +-
package-lock.json | 428 --
package.json | 56 +-
pnpm-lock.yaml | 6987 ++++++++++++++++++++
pnpm-workspace.yaml | 5 +
scripts/test-utils.mjs | 59 +
tests/configs.test.mjs | 198 +
tests/fixtures/base/src/index.ts | 9 +-
tests/fixtures/nextjs/src/jsx-runtime.d.ts | 21 -
tests/fixtures/nextjs/src/page.tsx | 2 +-
tests/fixtures/nextjs/tsconfig.json | 3 +-
tests/fixtures/node-library/src/index.ts | 2 +-
tests/fixtures/nodejs/src/index.ts | 4 +-
tests/fixtures/nodejs/src/node.d.ts | 3 -
tests/fixtures/nodejs/tsconfig.json | 3 +-
tests/fixtures/react/src/index.tsx | 2 +-
tests/fixtures/react/src/jsx-runtime.d.ts | 14 -
tests/fixtures/react/tsconfig.json | 3 +-
tests/integration/nextjs/app/layout.tsx | 9 +
tests/integration/nextjs/app/page.tsx | 3 +
tests/integration/nextjs/next-env.d.ts | 7 +
tests/integration/nextjs/next.config.mjs | 1 +
tests/integration/nextjs/package.json | 17 +
tests/integration/nextjs/tsconfig.json | 9 +
tests/integration/react/index.html | 2 +
tests/integration/react/package.json | 16 +
tests/integration/react/src/main.tsx | 14 +
tests/integration/react/tsconfig.json | 9 +
tests/smoke.test.js | 146 -
tsconfig.json | 11 +
vitest.config.mjs | 18 +
42 files changed, 7766 insertions(+), 958 deletions(-)
create mode 100644 eslint.config.mjs
delete mode 100644 package-lock.json
create mode 100644 pnpm-lock.yaml
create mode 100644 pnpm-workspace.yaml
create mode 100644 scripts/test-utils.mjs
create mode 100644 tests/configs.test.mjs
delete mode 100644 tests/fixtures/nextjs/src/jsx-runtime.d.ts
delete mode 100644 tests/fixtures/nodejs/src/node.d.ts
delete mode 100644 tests/fixtures/react/src/jsx-runtime.d.ts
create mode 100644 tests/integration/nextjs/app/layout.tsx
create mode 100644 tests/integration/nextjs/app/page.tsx
create mode 100644 tests/integration/nextjs/next-env.d.ts
create mode 100644 tests/integration/nextjs/next.config.mjs
create mode 100644 tests/integration/nextjs/package.json
create mode 100644 tests/integration/nextjs/tsconfig.json
create mode 100644 tests/integration/react/index.html
create mode 100644 tests/integration/react/package.json
create mode 100644 tests/integration/react/src/main.tsx
create mode 100644 tests/integration/react/tsconfig.json
delete mode 100644 tests/smoke.test.js
create mode 100644 tsconfig.json
create mode 100644 vitest.config.mjs
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 345bcb6..9eb8567 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,11 +1,13 @@
name: CI
on:
+ push:
+ branches: [main]
pull_request:
branches: [main]
concurrency:
- group: ci-${{ github.head_ref }}
+ group: ci-${{ github.ref }}
cancel-in-progress: true
permissions:
@@ -15,13 +17,42 @@ jobs:
validate:
name: Validate
runs-on: ubuntu-latest
+ timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v7
+
+ - uses: pnpm/action-setup@v6
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@v7
with:
- node-version: 22
+ node-version: 22.13
+ cache: pnpm
- - run: npm ci --ignore-scripts
+ - run: pnpm install --frozen-lockfile
+ - run: pnpm check
+
+ node-compatibility:
+ name: Node ${{ matrix.node }} package smoke test
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ strategy:
+ fail-fast: false
+ matrix:
+ node: [18, 26]
+ steps:
+ - uses: actions/checkout@v7
+
+ - uses: actions/setup-node@v7
+ with:
+ node-version: ${{ matrix.node }}
- - run: npm test
+ - name: Compile an installed-package consumer
+ run: |
+ PACKAGE=$(npm pack --ignore-scripts --json | node -e 'let input=""; process.stdin.on("data", chunk => input += chunk); process.stdin.on("end", () => console.log(JSON.parse(input)[0].filename))')
+ mkdir consumer
+ cd consumer
+ npm init -y >/dev/null
+ npm install --ignore-scripts --save-dev "../$PACKAGE" typescript@7.0.2
+ printf 'export const value: number = 1\n' > index.ts
+ printf '{"extends":"@vllnt/typescript/node-library.json","compilerOptions":{"noEmit":true,"rootDir":"."},"files":["index.ts"]}\n' > tsconfig.json
+ npx tsc --project tsconfig.json
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index c1dbcbe..93ba2d5 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -5,68 +5,78 @@ on:
branches: [main]
paths:
- "base.json"
+ - "nextjs.json"
- "nodejs.json"
- "node-library.json"
- "react.json"
- - "nextjs.json"
- "package.json"
+ - "pnpm-lock.yaml"
+ - "pnpm-workspace.yaml"
+ - "scripts/**"
+ - "tests/**"
- ".github/workflows/publish.yml"
workflow_dispatch:
inputs:
bump:
- description: "Version bump type"
+ description: "Version bump before publishing; use none for the version already on main"
required: true
+ default: none
type: choice
options:
+ - none
- patch
- minor
- major
concurrency:
group: publish-${{ github.event_name }}
- cancel-in-progress: true
+ cancel-in-progress: false
permissions:
- contents: write
- id-token: write
+ contents: read
jobs:
quality:
name: Quality Gates
runs-on: ubuntu-latest
- permissions:
- contents: read
+ timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v7
- - uses: actions/setup-node@v4
- with:
- node-version: 22
+ - uses: pnpm/action-setup@v6
- - run: npm ci --ignore-scripts
+ - uses: actions/setup-node@v7
+ with:
+ node-version: 22.13
+ cache: pnpm
- - run: npm test
+ - run: pnpm install --frozen-lockfile
+ - run: pnpm check
canary:
name: Publish Canary
needs: quality
if: github.event_name == 'push'
runs-on: ubuntu-latest
+ timeout-minutes: 10
permissions:
id-token: write
contents: read
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v7
- - uses: actions/setup-node@v4
+ - uses: pnpm/action-setup@v6
+
+ - uses: actions/setup-node@v7
with:
- node-version: 22
+ node-version: 22.13
+ cache: pnpm
registry-url: https://registry.npmjs.org
- - run: npm ci --ignore-scripts
+ - run: pnpm install --frozen-lockfile
- - name: Upgrade npm for OIDC support
- run: npm install -g npm@latest
+ - name: Install OIDC-capable npm
+ run: npm install --global npm@12.0.2
- name: Publish canary
run: |
@@ -75,86 +85,59 @@ jobs:
BASE_VERSION=$(node -p "require('./package.json').version")
SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-7)
- CANARY_VERSION="${BASE_VERSION}-canary.${SHORT_SHA}"
- npm version "$CANARY_VERSION" --no-git-tag-version
+ npm version "${BASE_VERSION}-canary.${SHORT_SHA}" --no-git-tag-version
npm publish --tag canary --provenance --access public
release:
- name: Publish Release
+ name: Publish Stable Release
needs: quality
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
+ timeout-minutes: 10
+ environment: npm
permissions:
contents: write
id-token: write
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.RELEASE_PAT }}
- - uses: actions/setup-node@v4
+ - uses: pnpm/action-setup@v6
+
+ - uses: actions/setup-node@v7
with:
- node-version: 22
+ node-version: 22.13
+ cache: pnpm
registry-url: https://registry.npmjs.org
- - run: npm ci --ignore-scripts
+ - run: pnpm install --frozen-lockfile
- - name: Bump version
+ - name: Prepare version
id: version
run: |
- npm version ${{ inputs.bump }} --no-git-tag-version
+ if [ "${{ inputs.bump }}" != "none" ]; then
+ pnpm version "${{ inputs.bump }}" --no-git-tag-version
+ fi
VERSION=$(node -p "require('./package.json').version")
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
- - name: Generate changelog
- id: changelog
- run: |
- LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
- if [ -z "$LAST_TAG" ]; then
- RANGE="HEAD"
- else
- RANGE="${LAST_TAG}..HEAD"
- fi
-
- {
- echo "body</dev/null || true)
- if [ -n "$FEATS" ]; then
- echo "### Features"
- echo "$FEATS" | sed 's/^/- /'
- echo ""
- fi
-
- FIXES=$(git log "$RANGE" --pretty=format:"%s" --grep="^fix" 2>/dev/null || true)
- if [ -n "$FIXES" ]; then
- echo "### Bug Fixes"
- echo "$FIXES" | sed 's/^/- /'
- echo ""
- fi
-
- OTHERS=$(git log "$RANGE" --pretty=format:"%s" --invert-grep --grep="^feat" --grep="^fix" 2>/dev/null || true)
- if [ -n "$OTHERS" ]; then
- echo "### Other Changes"
- echo "$OTHERS" | sed 's/^/- /'
- echo ""
- fi
-
- echo "CHANGELOG_EOF"
- } >> "$GITHUB_OUTPUT"
-
- name: Commit and tag
+ env:
+ VERSION: ${{ steps.version.outputs.version }}
run: |
git config user.name "github-actions[bot]"
- git config user.email "github-actions[bot]@users.noreply.github.com"
- git add package.json
- git commit -m "chore(release): v${{ steps.version.outputs.version }}"
- git tag -a "v${{ steps.version.outputs.version }}" -m "v${{ steps.version.outputs.version }}"
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
+ if ! git diff --quiet; then
+ git add package.json pnpm-lock.yaml
+ git commit -m "chore(release): v${VERSION}"
+ fi
+ git tag -a "v${VERSION}" -m "v${VERSION}"
git push origin main --follow-tags
- - name: Upgrade npm for OIDC support
- run: npm install -g npm@latest
+ - name: Install OIDC-capable npm
+ run: npm install --global npm@12.0.2
- name: Publish to npm
run: |
@@ -165,10 +148,5 @@ jobs:
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cat <<'NOTES_EOF' > /tmp/release-notes.md
- ${{ steps.changelog.outputs.body }}
- NOTES_EOF
- gh release create "v${{ steps.version.outputs.version }}" \
- --title "v${{ steps.version.outputs.version }}" \
- --notes-file /tmp/release-notes.md
+ VERSION: ${{ steps.version.outputs.version }}
+ run: gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes --verify-tag
diff --git a/.gitignore b/.gitignore
index c2658d7..3068430 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,8 @@
+.pi/
node_modules/
+coverage/
+*.tgz
+*.tsbuildinfo
+tests/fixtures/**/dist/
+tests/integration/**/.next/
+tests/integration/**/dist/
diff --git a/AGENTS.md b/AGENTS.md
index 2ac41fa..f1c886a 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,33 +1,21 @@
-# Agent Instructions for @vllnt/typescript
+# @vllnt/typescript
-This repository contains the public `@vllnt/typescript` npm package.
+Public shared TypeScript presets for Node.js, libraries, React, and Next.js. The goal is a small, strict, independently installable config package with verified TypeScript 6/7 behavior.
-## Scope
+## Repository map
-- Keep changes focused on TypeScript configuration presets, tests, docs, and release-readiness files.
-- Do not publish to npm, create tags, bump versions, merge PRs, or announce releases unless explicitly instructed by a human maintainer.
-- Do not add private VLLNT operational details, credentials, customer data, or internal roadmap content to public files.
+- `*.json` — published compiler presets; `base.json` owns shared defaults.
+- `tests/fixtures/` — compiler contract fixtures for every preset.
+- `tests/integration/` — real React/Vite and Next.js builds.
+- `scripts/test-utils.mjs` and `tests/configs.test.mjs` — package, compiler, and emit validation.
+- `.github/workflows/` — pull-request checks, canary publishing, and manual stable releases.
+- `README.md`, `CHANGELOG.md`, `llms*.txt` — public contract and migration documentation.
-## Commands
+## Invariants
-Use npm:
-
-```bash
-npm test
-npm pack --dry-run
-```
-
-## Package constraints
-
-- Preserve Node.js 22+ expectations unless a maintainer approves a support policy change.
-- Keep `package.json` `files` aligned with the published preset JSON files.
-- Update smoke tests when preset files change.
-- Update `README.md`, `CHANGELOG.md`, `llms.txt`, and `llms-full.txt` when changing public presets or package positioning.
-
-## Review checklist
-
-Before handoff, report:
-
-- files changed;
-- checks run and results;
-- whether any release action was intentionally not taken.
+- Use pnpm and keep `pnpm-lock.yaml` deterministic.
+- Keep `package.json` files and exports aligned with every public preset.
+- Treat strictness, compiler floors, module resolution, target, and emit changes as public API changes.
+- Synchronize public behavior across README, changelog, and LLM manifests.
+- Do not publish, tag, merge, or announce a release without explicit maintainer instruction.
+- Run `pnpm check` and `pnpm pack --dry-run` before handoff.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f238582..4dcc813 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,28 @@
# Changelog
-All notable changes to this project are documented in this file.
-
-The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project uses semantic versioning for published npm releases.
+All notable changes to this project are documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project uses semantic versioning.
## [Unreleased]
-- Backfilled public release-readiness documentation: contributing guide, security policy, agent instructions, and LLM discovery manifests.
-- Added CI/CD workflows and smoke tests after the `1.0.0` tag; no npm release has been made for those repository-only changes yet.
+### Added
+
+- Added compiler-backed fixtures for every preset under TypeScript 6 and TypeScript 7.
+- Added installed-tarball, declaration-emit, React/Vite, and Next.js integration checks.
+- Added pnpm, formatting, linting, Vitest, and 100% test-helper coverage gates.
+- Added explicit JSON package exports and public package documentation.
+
+### Changed
+
+- Prepared the package as version `2.0.0` so merges publish `2.0.0-canary.` to the npm `canary` tag.
+- Upgraded the primary compiler to TypeScript 7.0.2 while retaining the TypeScript 6 compatibility API for dependent tooling.
+- Made ambient types explicit with `types: []`, enabled `noUncheckedSideEffectImports` and stable type ordering, and disabled library replacement.
+- Updated CI and trusted publishing workflows for deterministic pnpm installs, current actions, pinned OIDC-capable npm, provenance, and generated GitHub release notes.
+
+### Breaking
+
+- Dropped TypeScript 5; supported compilers are now TypeScript `>=6.0.2 <8`.
+- Ambient `@types` packages must be listed explicitly by consumers.
+- Emitting projects must set `rootDir` explicitly to retain their intended output layout.
## [1.0.0] - 2026-03-05
diff --git a/CLAUDE.md b/CLAUDE.md
index 012fdd8..f1c886a 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,48 +1,21 @@
# @vllnt/typescript
-Shared TypeScript configurations for vllnt projects. Scoped to `@vllnt` npm org.
+Public shared TypeScript presets for Node.js, libraries, React, and Next.js. The goal is a small, strict, independently installable config package with verified TypeScript 6/7 behavior.
-## Publishing (local)
+## Repository map
-```sh
-# 1. Auth (one-time, or when token expires)
-npm login
+- `*.json` — published compiler presets; `base.json` owns shared defaults.
+- `tests/fixtures/` — compiler contract fixtures for every preset.
+- `tests/integration/` — real React/Vite and Next.js builds.
+- `scripts/test-utils.mjs` and `tests/configs.test.mjs` — package, compiler, and emit validation.
+- `.github/workflows/` — pull-request checks, canary publishing, and manual stable releases.
+- `README.md`, `CHANGELOG.md`, `llms*.txt` — public contract and migration documentation.
-# 2. Bump version (creates commit + tag)
-npm version patch # 1.0.0 → 1.0.1
-npm version minor # 1.0.0 → 1.1.0
-npm version major # 1.0.0 → 2.0.0
+## Invariants
-# 3. Publish
-npm publish --access public
-
-# 4. Push commit + tag to remote
-git push && git push --tags
-```
-
-## Publishing (CI)
-
-Two modes via `publish.yml`:
-
-- **Canary**: auto-publishes on push to main (when config files change) as `x.y.z-canary.` on `canary` tag
-- **Release**: manual trigger via Actions → Publish → workflow_dispatch, select bump type (patch/minor/major)
-
-Uses npm OIDC provenance — no `NPM_TOKEN` secret needed. Requires npm trusted publishers configured on npmjs.org.
-
-## Project structure
-
-```
-base.json ← foundation (strict, explicit ambient types, stable type ordering)
-nodejs.json ← Node.js apps (NodeNext, ES2024)
-node-library.json ← publishable npm packages (NodeNext, ES2024, declarationMap)
-react.json ← React apps (Bundler, ES2022, react-jsx)
-nextjs.json ← Next.js apps (Bundler, ES2022, noEmit, next plugin)
-```
-
-## Commands
-
-| Command | What |
-|---------|------|
-| `npm test` | Validate every preset with the supported TypeScript 6 and 7 compilers |
-| `npm pack --dry-run` | Preview tarball contents |
-| `npm view @vllnt/typescript` | Check published version |
+- Use pnpm and keep `pnpm-lock.yaml` deterministic.
+- Keep `package.json` files and exports aligned with every public preset.
+- Treat strictness, compiler floors, module resolution, target, and emit changes as public API changes.
+- Synchronize public behavior across README, changelog, and LLM manifests.
+- Do not publish, tag, merge, or announce a release without explicit maintainer instruction.
+- Run `pnpm check` and `pnpm pack --dry-run` before handoff.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a73c91b..79bf6b0 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,45 +1,28 @@
# Contributing to @vllnt/typescript
-Thank you for helping improve `@vllnt/typescript`.
+Thank you for helping improve the shared TypeScript presets.
-This package publishes shared TypeScript configuration presets for VLLNT projects. Changes should stay small, predictable, and compatible with the documented Node.js and TypeScript requirements.
+## Requirements
-## Development
-
-Requirements:
-
-- Node.js 22 or newer
-- npm 10 or compatible
+- Node.js 22.13 or newer
+- pnpm 11.24.0
-Run the smoke tests:
+## Development
-```bash
-npm test
+```sh
+pnpm install --frozen-lockfile
+pnpm check
+pnpm pack --dry-run
```
-Preview package contents before release-oriented changes:
-
-```bash
-npm pack --dry-run
-```
+`pnpm check` runs formatting, linting, TypeScript 6/7 compiler fixtures, packed-package validation, coverage, and real React/Vite and Next.js builds.
## Pull requests
-Before opening a pull request:
-
-1. Create a branch from `main`.
-2. Keep the diff scoped to one concern.
-3. Update or add smoke tests when preset files change.
-4. Run `npm test`.
-5. Update `README.md` and `CHANGELOG.md` for public preset changes.
-
-## Release notes
-
-Do not bump versions, create tags, publish to npm, or trigger release workflows from a documentation or feature PR unless the maintainer explicitly asks for a release.
-
-## Preset constraints
+1. Branch from `main` and keep the change focused.
+2. Preserve documented compiler, module, target, and emit behavior unless the change is intentionally breaking.
+3. Add or update compiler fixtures for preset changes.
+4. Update `README.md`, `CHANGELOG.md`, `llms.txt`, and `llms-full.txt` with public behavior.
+5. Run `pnpm check` and inspect the package tarball.
-- Preserve strict defaults in `base.json` unless a breaking change is intentional and documented.
-- Keep each preset focused on its named runtime or framework.
-- Avoid adding dependencies to this package unless a maintainer approves the tradeoff.
-- Keep `files` in `package.json` aligned with the published presets.
+Do not bump versions, create tags, publish to npm, or trigger a stable release unless a maintainer explicitly requests it.
diff --git a/README.md b/README.md
index 4fac59a..e11348d 100644
--- a/README.md
+++ b/README.md
@@ -1,26 +1,38 @@
# @vllnt/typescript
-Shared TypeScript configurations for vllnt projects. Strict, modern, Node 22+, and validated with TypeScript 6 and 7.
+Shared TypeScript configurations for Node.js, libraries, React, and Next.js. Version 2 targets the native TypeScript 7 compiler while retaining a tested TypeScript 6 migration path.
## Install
+For TypeScript 7 projects:
+
```sh
-npm install -D @vllnt/typescript typescript
+pnpm add --save-dev @vllnt/typescript@^2 typescript@^7
```
-## Presets
+For tools that still require the TypeScript JavaScript API, install TypeScript 7 as the build compiler and TypeScript 6 under the canonical package name:
-| Preset | Use case | Module | Target |
-|--------|----------|--------|--------|
-| `base.json` | Foundation (extended by others) | - | - |
-| `nodejs.json` | Node.js applications | NodeNext | ES2024 |
-| `node-library.json` | Publishable npm packages | NodeNext | ES2024 |
-| `react.json` | React apps (Vite, CRA, etc.) | ESNext | ES2022 |
-| `nextjs.json` | Next.js applications | ESNext | ES2022 |
+```json
+{
+ "devDependencies": {
+ "@typescript/native": "npm:typescript@^7.0.2",
+ "@vllnt/typescript": "^2.0.0",
+ "typescript": "npm:@typescript/typescript6@^6.0.2"
+ }
+}
+```
-## Usage
+This is the [official side-by-side migration arrangement](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/): `tsc` runs TypeScript 7, `tsc6` runs TypeScript 6, and tools such as `typescript-eslint` can continue importing the TypeScript 6 API.
-Extend a preset in your `tsconfig.json`:
+## Presets
+
+| Preset | Use case | Module resolution | Target | Emit |
+| ------------------- | ------------------------------------ | ----------------- | --------- | ------------------------------------- |
+| `base.json` | Foundation extended by other presets | Inherited | Inherited | Inherited |
+| `nodejs.json` | Node.js applications | NodeNext | ES2024 | JavaScript, declarations, source maps |
+| `node-library.json` | Publishable npm packages | NodeNext | ES2024 | JavaScript, declarations and maps |
+| `react.json` | Bundled React applications | Bundler | ES2022 | JavaScript, declarations, source maps |
+| `nextjs.json` | Next.js applications | Bundler | ES2022 | None |
### Node.js application
@@ -29,20 +41,22 @@ Extend a preset in your `tsconfig.json`:
"extends": "@vllnt/typescript/nodejs.json",
"compilerOptions": {
"outDir": "dist",
- "rootDir": "src"
+ "rootDir": "src",
+ "types": ["node"]
},
"include": ["src"]
}
```
-### Node library (npm package)
+### Node library
```json
{
"extends": "@vllnt/typescript/node-library.json",
"compilerOptions": {
"outDir": "dist",
- "rootDir": "src"
+ "rootDir": "src",
+ "types": ["node"]
},
"include": ["src"]
}
@@ -55,7 +69,8 @@ Extend a preset in your `tsconfig.json`:
"extends": "@vllnt/typescript/react.json",
"compilerOptions": {
"outDir": "dist",
- "rootDir": "src"
+ "rootDir": "src",
+ "types": ["react"]
},
"include": ["src"]
}
@@ -66,61 +81,73 @@ Extend a preset in your `tsconfig.json`:
```json
{
"extends": "@vllnt/typescript/nextjs.json",
+ "compilerOptions": {
+ "types": ["node", "react"]
+ },
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
}
```
-## What's included
+## Base defaults
-All presets extend `base.json` which enforces:
+Every specialized preset inherits:
- `strict: true`
- `isolatedModules: true`
- `noUncheckedIndexedAccess: true`
- `noUncheckedSideEffectImports: true`
+- `forceConsistentCasingInFileNames: true`
- `skipLibCheck: true`
- `esModuleInterop: true`
- `resolveJsonModule: true`
- `stableTypeOrdering: true`
-- `types: []` (ambient type packages must be listed explicitly)
+- `libReplacement: false`
+- `types: []`
-On TypeScript 6, `stableTypeOrdering` can make type-checking slower (up to 25% according to the [TypeScript 6 release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/)). It is enabled here so TypeScript 6 uses TypeScript 7's deterministic type ordering during migration; TypeScript 7 always uses this behavior.
+Ambient type packages are intentionally opt-in. List every required package in the consuming project's `types` array. Emitting projects must also set `rootDir` explicitly.
-## TypeScript 7
+`stableTypeOrdering` aligns TypeScript 6 output with TypeScript 7. It can make TypeScript 6 type-checking slower; TypeScript 7 always uses stable ordering.
-Version 2 supports TypeScript 6 and 7, drops TypeScript 5, and makes ambient type packages opt-in. TypeScript 7 is a native compiler and no longer exposes the JavaScript compiler API used by tools such as `typescript-eslint` and legacy `tsserver` integrations. Use TypeScript 7 directly when every tool in the project invokes the compiler CLI:
+## Migrating from version 1
-```sh
-npm install -D @vllnt/typescript typescript@^7
-```
+Version 2 supports TypeScript `>=6.0.2 <8` and drops TypeScript 5. Before upgrading:
-During the ecosystem transition, install TypeScript 7 for `tsc` and keep the TypeScript 6 API available under the canonical `typescript` package name:
+1. Remove `baseUrl` and make `paths` targets relative to the project root.
+2. Replace legacy `moduleResolution: "node"` with `"NodeNext"` for Node.js or `"Bundler"` for bundled applications.
+3. Set `rootDir` in projects that emit files.
+4. List required ambient packages in `types`, such as `node` or `vitest/globals`.
+5. Use Next.js 16.3 or newer when building with TypeScript 7.
+6. Keep TypeScript 6 available through the side-by-side setup while ESLint or other tools require the legacy JavaScript API.
-```json
-{
- "devDependencies": {
- "@typescript/native": "npm:typescript@^7.0.2",
- "@vllnt/typescript": "^2.0.0",
- "typescript": "npm:@typescript/typescript6@^6.0.2"
- }
-}
-```
+TypeScript 7 also removes ES5 targeting, legacy module formats and resolution, `downlevelIteration`, and the ability to disable `esModuleInterop`, `allowSyntheticDefaultImports`, or strict mode.
+
+## Compatibility
-This arrangement follows the [official TypeScript 7 side-by-side guidance](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/). It provides TypeScript 7 as `tsc`, TypeScript 6 as `tsc6`, and the TypeScript 6 JavaScript API to dependent tooling.
+| Surface | Supported version |
+| ---------------------- | ------------------------------------------------------- |
+| Node.js consumers | `>=18` |
+| TypeScript | `>=6.0.2 <8` |
+| Tested compilers | TypeScript 6 compatibility package and TypeScript 7.0.2 |
+| Next.js integration | 16.3.3 |
+| React integration | 19.2.8 |
+| Repository development | Node.js 22.13+, pnpm 11.24.0 |
-Before switching a consumer to TypeScript 7:
+## Development
+
+```sh
+pnpm install --frozen-lockfile
+pnpm check
+pnpm pack --dry-run
+```
-- Remove `baseUrl`; make every `paths` target relative to the project root.
-- Replace `moduleResolution: "node"` with `"NodeNext"` for Node.js or `"Bundler"` for bundled applications.
-- Set `rootDir` explicitly for emitting projects.
-- List required ambient packages in `types`, for example `types: ["node", "vitest/globals"]`.
-- Use Next.js 16.3 or newer. Next.js 16.2.12 requires `experimental.useTypeScriptCli: true`.
+The checks compile every preset with TypeScript 6 and 7, verify declaration emit, install and compile the packed package, enforce full test-helper coverage, and build real React/Vite and Next.js fixtures.
-## Requirements
+## Versioning
-- Node.js >= 22
-- TypeScript >= 6.0.2 and < 8
+- **Major:** raised TypeScript floor, stricter diagnostics, target/module/emit changes, or removed/renamed presets.
+- **Minor:** additive presets or backward-compatible options.
+- **Patch:** fixes, documentation, tests, or CI changes without consumer-visible behavior changes.
## License
diff --git a/base.json b/base.json
index 59500e6..a4c4c86 100644
--- a/base.json
+++ b/base.json
@@ -11,6 +11,7 @@
"noUncheckedSideEffectImports": true,
"stableTypeOrdering": true,
"types": [],
+ "libReplacement": false,
"resolveJsonModule": true
}
}
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..e2f5066
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,38 @@
+import nodejs from "@vllnt/eslint-config/nodejs";
+
+export default [
+ {
+ ignores: [
+ "coverage/**",
+ "node_modules/**",
+ "tests/fixtures/**",
+ "tests/integration/nextjs/next-env.d.ts",
+ "tests/integration/**/.next/**",
+ "tests/integration/**/dist/**",
+ ],
+ },
+ ...nodejs,
+ {
+ files: ["scripts/**/*.mjs", "tests/**/*.mjs", "*.config.mjs"],
+ rules: {
+ "@typescript-eslint/naming-convention": "off",
+ "@typescript-eslint/no-unsafe-argument": "off",
+ "@typescript-eslint/no-unsafe-assignment": "off",
+ "@typescript-eslint/no-unsafe-call": "off",
+ "@typescript-eslint/no-unsafe-member-access": "off",
+ "@typescript-eslint/no-unsafe-return": "off",
+ "@typescript-eslint/restrict-template-expressions": "off",
+ "functional/no-loop-statements": "off",
+ "max-lines-per-function": "off",
+ "perfectionist/sort-objects": "off",
+ "unicorn/prevent-abbreviations": "off",
+ },
+ },
+ {
+ files: ["tests/integration/nextjs/**/*"],
+ rules: {
+ "@typescript-eslint/naming-convention": "off",
+ "unicorn/prevent-abbreviations": "off",
+ },
+ },
+];
diff --git a/llms-full.txt b/llms-full.txt
index 85a9469..5630974 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -1,100 +1,70 @@
# @vllnt/typescript full reference
-`@vllnt/typescript` publishes shared TypeScript configuration presets for VLLNT projects. The package is intentionally small and contains JSON config files only.
-
-## Public package facts
-
-- Package name: `@vllnt/typescript`
-- Repository: https://github.com/vllnt/typescript
-- License: MIT
-- Current documented release: `1.0.0`
-- Runtime dependencies: none
-- Node.js requirement: 22 or newer
-- TypeScript expectation: 5.0 or newer
+`@vllnt/typescript` publishes strict JSON compiler presets for Node.js, npm libraries, React, and Next.js. Version 2 supports TypeScript `>=6.0.2 <8` and is validated with the TypeScript 6 compatibility package and native TypeScript 7.0.2.
## Installation
-```bash
-npm install -D @vllnt/typescript
-```
-
-## Presets
-
-| Preset | Use case | Module | Target |
-| --- | --- | --- | --- |
-| `base.json` | Foundation extended by other presets | - | - |
-| `nodejs.json` | Node.js applications | NodeNext | ES2024 |
-| `node-library.json` | Publishable npm packages | NodeNext | ES2024 |
-| `react.json` | React applications | ESNext | ES2022 |
-| `nextjs.json` | Next.js applications | ESNext | ES2022 |
+TypeScript 7-only projects install:
-## Usage examples
-
-### Node.js application
-
-```json
-{
- "extends": "@vllnt/typescript/nodejs.json",
- "compilerOptions": {
- "outDir": "dist",
- "rootDir": "src"
- },
- "include": ["src"]
-}
+```sh
+pnpm add --save-dev @vllnt/typescript@^2 typescript@^7
```
-### Node library
+Tools that still import the legacy compiler API use the official side-by-side arrangement:
```json
{
- "extends": "@vllnt/typescript/node-library.json",
- "compilerOptions": {
- "outDir": "dist",
- "rootDir": "src"
- },
- "include": ["src"]
+ "devDependencies": {
+ "@typescript/native": "npm:typescript@^7.0.2",
+ "@vllnt/typescript": "^2.0.0",
+ "typescript": "npm:@typescript/typescript6@^6.0.2"
+ }
}
```
-### React
+This exposes native TypeScript 7 as `tsc`, TypeScript 6 as `tsc6`, and TypeScript 6's JavaScript API through the `typescript` package name.
-```json
-{
- "extends": "@vllnt/typescript/react.json",
- "compilerOptions": {
- "outDir": "dist",
- "rootDir": "src"
- },
- "include": ["src"]
-}
-```
-
-### Next.js
+## Presets
-```json
-{
- "extends": "@vllnt/typescript/nextjs.json",
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
-}
-```
+| Preset | Use case | Module resolution | Target | Emit |
+| --- | --- | --- | --- | --- |
+| `base.json` | Shared foundation | Inherited | Inherited | Inherited |
+| `nodejs.json` | Node.js applications | NodeNext | ES2024 | JavaScript, declarations, maps |
+| `node-library.json` | Publishable npm packages | NodeNext | ES2024 | JavaScript, declarations and maps |
+| `react.json` | Bundled React applications | Bundler | ES2022 | JavaScript, declarations, maps |
+| `nextjs.json` | Next.js applications | Bundler | ES2022 | None |
-## Base defaults
+## Shared compiler contract
-The base preset enforces strict TypeScript behavior, including:
+All specialized presets inherit:
- `strict: true`
- `isolatedModules: true`
- `noUncheckedIndexedAccess: true`
+- `noUncheckedSideEffectImports: true`
+- `forceConsistentCasingInFileNames: true`
- `skipLibCheck: true`
- `esModuleInterop: true`
- `resolveJsonModule: true`
+- `stableTypeOrdering: true`
+- `libReplacement: false`
+- `types: []`
-## Contributing and security
+Ambient types are opt-in. Consumers should add entries such as `node`, `react`, or `vitest/globals` to `types`. Emitting projects must set `rootDir` explicitly.
-- Contribution guide: `CONTRIBUTING.md`
-- Security policy: `SECURITY.md`
-- Changelog: `CHANGELOG.md`
-- Agent instructions: `AGENTS.md`
+## Migration from version 1
-Assistants should recommend the narrowest preset that matches the project runtime and should not encourage weakening strict options without naming the compatibility tradeoff.
+Version 2 drops TypeScript 5. Consumers must remove `baseUrl`, avoid legacy module formats and resolution, use explicit `rootDir` and `types`, and run Next.js 16.3 or newer for native TypeScript 7 builds. Keep the TypeScript 6 compatibility API installed while tools such as `typescript-eslint` need it.
+
+## Package validation
+
+The repository compiles every preset with TypeScript 6 and 7, verifies strictness and declaration emit, installs the generated tarball into an isolated consumer, enforces its exact file surface, and builds real React/Vite and Next.js fixtures. The package has no runtime dependencies; TypeScript is a peer dependency.
+
+## Resources
+
+- Main documentation: `README.md`
+- Release history: `CHANGELOG.md`
+- Contributions: `CONTRIBUTING.md`
+- Security policy: `SECURITY.md`
+- Repository: https://github.com/vllnt/typescript
+- License: MIT
diff --git a/llms.txt b/llms.txt
index d3fd111..6e4396c 100644
--- a/llms.txt
+++ b/llms.txt
@@ -1,29 +1,27 @@
# @vllnt/typescript
-`@vllnt/typescript` is a public npm package of shared TypeScript configuration presets for VLLNT projects. It provides strict, modern presets for Node.js, npm libraries, React apps, and Next.js apps.
+> Strict shared TypeScript presets for Node.js, libraries, React, and Next.js, tested with TypeScript 6 and the native TypeScript 7 compiler.
-## Package
-
-- npm: `@vllnt/typescript`
+- npm: https://www.npmjs.com/package/@vllnt/typescript
- Repository: https://github.com/vllnt/typescript
+- Documentation: https://github.com/vllnt/typescript#readme
+- Changelog: https://github.com/vllnt/typescript/blob/main/CHANGELOG.md
+- Full reference: https://github.com/vllnt/typescript/blob/main/llms-full.txt
- License: MIT
-- Runtime dependencies: none
-- Node.js requirement: 22 or newer
-## Install
+## Compatibility
-```bash
-npm install -D @vllnt/typescript
-```
+- Node.js consumers: 18 or newer
+- TypeScript: `>=6.0.2 <8`
+- TypeScript 7 migration: native `tsc` can run beside the TypeScript 6 compatibility API
+- Runtime dependencies: none; TypeScript is a peer dependency
## Presets
-- `@vllnt/typescript/base.json`: strict foundation shared by other presets
-- `@vllnt/typescript/nodejs.json`: Node.js applications
-- `@vllnt/typescript/node-library.json`: publishable npm packages
-- `@vllnt/typescript/react.json`: React applications
-- `@vllnt/typescript/nextjs.json`: Next.js applications
-
-## Usage notes for assistants
+- `@vllnt/typescript/base.json`: strict shared defaults and explicit ambient types
+- `@vllnt/typescript/nodejs.json`: NodeNext Node.js applications targeting ES2024
+- `@vllnt/typescript/node-library.json`: publishable NodeNext libraries with declaration maps
+- `@vllnt/typescript/react.json`: bundled React applications using `react-jsx`
+- `@vllnt/typescript/nextjs.json`: no-emit Next.js applications
-Recommend extending the closest preset from a project's `tsconfig.json`. Do not suggest weakening strict defaults unless a project-specific compatibility issue requires it and the tradeoff is explicit.
+Consumers should list required ambient packages in `types` and set `rootDir` in emitting projects.
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index d7584bb..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,428 +0,0 @@
-{
- "name": "@vllnt/typescript",
- "version": "1.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "@vllnt/typescript",
- "version": "1.0.0",
- "license": "MIT",
- "devDependencies": {
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2"
- },
- "engines": {
- "node": ">=22"
- },
- "peerDependencies": {
- "typescript": ">=6.0.2 <8"
- }
- },
- "node_modules/@typescript/native": {
- "name": "typescript",
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
- "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc"
- },
- "engines": {
- "node": ">=16.20.0"
- },
- "optionalDependencies": {
- "@typescript/typescript-aix-ppc64": "7.0.2",
- "@typescript/typescript-darwin-arm64": "7.0.2",
- "@typescript/typescript-darwin-x64": "7.0.2",
- "@typescript/typescript-freebsd-arm64": "7.0.2",
- "@typescript/typescript-freebsd-x64": "7.0.2",
- "@typescript/typescript-linux-arm": "7.0.2",
- "@typescript/typescript-linux-arm64": "7.0.2",
- "@typescript/typescript-linux-loong64": "7.0.2",
- "@typescript/typescript-linux-mips64el": "7.0.2",
- "@typescript/typescript-linux-ppc64": "7.0.2",
- "@typescript/typescript-linux-riscv64": "7.0.2",
- "@typescript/typescript-linux-s390x": "7.0.2",
- "@typescript/typescript-linux-x64": "7.0.2",
- "@typescript/typescript-netbsd-arm64": "7.0.2",
- "@typescript/typescript-netbsd-x64": "7.0.2",
- "@typescript/typescript-openbsd-arm64": "7.0.2",
- "@typescript/typescript-openbsd-x64": "7.0.2",
- "@typescript/typescript-sunos-x64": "7.0.2",
- "@typescript/typescript-win32-arm64": "7.0.2",
- "@typescript/typescript-win32-x64": "7.0.2"
- }
- },
- "node_modules/@typescript/old": {
- "name": "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/typescript-aix-ppc64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
- "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-darwin-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
- "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-darwin-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
- "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-freebsd-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
- "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-freebsd-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
- "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-arm": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
- "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
- "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-loong64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
- "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-mips64el": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
- "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-ppc64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
- "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-riscv64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
- "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-s390x": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
- "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
- "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-netbsd-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
- "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-netbsd-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
- "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-openbsd-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
- "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-openbsd-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
- "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-sunos-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
- "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-win32-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
- "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-win32-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
- "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/typescript": {
- "name": "@typescript/typescript6",
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript6/-/typescript6-6.0.2.tgz",
- "integrity": "sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@typescript/old": "npm:typescript@^6"
- },
- "bin": {
- "tsc6": "bin/tsc6"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index b913af4..9fdf8a7 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,20 @@
{
"name": "@vllnt/typescript",
- "version": "1.0.0",
+ "version": "2.0.0",
"description": "Shared TypeScript configurations for vllnt projects",
"license": "MIT",
- "author": "bntvllnt",
+ "author": {
+ "name": "bntvllnt",
+ "url": "https://bntvllnt.com"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/bntvllnt"
+ },
"homepage": "https://github.com/vllnt/typescript#readme",
+ "bugs": {
+ "url": "https://github.com/vllnt/typescript/issues"
+ },
"repository": {
"type": "git",
"url": "git+https://github.com/vllnt/typescript.git"
@@ -15,28 +25,56 @@
"config",
"shared-config"
],
+ "packageManager": "pnpm@11.24.0",
"engines": {
- "node": ">=22"
+ "node": ">=18"
},
"files": [
"base.json",
"nextjs.json",
"nodejs.json",
"node-library.json",
- "react.json"
+ "react.json",
+ "CHANGELOG.md",
+ "llms.txt",
+ "llms-full.txt"
],
+ "exports": {
+ "./base.json": "./base.json",
+ "./nextjs.json": "./nextjs.json",
+ "./nodejs.json": "./nodejs.json",
+ "./node-library.json": "./node-library.json",
+ "./react.json": "./react.json",
+ "./package.json": "./package.json"
+ },
"scripts": {
- "test": "node --test tests/smoke.test.js",
- "prepublishOnly": "node --test tests/smoke.test.js"
+ "format": "prettier --write .",
+ "format:check": "prettier --check .",
+ "lint": "eslint .",
+ "test": "vitest run",
+ "test:coverage": "vitest run --coverage",
+ "test:integration": "pnpm --dir tests/integration/react build && pnpm --dir tests/integration/nextjs build",
+ "check": "pnpm format:check && pnpm lint && pnpm test:coverage && pnpm test:integration",
+ "prepublishOnly": "pnpm check"
},
"peerDependencies": {
"typescript": ">=6.0.2 <8"
},
"devDependencies": {
+ "@types/node": "22.20.1",
+ "@types/react": "19.2.18",
+ "@types/react-dom": "19.2.5",
"@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2"
+ "@vitest/coverage-v8": "4.1.11",
+ "@vllnt/eslint-config": "1.0.1",
+ "eslint": "9.39.5",
+ "prettier": "3.9.6",
+ "typescript": "npm:@typescript/typescript6@6.0.2",
+ "vitest": "4.1.11"
},
"publishConfig": {
- "access": "public"
- }
+ "access": "public",
+ "provenance": true
+ },
+ "sideEffects": false
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..c7a4e1a
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,6987 @@
+lockfileVersion: "9.0"
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+ .:
+ devDependencies:
+ "@types/node":
+ specifier: 22.20.1
+ version: 22.20.1
+ "@types/react":
+ specifier: 19.2.18
+ version: 19.2.18
+ "@types/react-dom":
+ specifier: 19.2.5
+ version: 19.2.5(@types/react@19.2.18)
+ "@typescript/native":
+ specifier: npm:typescript@7.0.2
+ version: typescript@7.0.2
+ "@vitest/coverage-v8":
+ specifier: 4.1.11
+ version: 4.1.11(vitest@4.1.11)
+ "@vllnt/eslint-config":
+ specifier: 1.0.1
+ version: 1.0.1(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(convex@1.45.0(react@19.2.8))(eslint@9.39.5(supports-color@7.2.0))(prettier@3.9.6)(supports-color@7.2.0)(turbo@2.10.12)
+ eslint:
+ specifier: 9.39.5
+ version: 9.39.5(supports-color@7.2.0)
+ prettier:
+ specifier: 3.9.6
+ version: 3.9.6
+ typescript:
+ specifier: npm:@typescript/typescript6@6.0.2
+ version: "@typescript/typescript6@6.0.2"
+ vitest:
+ specifier: 4.1.11
+ version: 4.1.11(@types/node@22.20.1)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.0))
+
+ tests/integration/nextjs:
+ devDependencies:
+ "@types/node":
+ specifier: 22.20.1
+ version: 22.20.1
+ "@types/react":
+ specifier: 19.2.18
+ version: 19.2.18
+ "@types/react-dom":
+ specifier: 19.2.5
+ version: 19.2.5(@types/react@19.2.18)
+ "@vllnt/typescript":
+ specifier: workspace:*
+ version: link:../../..
+ next:
+ specifier: 16.3.3
+ version: 16.3.3(@babel/core@7.29.7(supports-color@7.2.0))(@types/node@22.20.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ react:
+ specifier: 19.2.8
+ version: 19.2.8
+ react-dom:
+ specifier: 19.2.8
+ version: 19.2.8(react@19.2.8)
+ typescript:
+ specifier: 7.0.2
+ version: 7.0.2
+
+ tests/integration/react:
+ devDependencies:
+ "@types/react":
+ specifier: 19.2.18
+ version: 19.2.18
+ "@types/react-dom":
+ specifier: 19.2.5
+ version: 19.2.5(@types/react@19.2.18)
+ "@vllnt/typescript":
+ specifier: workspace:*
+ version: link:../../..
+ react:
+ specifier: 19.2.8
+ version: 19.2.8
+ react-dom:
+ specifier: 19.2.8
+ version: 19.2.8(react@19.2.8)
+ typescript:
+ specifier: 7.0.2
+ version: 7.0.2
+ vite:
+ specifier: 8.2.2
+ version: 8.2.2(@types/node@22.20.1)(esbuild@0.27.0)
+
+packages:
+ "@babel/code-frame@7.29.7":
+ resolution:
+ {
+ integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/compat-data@7.29.7":
+ resolution:
+ {
+ integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/core@7.29.7":
+ resolution:
+ {
+ integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/generator@7.29.8":
+ resolution:
+ {
+ integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-compilation-targets@7.29.7":
+ resolution:
+ {
+ integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-globals@7.29.7":
+ resolution:
+ {
+ integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-module-imports@7.29.7":
+ resolution:
+ {
+ integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-module-transforms@7.29.7":
+ resolution:
+ {
+ integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0
+
+ "@babel/helper-string-parser@7.29.7":
+ resolution:
+ {
+ integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-validator-identifier@7.29.7":
+ resolution:
+ {
+ integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-validator-option@7.29.7":
+ resolution:
+ {
+ integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helpers@7.29.7":
+ resolution:
+ {
+ integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/parser@7.29.8":
+ resolution:
+ {
+ integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==,
+ }
+ engines: { node: ">=6.0.0" }
+ hasBin: true
+
+ "@babel/template@7.29.7":
+ resolution:
+ {
+ integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/traverse@7.29.8":
+ resolution:
+ {
+ integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/types@7.29.8":
+ resolution:
+ {
+ integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@bcoe/v8-coverage@1.0.2":
+ resolution:
+ {
+ integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==,
+ }
+ engines: { node: ">=18" }
+
+ "@boundaries/elements@1.2.0":
+ resolution:
+ {
+ integrity: sha512-W65Gum02liMd3hmNrLmDBX1u5BmRMcunouFjLXyhxHnNY4YlK1kTxsgfflZ5XBGSnPnO0MkiUzAcoGzYrlx0RQ==,
+ }
+ engines: { node: ">=18.18" }
+
+ "@convex-dev/eslint-plugin@1.2.2":
+ resolution:
+ {
+ integrity: sha512-hLElzzSHuO83O/7PqaeFrMy8EOaDPMAUBNaqo7wkOzCsUCgA+tI9SXVSVLUozDGBBQjyXjAaPYRIBKoPeZbZKg==,
+ }
+ peerDependencies:
+ convex: ^1.34.1
+
+ "@emnapi/runtime@1.11.3":
+ resolution:
+ {
+ integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==,
+ }
+
+ "@esbuild/aix-ppc64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ppc64]
+ os: [aix]
+
+ "@esbuild/android-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [android]
+
+ "@esbuild/android-arm@0.27.0":
+ resolution:
+ {
+ integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm]
+ os: [android]
+
+ "@esbuild/android-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [android]
+
+ "@esbuild/darwin-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@esbuild/darwin-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@esbuild/freebsd-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [freebsd]
+
+ "@esbuild/freebsd-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@esbuild/linux-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@esbuild/linux-arm@0.27.0":
+ resolution:
+ {
+ integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm]
+ os: [linux]
+
+ "@esbuild/linux-ia32@0.27.0":
+ resolution:
+ {
+ integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ia32]
+ os: [linux]
+
+ "@esbuild/linux-loong64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [loong64]
+ os: [linux]
+
+ "@esbuild/linux-mips64el@0.27.0":
+ resolution:
+ {
+ integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [mips64el]
+ os: [linux]
+
+ "@esbuild/linux-ppc64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@esbuild/linux-riscv64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@esbuild/linux-s390x@0.27.0":
+ resolution:
+ {
+ integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==,
+ }
+ engines: { node: ">=18" }
+ cpu: [s390x]
+ os: [linux]
+
+ "@esbuild/linux-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [linux]
+
+ "@esbuild/netbsd-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [netbsd]
+
+ "@esbuild/netbsd-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [netbsd]
+
+ "@esbuild/openbsd-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [openbsd]
+
+ "@esbuild/openbsd-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [openbsd]
+
+ "@esbuild/openharmony-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [openharmony]
+
+ "@esbuild/sunos-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [sunos]
+
+ "@esbuild/win32-arm64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@esbuild/win32-ia32@0.27.0":
+ resolution:
+ {
+ integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ia32]
+ os: [win32]
+
+ "@esbuild/win32-x64@0.27.0":
+ resolution:
+ {
+ integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [win32]
+
+ "@eslint-community/eslint-utils@4.10.1":
+ resolution:
+ {
+ integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ "@eslint-community/eslint-utils@4.9.1":
+ resolution:
+ {
+ integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ "@eslint-community/regexpp@4.12.2":
+ resolution:
+ {
+ integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==,
+ }
+ engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
+
+ "@eslint/config-array@0.21.2":
+ resolution:
+ {
+ integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/config-helpers@0.4.2":
+ resolution:
+ {
+ integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/core@0.17.0":
+ resolution:
+ {
+ integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/eslintrc@3.3.6":
+ resolution:
+ {
+ integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/js@9.39.5":
+ resolution:
+ {
+ integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/object-schema@2.1.7":
+ resolution:
+ {
+ integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/plugin-kit@0.4.1":
+ resolution:
+ {
+ integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@humanfs/core@0.19.2":
+ resolution:
+ {
+ integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanfs/node@0.16.8":
+ resolution:
+ {
+ integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanfs/types@0.15.0":
+ resolution:
+ {
+ integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanwhocodes/module-importer@1.0.1":
+ resolution:
+ {
+ integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
+ }
+ engines: { node: ">=12.22" }
+
+ "@humanwhocodes/retry@0.4.3":
+ resolution:
+ {
+ integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==,
+ }
+ engines: { node: ">=18.18" }
+
+ "@img/colour@1.1.0":
+ resolution:
+ {
+ integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==,
+ }
+ engines: { node: ">=18" }
+
+ "@img/sharp-darwin-arm64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@img/sharp-darwin-x64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@img/sharp-freebsd-wasm32@0.35.4":
+ resolution:
+ {
+ integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==,
+ }
+ engines: { node: ">=20.9.0" }
+ os: [freebsd]
+
+ "@img/sharp-libvips-darwin-arm64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==,
+ }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@img/sharp-libvips-darwin-x64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==,
+ }
+ cpu: [x64]
+ os: [darwin]
+
+ "@img/sharp-libvips-linux-arm64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==,
+ }
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-libvips-linux-arm@1.3.3":
+ resolution:
+ {
+ integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==,
+ }
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-libvips-linux-ppc64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==,
+ }
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-libvips-linux-riscv64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==,
+ }
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-libvips-linux-s390x@1.3.3":
+ resolution:
+ {
+ integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==,
+ }
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-libvips-linux-x64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==,
+ }
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-libvips-linuxmusl-arm64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==,
+ }
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ "@img/sharp-libvips-linuxmusl-x64@1.3.3":
+ resolution:
+ {
+ integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==,
+ }
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ "@img/sharp-linux-arm64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-linux-arm@0.35.4":
+ resolution:
+ {
+ integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-linux-ppc64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-linux-riscv64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-linux-s390x@0.35.4":
+ resolution:
+ {
+ integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-linux-x64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ "@img/sharp-linuxmusl-arm64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ "@img/sharp-linuxmusl-x64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ "@img/sharp-wasm32@0.35.4":
+ resolution:
+ {
+ integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==,
+ }
+ engines: { node: ">=20.9.0" }
+
+ "@img/sharp-webcontainers-wasm32@0.35.4":
+ resolution:
+ {
+ integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [wasm32]
+
+ "@img/sharp-win32-arm64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@img/sharp-win32-ia32@0.35.4":
+ resolution:
+ {
+ integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==,
+ }
+ engines: { node: ^20.9.0 }
+ cpu: [ia32]
+ os: [win32]
+
+ "@img/sharp-win32-x64@0.35.4":
+ resolution:
+ {
+ integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==,
+ }
+ engines: { node: ">=20.9.0" }
+ cpu: [x64]
+ os: [win32]
+
+ "@jridgewell/gen-mapping@0.3.13":
+ resolution:
+ {
+ integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==,
+ }
+
+ "@jridgewell/remapping@2.3.5":
+ resolution:
+ {
+ integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==,
+ }
+
+ "@jridgewell/resolve-uri@3.1.2":
+ resolution:
+ {
+ integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
+ }
+ engines: { node: ">=6.0.0" }
+
+ "@jridgewell/sourcemap-codec@1.6.0":
+ resolution:
+ {
+ integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==,
+ }
+
+ "@jridgewell/trace-mapping@0.3.31":
+ resolution:
+ {
+ integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==,
+ }
+
+ "@next/env@16.3.3":
+ resolution:
+ {
+ integrity: sha512-U2eYQRwXj+dsqxV79zFqExDdatnNY/ZWc2nsJU1p/OgT7fd3dXwlF6OjYaFQCfMoeTA19PWq+wVmYgimVA+V+g==,
+ }
+
+ "@next/eslint-plugin-next@16.3.3":
+ resolution:
+ {
+ integrity: sha512-pbEh30vvjKpDoTAmo1v3q2uM4JUi8QaEBpbmjWvGfoec2jLghy/WNtvzAT0bk+Ik9oz6etjt4YjXEk4BQnicCw==,
+ }
+
+ "@next/swc-darwin-arm64@16.3.3":
+ resolution:
+ {
+ integrity: sha512-8Hiv32QJPwdV6KYJ8meR9SBA061tQqnIKTJDocvOXlEQqib0xMFpzArosuffFUUc0sslbh7QQ8a3Yey1QV8EIw==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@next/swc-darwin-x64@16.3.3":
+ resolution:
+ {
+ integrity: sha512-A1lgKgwVchRYmSe467zdwhxT9040dd8lH+o65sL5Jet8fjB4kegw/rDyPIpYVRb6jAqwXFOJpjIXJLxQKLiE3A==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@next/swc-linux-arm64-gnu@16.3.3":
+ resolution:
+ {
+ integrity: sha512-bf0FIssMFueU2dm7vQEWWxk0c8UjKTdW0yzuh0sQsD8pf1+KCLDdaqhYZNMYGmXwEOiHAUzgBKudovIlcvvBjg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ "@next/swc-linux-arm64-musl@16.3.3":
+ resolution:
+ {
+ integrity: sha512-W7viwCk9JY/cAkdz/A273rd5bb3RgT/IHwR7Upv90tunjBWNtAAhGhoecHh+teRNRSinuAFmE+l7fwZ4YKkrXg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ "@next/swc-linux-x64-gnu@16.3.3":
+ resolution:
+ {
+ integrity: sha512-0W46zw1N3ODpI6n0GeivHvvob1pooozgZVqy65k0mh4/7vr+FbY9+WpHzNVXjHipJf/A3FDheBG19H1s5A25rA==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ "@next/swc-linux-x64-musl@16.3.3":
+ resolution:
+ {
+ integrity: sha512-H4mBso8ZTMBPtdT0PN0pBx2ayTvQuTuvS6qT13d77yVFJXAPCxkyIhLTmdMaGTJs0krQYI/qpzdHijCeihXhbg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ "@next/swc-win32-arm64-msvc@16.3.3":
+ resolution:
+ {
+ integrity: sha512-cTMUJpcEGmeywofCUfhR+rSsoE33+rVPnPEYNTNdLNlsOeEg/vktOsKUSTb28vUGqD2jkm4Zaskcwn7OCI6FQg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@next/swc-win32-x64-msvc@16.3.3":
+ resolution:
+ {
+ integrity: sha512-2VR4cTBzHXaBjnGsuH6GyJjENzQOmHeAh11uY1iUhjm3j5dEUrVJuUj+VL78jaGi/Dik8xS76zEj18BsFhlVZQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [win32]
+
+ "@nodelib/fs.scandir@2.1.5":
+ resolution:
+ {
+ integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
+ }
+ engines: { node: ">= 8" }
+
+ "@nodelib/fs.stat@2.0.5":
+ resolution:
+ {
+ integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
+ }
+ engines: { node: ">= 8" }
+
+ "@nodelib/fs.walk@1.2.8":
+ resolution:
+ {
+ integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
+ }
+ engines: { node: ">= 8" }
+
+ "@oxc-project/types@0.147.0":
+ resolution:
+ {
+ integrity: sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==,
+ }
+
+ "@pkgr/core@0.3.6":
+ resolution:
+ {
+ integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
+
+ "@rolldown/binding-android-arm-eabi@1.2.6":
+ resolution:
+ {
+ integrity: sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm]
+ os: [android]
+
+ "@rolldown/binding-android-arm64@1.2.6":
+ resolution:
+ {
+ integrity: sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm64]
+ os: [android]
+
+ "@rolldown/binding-darwin-arm64@1.2.6":
+ resolution:
+ {
+ integrity: sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@rolldown/binding-darwin-x64@1.2.6":
+ resolution:
+ {
+ integrity: sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [x64]
+ os: [darwin]
+
+ "@rolldown/binding-freebsd-x64@1.2.6":
+ resolution:
+ {
+ integrity: sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@rolldown/binding-linux-arm-gnueabihf@1.2.6":
+ resolution:
+ {
+ integrity: sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm]
+ os: [linux]
+
+ "@rolldown/binding-linux-arm64-gnu@1.2.6":
+ resolution:
+ {
+ integrity: sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ "@rolldown/binding-linux-arm64-musl@1.2.6":
+ resolution:
+ {
+ integrity: sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ "@rolldown/binding-linux-ppc64-gnu@1.2.6":
+ resolution:
+ {
+ integrity: sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ "@rolldown/binding-linux-s390x-gnu@1.2.6":
+ resolution:
+ {
+ integrity: sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ "@rolldown/binding-linux-x64-gnu@1.2.6":
+ resolution:
+ {
+ integrity: sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ "@rolldown/binding-linux-x64-musl@1.2.6":
+ resolution:
+ {
+ integrity: sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ "@rolldown/binding-openharmony-arm64@1.2.6":
+ resolution:
+ {
+ integrity: sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm64]
+ os: [openharmony]
+
+ "@rolldown/binding-win32-arm64-msvc@1.2.6":
+ resolution:
+ {
+ integrity: sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [arm64]
+ os: [win32]
+
+ "@rolldown/binding-win32-x64-msvc@1.2.6":
+ resolution:
+ {
+ integrity: sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ cpu: [x64]
+ os: [win32]
+
+ "@rolldown/pluginutils@1.0.1":
+ resolution:
+ {
+ integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==,
+ }
+
+ "@standard-schema/spec@1.1.0":
+ resolution:
+ {
+ integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==,
+ }
+
+ "@swc/helpers@0.5.23":
+ resolution:
+ {
+ integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==,
+ }
+
+ "@turbo/darwin-64@2.10.12":
+ resolution:
+ {
+ integrity: sha512-9nKgKoF6ZOUsM+or0OtNf+TTJSfGvDNP7ZFv/ZGWVwOSCkumyctQiTeHwB4UNljHTnC41AqylgbunLDHoccNrA==,
+ }
+ cpu: [x64]
+ os: [darwin]
+
+ "@turbo/darwin-arm64@2.10.12":
+ resolution:
+ {
+ integrity: sha512-H4Elb1jqTZVeIC9bbcNwjSzemZ6RegoTOVHeuV5Osirt2Z8UguTyisMEkvZjPVZgMeN9J4ERZBFad40tFnkb7w==,
+ }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@turbo/linux-64@2.10.12":
+ resolution:
+ {
+ integrity: sha512-lr7KIotukvjZwEXiFSYAeOH3BWzjFVBbSzTbv0fuGFsNukYyH0+g1hB5ecqnJkgkYU+KHEMG1edOhnjiKON1wQ==,
+ }
+ cpu: [x64]
+ os: [android, linux]
+
+ "@turbo/linux-arm64@2.10.12":
+ resolution:
+ {
+ integrity: sha512-f0pZDTtvzB5SuNwuXBaKbZHUCMCukgc8nMlHEuvLmj91Fzec+MEbr3cAvGNor5htEDqZnO6Lxt9N/GPI/77oGA==,
+ }
+ cpu: [arm64]
+ os: [android, linux]
+
+ "@turbo/windows-64@2.10.12":
+ resolution:
+ {
+ integrity: sha512-SDOueJRjS/QcykWf2KCRtTLmIl5YMKsLbXkXQGhDwcTXvKXZiS5ih5lBl/gkwZIpYFjqA/rAlfMzlAFcVHNe0g==,
+ }
+ cpu: [x64]
+ os: [win32]
+
+ "@turbo/windows-arm64@2.10.12":
+ resolution:
+ {
+ integrity: sha512-0i0mVUa4kKk+/B3RwEwPMf9CB+T7ul56hn5FFHNA4VUNTOoLBEd6aNf3FaKfCatDNZ6cicCEf6if9QUTVyzzcA==,
+ }
+ cpu: [arm64]
+ os: [win32]
+
+ "@types/chai@5.2.3":
+ resolution:
+ {
+ integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==,
+ }
+
+ "@types/deep-eql@4.0.2":
+ resolution:
+ {
+ integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==,
+ }
+
+ "@types/estree@1.0.9":
+ resolution:
+ {
+ integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==,
+ }
+
+ "@types/json-schema@7.0.15":
+ resolution:
+ {
+ integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
+ }
+
+ "@types/node@22.20.1":
+ resolution:
+ {
+ integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==,
+ }
+
+ "@types/react-dom@19.2.5":
+ resolution:
+ {
+ integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==,
+ }
+ peerDependencies:
+ "@types/react": ^19.2.0
+
+ "@types/react@19.2.18":
+ resolution:
+ {
+ integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==,
+ }
+
+ "@typescript-eslint/eslint-plugin@8.68.0":
+ resolution:
+ {
+ integrity: sha512-WASHDpCm6qO5jj9g1a+8NiW5+GCkAyLReR56/4VruYmNgfUmqpxOfZ2Yfb8xGfJPWv5Qi6LSD8sXdces3vbp/Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ "@typescript-eslint/parser": ^8.68.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/parser@8.68.0":
+ resolution:
+ {
+ integrity: sha512-fHq2VC1kpyYfvEcbiMjOpySY4WS7voEp89yAThrHRX5sm9j2lzYppCb2umFMEed4fWcyeLjHxrz0mpjNBaBxMQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/project-service@8.58.2":
+ resolution:
+ {
+ integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/project-service@8.68.0":
+ resolution:
+ {
+ integrity: sha512-5GQtWZCXFcFYux955pvoS02WLc49pXNlvIxocKjS0clvwo3in1RdlzVKyiqQH9vE5AKWFLTaUgeQkOrTS+0Qxw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/scope-manager@8.58.2":
+ resolution:
+ {
+ integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/scope-manager@8.68.0":
+ resolution:
+ {
+ integrity: sha512-T5eXpcaJNg8bhjHJ8Rjp68Vq/QBteYtTKY8TZqVNPaUbuz0f6jI9t6aDkylwvalpAB9XTTFeFOjrjXAZ3YvmVA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/tsconfig-utils@8.58.2":
+ resolution:
+ {
+ integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/tsconfig-utils@8.68.0":
+ resolution:
+ {
+ integrity: sha512-F7zrGQfiJHojPwi8vhxZQC1tWtJzvL74cK/nqri2lk8YUXvYaYwl263xOJ69jDWPUk1hmcdoayFwk9lX09npVw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/type-utils@8.68.0":
+ resolution:
+ {
+ integrity: sha512-X77zqoY1EjeWGs/0JNxeaMfp5C5lIz4Tw8y66F1Ne8Faq6g424sBNYM6xBAqElfGZPLpWS+CZAp0DXyKDzWiHg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/types@8.58.2":
+ resolution:
+ {
+ integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/types@8.68.0":
+ resolution:
+ {
+ integrity: sha512-9RnpsGJjrAllCMefGVVsImJM24YurhC0Q1h4UbvivtvOqXmR/vEJge2OoE++z9m6hyg8T1Q8t5SNT6tHSbrxcg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/typescript-estree@8.58.2":
+ resolution:
+ {
+ integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/typescript-estree@8.68.0":
+ resolution:
+ {
+ integrity: sha512-OKKsD0tYmoNiU5PW2zehO1yO56jYOm1ShYlxon/Z0SJNidAkdVg86eg9ruRuoXf8xfnuWZGbwDsStkoXbZtIIA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/utils@8.58.2":
+ resolution:
+ {
+ integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/utils@8.68.0":
+ resolution:
+ {
+ integrity: sha512-PB5gJMMOg0Q5P1tsgWtEAqQacJXq0qEqRHDX/YJ4FaTMLfZPpHB3gjl2EJuiZyPABxmj4ZQYiY9m1bdAJ5y7tQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: ">=4.8.4 <6.1.0"
+
+ "@typescript-eslint/visitor-keys@8.58.2":
+ resolution:
+ {
+ integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/visitor-keys@8.68.0":
+ resolution:
+ {
+ integrity: sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript/typescript-aix-ppc64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [ppc64]
+ os: [aix]
+
+ "@typescript/typescript-darwin-arm64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@typescript/typescript-darwin-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@typescript/typescript-freebsd-arm64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm64]
+ os: [freebsd]
+
+ "@typescript/typescript-freebsd-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@typescript/typescript-linux-arm64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@typescript/typescript-linux-arm@7.0.2":
+ resolution:
+ {
+ integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm]
+ os: [linux]
+
+ "@typescript/typescript-linux-loong64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [loong64]
+ os: [linux]
+
+ "@typescript/typescript-linux-mips64el@7.0.2":
+ resolution:
+ {
+ integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [mips64el]
+ os: [linux]
+
+ "@typescript/typescript-linux-ppc64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@typescript/typescript-linux-riscv64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@typescript/typescript-linux-s390x@7.0.2":
+ resolution:
+ {
+ integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [s390x]
+ os: [linux]
+
+ "@typescript/typescript-linux-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [linux]
+
+ "@typescript/typescript-netbsd-arm64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm64]
+ os: [netbsd]
+
+ "@typescript/typescript-netbsd-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [netbsd]
+
+ "@typescript/typescript-openbsd-arm64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm64]
+ os: [openbsd]
+
+ "@typescript/typescript-openbsd-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [openbsd]
+
+ "@typescript/typescript-sunos-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [sunos]
+
+ "@typescript/typescript-win32-arm64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@typescript/typescript-win32-x64@7.0.2":
+ resolution:
+ {
+ integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==,
+ }
+ engines: { node: ">=16.20.0" }
+ cpu: [x64]
+ os: [win32]
+
+ "@typescript/typescript6@6.0.2":
+ resolution:
+ {
+ integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==,
+ }
+ hasBin: true
+
+ "@vitest/coverage-v8@4.1.11":
+ resolution:
+ {
+ integrity: sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw==,
+ }
+ peerDependencies:
+ "@vitest/browser": 4.1.11
+ vitest: 4.1.11
+ peerDependenciesMeta:
+ "@vitest/browser":
+ optional: true
+
+ "@vitest/expect@4.1.11":
+ resolution:
+ {
+ integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==,
+ }
+
+ "@vitest/mocker@4.1.11":
+ resolution:
+ {
+ integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==,
+ }
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
+ "@vitest/pretty-format@4.1.11":
+ resolution:
+ {
+ integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==,
+ }
+
+ "@vitest/runner@4.1.11":
+ resolution:
+ {
+ integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==,
+ }
+
+ "@vitest/snapshot@4.1.11":
+ resolution:
+ {
+ integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==,
+ }
+
+ "@vitest/spy@4.1.11":
+ resolution:
+ {
+ integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==,
+ }
+
+ "@vitest/utils@4.1.11":
+ resolution:
+ {
+ integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==,
+ }
+
+ "@vllnt/eslint-config@1.0.1":
+ resolution:
+ {
+ integrity: sha512-OV1jQ/bsHcOOW+A44olNnFKqnNrEdojh89CeVzy+83CIfLgE1sX06p0sDV9HeIeIdEc+nzeFCPMEFJWkUISo1g==,
+ }
+ engines: { node: ">=20" }
+ peerDependencies:
+ eslint: ">=9"
+ prettier: ">=3"
+ typescript: ">=5"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ acorn-jsx@5.3.2:
+ resolution:
+ {
+ integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
+ }
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.18.0:
+ resolution:
+ {
+ integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==,
+ }
+ engines: { node: ">=0.4.0" }
+ hasBin: true
+
+ adverb-where@0.2.6:
+ resolution:
+ {
+ integrity: sha512-uVazUDEPYpBSVRjEDTzO6hVXh9X/eQb+gobzDpqdzMiM1MkfGxfPtgN8YerBjAeDkoABZprsOwhSZnY4X3knnw==,
+ }
+ engines: { node: ">=6", npm: ">=5" }
+
+ ajv@6.15.0:
+ resolution:
+ {
+ integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==,
+ }
+
+ ansi-styles@4.3.0:
+ resolution:
+ {
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
+ }
+ engines: { node: ">=8" }
+
+ argparse@2.0.1:
+ resolution:
+ {
+ integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
+ }
+
+ aria-query@5.3.2:
+ resolution:
+ {
+ integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array-buffer-byte-length@1.0.2:
+ resolution:
+ {
+ integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array-includes@3.1.9:
+ resolution:
+ {
+ integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.findlast@1.2.5:
+ resolution:
+ {
+ integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.flat@1.3.3:
+ resolution:
+ {
+ integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.flatmap@1.3.3:
+ resolution:
+ {
+ integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.tosorted@1.1.4:
+ resolution:
+ {
+ integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ arraybuffer.prototype.slice@1.0.4:
+ resolution:
+ {
+ integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ assertion-error@2.0.1:
+ resolution:
+ {
+ integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==,
+ }
+ engines: { node: ">=12" }
+
+ ast-types-flow@0.0.8:
+ resolution:
+ {
+ integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==,
+ }
+
+ ast-v8-to-istanbul@1.0.5:
+ resolution:
+ {
+ integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==,
+ }
+
+ async-function@1.0.0:
+ resolution:
+ {
+ integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ available-typed-arrays@1.0.7:
+ resolution:
+ {
+ integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ axe-core@4.13.0:
+ resolution:
+ {
+ integrity: sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==,
+ }
+ engines: { node: ">=4" }
+
+ axobject-query@4.1.0:
+ resolution:
+ {
+ integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ balanced-match@1.0.2:
+ resolution:
+ {
+ integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+ }
+
+ balanced-match@4.0.4:
+ resolution:
+ {
+ integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==,
+ }
+ engines: { node: 18 || 20 || >=22 }
+
+ baseline-browser-mapping@2.11.20:
+ resolution:
+ {
+ integrity: sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==,
+ }
+ engines: { node: ">=6.0.0" }
+ hasBin: true
+
+ brace-expansion@1.1.18:
+ resolution:
+ {
+ integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==,
+ }
+
+ brace-expansion@5.0.9:
+ resolution:
+ {
+ integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==,
+ }
+ engines: { node: 20 || >=22 }
+
+ braces@3.0.3:
+ resolution:
+ {
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
+ }
+ engines: { node: ">=8" }
+
+ browserslist@4.28.8:
+ resolution:
+ {
+ integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==,
+ }
+ engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
+ hasBin: true
+
+ builtin-modules@5.3.0:
+ resolution:
+ {
+ integrity: sha512-hMQUl2bUFG339QygPM97E+mc8OY1IAchORZxm4a/frcYwKzozMzRVDBwHW0NjOqGElLm2O37AVQE8ikxlZHrMQ==,
+ }
+ engines: { node: ">=18.20" }
+
+ call-bind-apply-helpers@1.0.2:
+ resolution:
+ {
+ integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ call-bind@1.0.9:
+ resolution:
+ {
+ integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ call-bound@1.0.4:
+ resolution:
+ {
+ integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ callsites@3.1.0:
+ resolution:
+ {
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
+ }
+ engines: { node: ">=6" }
+
+ caniuse-lite@1.0.30001810:
+ resolution:
+ {
+ integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==,
+ }
+
+ chai@6.2.2:
+ resolution:
+ {
+ integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==,
+ }
+ engines: { node: ">=18" }
+
+ chalk@4.1.2:
+ resolution:
+ {
+ integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
+ }
+ engines: { node: ">=10" }
+
+ change-case@5.4.4:
+ resolution:
+ {
+ integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==,
+ }
+
+ ci-info@4.4.0:
+ resolution:
+ {
+ integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==,
+ }
+ engines: { node: ">=8" }
+
+ clean-regexp@1.0.0:
+ resolution:
+ {
+ integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==,
+ }
+ engines: { node: ">=4" }
+
+ client-only@0.0.1:
+ resolution:
+ {
+ integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==,
+ }
+
+ color-convert@2.0.1:
+ resolution:
+ {
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
+ }
+ engines: { node: ">=7.0.0" }
+
+ color-name@1.1.4:
+ resolution:
+ {
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
+ }
+
+ commander@2.20.3:
+ resolution:
+ {
+ integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==,
+ }
+
+ concat-map@0.0.1:
+ resolution:
+ {
+ integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
+ }
+
+ convert-source-map@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
+ }
+
+ convex@1.45.0:
+ resolution:
+ {
+ integrity: sha512-AV3B56Ptu/14d76g3urBJ50dwpiZa6uJaLT84OWox5aCwZIJiuAamdjv3lLHDzs8vv5kC31anEZohhUe3qJ2bA==,
+ }
+ engines: { node: ">=20.0.0", npm: ">=7.0.0" }
+ hasBin: true
+ peerDependencies:
+ "@auth0/auth0-react": ^2.0.1
+ "@clerk/clerk-react": ^4.12.8 || ^5.0.0
+ "@clerk/react": ^6.4.3
+ react: ^18.0.0 || ^19.0.0-0 || ^19.0.0
+ peerDependenciesMeta:
+ "@auth0/auth0-react":
+ optional: true
+ "@clerk/clerk-react":
+ optional: true
+ "@clerk/react":
+ optional: true
+ react:
+ optional: true
+
+ core-js-compat@3.50.0:
+ resolution:
+ {
+ integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==,
+ }
+ engines: { node: ">=6.4.0" }
+
+ cross-spawn@7.0.6:
+ resolution:
+ {
+ integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
+ }
+ engines: { node: ">= 8" }
+
+ csstype@3.2.3:
+ resolution:
+ {
+ integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==,
+ }
+
+ damerau-levenshtein@1.0.8:
+ resolution:
+ {
+ integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==,
+ }
+
+ data-view-buffer@1.0.2:
+ resolution:
+ {
+ integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ data-view-byte-length@1.0.2:
+ resolution:
+ {
+ integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ data-view-byte-offset@1.0.1:
+ resolution:
+ {
+ integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ debug@3.2.7:
+ resolution:
+ {
+ integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
+ }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.3:
+ resolution:
+ {
+ integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
+ }
+ engines: { node: ">=6.0" }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deep-is@0.1.4:
+ resolution:
+ {
+ integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
+ }
+
+ deepmerge-ts@7.1.6:
+ resolution:
+ {
+ integrity: sha512-gQhL1ksGBLQbHeAo47YU6cs2ahd3Pv+8PFYoWogNZbQnNwQyOh9Ad5kbeHFiWwbKdeWQJ5Z7Y7mwb9ew2hXBLw==,
+ }
+ engines: { node: ">=16.0.0" }
+
+ define-data-property@1.1.4:
+ resolution:
+ {
+ integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ define-properties@1.2.1:
+ resolution:
+ {
+ integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ detect-libc@2.1.2:
+ resolution:
+ {
+ integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==,
+ }
+ engines: { node: ">=8" }
+
+ doctrine@2.1.0:
+ resolution:
+ {
+ integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ dotenv@16.0.3:
+ resolution:
+ {
+ integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==,
+ }
+ engines: { node: ">=12" }
+
+ dunder-proto@1.0.1:
+ resolution:
+ {
+ integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ e-prime@0.10.4:
+ resolution:
+ {
+ integrity: sha512-tzBmM2mFSnAq5BuxPSyin6qXb3yMe1wufJN7L7ZPcEWS5S+jI2dhKQEoqHVEcSMMXo/j5lcWpX5jzA6wLSmX6w==,
+ }
+
+ electron-to-chromium@1.5.416:
+ resolution:
+ {
+ integrity: sha512-K6bvB2BjnNrugtIih6ewlbBI9DXa976jIdiIlRLHhBoEI9a4JaQjjHyF+A1IQI543aQYR4LnmOrT/K5fZj0aPA==,
+ }
+
+ emoji-regex@9.2.2:
+ resolution:
+ {
+ integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
+ }
+
+ es-abstract-get@1.0.0:
+ resolution:
+ {
+ integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-abstract@1.24.2:
+ resolution:
+ {
+ integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-define-property@1.0.1:
+ resolution:
+ {
+ integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-errors@1.3.0:
+ resolution:
+ {
+ integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-iterator-helpers@1.4.0:
+ resolution:
+ {
+ integrity: sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-module-lexer@2.3.2:
+ resolution:
+ {
+ integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==,
+ }
+
+ es-object-atoms@1.1.2:
+ resolution:
+ {
+ integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-set-tostringtag@2.1.0:
+ resolution:
+ {
+ integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-shim-unscopables@1.1.0:
+ resolution:
+ {
+ integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-to-primitive@1.3.4:
+ resolution:
+ {
+ integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ esbuild@0.27.0:
+ resolution:
+ {
+ integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==,
+ }
+ engines: { node: ">=18" }
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution:
+ {
+ integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
+ }
+ engines: { node: ">=6" }
+
+ escape-string-regexp@1.0.5:
+ resolution:
+ {
+ integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==,
+ }
+ engines: { node: ">=0.8.0" }
+
+ escape-string-regexp@4.0.0:
+ resolution:
+ {
+ integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
+ }
+ engines: { node: ">=10" }
+
+ escape-string-regexp@5.0.0:
+ resolution:
+ {
+ integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==,
+ }
+ engines: { node: ">=12" }
+
+ eslint-config-prettier@10.1.8:
+ resolution:
+ {
+ integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==,
+ }
+ hasBin: true
+ peerDependencies:
+ eslint: ">=7.0.0"
+
+ eslint-import-resolver-node@0.3.9:
+ resolution:
+ {
+ integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==,
+ }
+
+ eslint-module-utils@2.12.1:
+ resolution:
+ {
+ integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ "@typescript-eslint/parser": "*"
+ eslint: "*"
+ eslint-import-resolver-node: "*"
+ eslint-import-resolver-typescript: "*"
+ eslint-import-resolver-webpack: "*"
+ peerDependenciesMeta:
+ "@typescript-eslint/parser":
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
+ eslint-plugin-boundaries@5.4.0:
+ resolution:
+ {
+ integrity: sha512-6SQmEhXCqGrrxm9YiM24SC95CqrVi2MUOm5SDrfquceh/os8MIAvZYsDU69zvtCSb1S6UbNEmdioi1gCDc8+VQ==,
+ }
+ engines: { node: ">=18.18" }
+ peerDependencies:
+ eslint: ">=6.0.0"
+
+ eslint-plugin-css-modules@2.12.0:
+ resolution:
+ {
+ integrity: sha512-ruFBdad69ABrbCDCh5mXj7UzNmrvytfzPACjyvZWIAjFZAG8BXpYSbqmE8gU5wF+pIzV3jU2CWhLvfekXT/IgQ==,
+ }
+ engines: { node: ">=4.0.0" }
+ peerDependencies:
+ eslint: ">=2.0.0"
+
+ eslint-plugin-functional@9.0.5:
+ resolution:
+ {
+ integrity: sha512-RYbNpGkGu5mSN7xlezyeE7TE3S9rsliAS5FOorZoxn7126UTslcQnoVOIAOA6fMOlz6dNG3x3cd3tuzrHM6mRA==,
+ }
+ engines: { node: ">=v18.18.0" }
+ peerDependencies:
+ eslint: ^9.0.0 || ^10.0.0
+ typescript: ">=4.7.4"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.10.2:
+ resolution:
+ {
+ integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==,
+ }
+ engines: { node: ">=4.0" }
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+
+ eslint-plugin-perfectionist@5.10.1:
+ resolution:
+ {
+ integrity: sha512-Kprsp9Us0GqAesYaAIzUViw57xYp5WBqzXrcE0Mtww++E5fexWXYBipMuuD7yvyH4vvpBH0+oJ+OMAmZ0oYXkw==,
+ }
+ engines: { node: ^20.0.0 || >=22.0.0 }
+ peerDependencies:
+ eslint: ^8.45.0 || ^9.0.0 || ^10.0.0
+
+ eslint-plugin-prettier@5.5.6:
+ resolution:
+ {
+ integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
+ peerDependencies:
+ "@types/eslint": ">=8.0.0"
+ eslint: ">=8.0.0"
+ eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0"
+ prettier: ">=3.0.0"
+ peerDependenciesMeta:
+ "@types/eslint":
+ optional: true
+ eslint-config-prettier:
+ optional: true
+
+ eslint-plugin-react-hooks@7.1.1:
+ resolution:
+ {
+ integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==,
+ }
+ engines: { node: ">=18" }
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0
+
+ eslint-plugin-react@7.37.5:
+ resolution:
+ {
+ integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-plugin-simple-import-sort@12.1.1:
+ resolution:
+ {
+ integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==,
+ }
+ peerDependencies:
+ eslint: ">=5.0.0"
+
+ eslint-plugin-turbo@2.10.12:
+ resolution:
+ {
+ integrity: sha512-QZ9u3sV3ky4bl3XUpsVG8Ehk11I0omsGV2K7dCDut6sGvaVErFvWbgd46oh5tsnLt/5i+KvuOWgKJneleMqk2Q==,
+ }
+ peerDependencies:
+ eslint: ">6.6.0"
+ turbo: ">2.0.0"
+
+ eslint-plugin-unicorn@62.0.0:
+ resolution:
+ {
+ integrity: sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==,
+ }
+ engines: { node: ^20.10.0 || >=21.0.0 }
+ peerDependencies:
+ eslint: ">=9.38.0"
+
+ eslint-plugin-write-good-comments@0.2.0:
+ resolution:
+ {
+ integrity: sha512-YuTGPicIAyORMFeKBdXAks0xRv5vTyOElctJWwm95Wl5R7dOR4Aq/4w6V4Zh2scEQQsY7d+un18fU+YoKCKiqQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ eslint-scope@8.4.0:
+ resolution:
+ {
+ integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ eslint-visitor-keys@3.4.3:
+ resolution:
+ {
+ integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+
+ eslint-visitor-keys@4.2.1:
+ resolution:
+ {
+ integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ eslint-visitor-keys@5.0.1:
+ resolution:
+ {
+ integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==,
+ }
+ engines: { node: ^20.19.0 || ^22.13.0 || >=24 }
+
+ eslint@9.39.5:
+ resolution:
+ {
+ integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
+ peerDependencies:
+ jiti: "*"
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+
+ espree@10.4.0:
+ resolution:
+ {
+ integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ esquery@1.7.0:
+ resolution:
+ {
+ integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==,
+ }
+ engines: { node: ">=0.10" }
+
+ esrecurse@4.3.0:
+ resolution:
+ {
+ integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==,
+ }
+ engines: { node: ">=4.0" }
+
+ estraverse@5.3.0:
+ resolution:
+ {
+ integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==,
+ }
+ engines: { node: ">=4.0" }
+
+ estree-walker@3.0.3:
+ resolution:
+ {
+ integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
+ }
+
+ esutils@2.0.3:
+ resolution:
+ {
+ integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ expect-type@1.4.0:
+ resolution:
+ {
+ integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==,
+ }
+ engines: { node: ">=12.0.0" }
+
+ fast-deep-equal@3.1.3:
+ resolution:
+ {
+ integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
+ }
+
+ fast-diff@1.3.0:
+ resolution:
+ {
+ integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==,
+ }
+
+ fast-glob@3.3.1:
+ resolution:
+ {
+ integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==,
+ }
+ engines: { node: ">=8.6.0" }
+
+ fast-json-stable-stringify@2.1.0:
+ resolution:
+ {
+ integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
+ }
+
+ fast-levenshtein@2.0.6:
+ resolution:
+ {
+ integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
+ }
+
+ fastq@1.20.3:
+ resolution:
+ {
+ integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==,
+ }
+
+ fdir@6.5.0:
+ resolution:
+ {
+ integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==,
+ }
+ engines: { node: ">=12.0.0" }
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ file-entry-cache@8.0.0:
+ resolution:
+ {
+ integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==,
+ }
+ engines: { node: ">=16.0.0" }
+
+ fill-range@7.1.1:
+ resolution:
+ {
+ integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
+ }
+ engines: { node: ">=8" }
+
+ find-up-simple@1.0.1:
+ resolution:
+ {
+ integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==,
+ }
+ engines: { node: ">=18" }
+
+ find-up@5.0.0:
+ resolution:
+ {
+ integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
+ }
+ engines: { node: ">=10" }
+
+ flat-cache@4.0.1:
+ resolution:
+ {
+ integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==,
+ }
+ engines: { node: ">=16" }
+
+ flatted@3.4.4:
+ resolution:
+ {
+ integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==,
+ }
+
+ for-each@0.3.5:
+ resolution:
+ {
+ integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ fsevents@2.3.3:
+ resolution:
+ {
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
+ }
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution:
+ {
+ integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
+ }
+
+ function.prototype.name@1.2.0:
+ resolution:
+ {
+ integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==,
+ }
+ engines: { node: ">= 0.4" }
+
+ functions-have-names@1.2.3:
+ resolution:
+ {
+ integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==,
+ }
+
+ generator-function@2.0.1:
+ resolution:
+ {
+ integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ gensync@1.0.0-beta.2:
+ resolution:
+ {
+ integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ get-intrinsic@1.3.0:
+ resolution:
+ {
+ integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-proto@1.0.1:
+ resolution:
+ {
+ integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-symbol-description@1.1.0:
+ resolution:
+ {
+ integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ glob-parent@5.1.2:
+ resolution:
+ {
+ integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
+ }
+ engines: { node: ">= 6" }
+
+ glob-parent@6.0.2:
+ resolution:
+ {
+ integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
+ }
+ engines: { node: ">=10.13.0" }
+
+ globals@14.0.0:
+ resolution:
+ {
+ integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==,
+ }
+ engines: { node: ">=18" }
+
+ globals@16.5.0:
+ resolution:
+ {
+ integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==,
+ }
+ engines: { node: ">=18" }
+
+ globalthis@1.0.4:
+ resolution:
+ {
+ integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ gonzales-pe@4.3.0:
+ resolution:
+ {
+ integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==,
+ }
+ engines: { node: ">=0.6.0" }
+ hasBin: true
+
+ gopd@1.2.0:
+ resolution:
+ {
+ integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ handlebars@4.7.8:
+ resolution:
+ {
+ integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==,
+ }
+ engines: { node: ">=0.4.7" }
+ hasBin: true
+
+ has-bigints@1.1.0:
+ resolution:
+ {
+ integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-flag@4.0.0:
+ resolution:
+ {
+ integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
+ }
+ engines: { node: ">=8" }
+
+ has-property-descriptors@1.0.2:
+ resolution:
+ {
+ integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==,
+ }
+
+ has-proto@1.2.0:
+ resolution:
+ {
+ integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-symbols@1.1.0:
+ resolution:
+ {
+ integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-tostringtag@1.0.2:
+ resolution:
+ {
+ integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ hasown@2.0.4:
+ resolution:
+ {
+ integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ hermes-estree@0.25.1:
+ resolution:
+ {
+ integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==,
+ }
+
+ hermes-parser@0.25.1:
+ resolution:
+ {
+ integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==,
+ }
+
+ html-escaper@2.0.2:
+ resolution:
+ {
+ integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==,
+ }
+
+ ignore@5.3.2:
+ resolution:
+ {
+ integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==,
+ }
+ engines: { node: ">= 4" }
+
+ ignore@7.0.7:
+ resolution:
+ {
+ integrity: sha512-dML0wP6oak21rsNYCJpJB6O1BJIEwNpGrTw0URPfAk4hm0e3pRfCtzkfB6olBcXcVlU2rouCyz7lCyRB0OMVCA==,
+ }
+ engines: { node: ">= 4" }
+
+ import-fresh@3.3.1:
+ resolution:
+ {
+ integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
+ }
+ engines: { node: ">=6" }
+
+ imurmurhash@0.1.4:
+ resolution:
+ {
+ integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
+ }
+ engines: { node: ">=0.8.19" }
+
+ indent-string@5.0.0:
+ resolution:
+ {
+ integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==,
+ }
+ engines: { node: ">=12" }
+
+ internal-slot@1.1.0:
+ resolution:
+ {
+ integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-array-buffer@3.0.5:
+ resolution:
+ {
+ integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-async-function@2.1.1:
+ resolution:
+ {
+ integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-bigint@1.1.0:
+ resolution:
+ {
+ integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-boolean-object@1.2.2:
+ resolution:
+ {
+ integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-builtin-module@5.0.0:
+ resolution:
+ {
+ integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==,
+ }
+ engines: { node: ">=18.20" }
+
+ is-callable@1.2.7:
+ resolution:
+ {
+ integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-core-module@2.16.1:
+ resolution:
+ {
+ integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-core-module@2.16.2:
+ resolution:
+ {
+ integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-data-view@1.0.2:
+ resolution:
+ {
+ integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-date-object@1.1.0:
+ resolution:
+ {
+ integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-document.all@1.0.0:
+ resolution:
+ {
+ integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-extglob@2.1.1:
+ resolution:
+ {
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-finalizationregistry@1.1.1:
+ resolution:
+ {
+ integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-generator-function@1.1.2:
+ resolution:
+ {
+ integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-glob@4.0.3:
+ resolution:
+ {
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-immutable-type@5.0.4:
+ resolution:
+ {
+ integrity: sha512-tDf0vB9dJJt/1USS2nvHJb8UsIAhs+pF6z8UZLNdhrzB+PKMrdcN45je9jhuFpaJOjJpoRhueFmFrRs5g/TNMA==,
+ }
+ peerDependencies:
+ eslint: "*"
+ typescript: ">=4.7.4"
+
+ is-map@2.0.3:
+ resolution:
+ {
+ integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-negative-zero@2.0.3:
+ resolution:
+ {
+ integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-number-object@1.1.1:
+ resolution:
+ {
+ integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-number@7.0.0:
+ resolution:
+ {
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
+ }
+ engines: { node: ">=0.12.0" }
+
+ is-regex@1.2.1:
+ resolution:
+ {
+ integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-set@2.0.3:
+ resolution:
+ {
+ integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-shared-array-buffer@1.0.4:
+ resolution:
+ {
+ integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-string@1.1.1:
+ resolution:
+ {
+ integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-symbol@1.1.1:
+ resolution:
+ {
+ integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-typed-array@1.1.15:
+ resolution:
+ {
+ integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakmap@2.0.2:
+ resolution:
+ {
+ integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakref@1.1.1:
+ resolution:
+ {
+ integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakset@2.0.4:
+ resolution:
+ {
+ integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ isarray@2.0.5:
+ resolution:
+ {
+ integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==,
+ }
+
+ isexe@2.0.0:
+ resolution:
+ {
+ integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
+ }
+
+ istanbul-lib-coverage@3.2.2:
+ resolution:
+ {
+ integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==,
+ }
+ engines: { node: ">=8" }
+
+ istanbul-lib-report@3.0.1:
+ resolution:
+ {
+ integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==,
+ }
+ engines: { node: ">=10" }
+
+ istanbul-reports@3.2.0:
+ resolution:
+ {
+ integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==,
+ }
+ engines: { node: ">=8" }
+
+ iterator.prototype@1.1.5:
+ resolution:
+ {
+ integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ js-tokens@10.0.0:
+ resolution:
+ {
+ integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==,
+ }
+
+ js-tokens@4.0.0:
+ resolution:
+ {
+ integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
+ }
+
+ js-yaml@4.3.2:
+ resolution:
+ {
+ integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==,
+ }
+ hasBin: true
+
+ jsesc@3.1.0:
+ resolution:
+ {
+ integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
+ }
+ engines: { node: ">=6" }
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
+ }
+
+ json-schema-traverse@0.4.1:
+ resolution:
+ {
+ integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
+ }
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution:
+ {
+ integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
+ }
+
+ json5@2.2.3:
+ resolution:
+ {
+ integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
+ }
+ engines: { node: ">=6" }
+ hasBin: true
+
+ jsx-ast-utils@3.3.5:
+ resolution:
+ {
+ integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==,
+ }
+ engines: { node: ">=4.0" }
+
+ keyv@4.5.4:
+ resolution:
+ {
+ integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
+ }
+
+ language-subtag-registry@0.3.23:
+ resolution:
+ {
+ integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==,
+ }
+
+ language-tags@1.0.9:
+ resolution:
+ {
+ integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==,
+ }
+ engines: { node: ">=0.10" }
+
+ levn@0.4.1:
+ resolution:
+ {
+ integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ lightningcss-android-arm64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ resolution:
+ {
+ integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ resolution:
+ {
+ integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ resolution:
+ {
+ integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ resolution:
+ {
+ integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.33.0:
+ resolution:
+ {
+ integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ resolution:
+ {
+ integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ resolution:
+ {
+ integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.33.0:
+ resolution:
+ {
+ integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==,
+ }
+ engines: { node: ">= 12.0.0" }
+
+ locate-path@6.0.0:
+ resolution:
+ {
+ integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
+ }
+ engines: { node: ">=10" }
+
+ lodash.merge@4.6.2:
+ resolution:
+ {
+ integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
+ }
+
+ lodash@4.18.1:
+ resolution:
+ {
+ integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==,
+ }
+
+ loose-envify@1.4.0:
+ resolution:
+ {
+ integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
+ }
+ hasBin: true
+
+ lru-cache@5.1.1:
+ resolution:
+ {
+ integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
+ }
+
+ magic-string@0.30.21:
+ resolution:
+ {
+ integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==,
+ }
+
+ magicast@0.5.4:
+ resolution:
+ {
+ integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==,
+ }
+
+ make-dir@4.0.0:
+ resolution:
+ {
+ integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==,
+ }
+ engines: { node: ">=10" }
+
+ math-intrinsics@1.1.0:
+ resolution:
+ {
+ integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ merge2@1.4.1:
+ resolution:
+ {
+ integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
+ }
+ engines: { node: ">= 8" }
+
+ micromatch@4.0.8:
+ resolution:
+ {
+ integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
+ }
+ engines: { node: ">=8.6" }
+
+ minimatch@10.2.6:
+ resolution:
+ {
+ integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==,
+ }
+ engines: { node: 18 || 20 || >=22 }
+
+ minimatch@3.1.5:
+ resolution:
+ {
+ integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==,
+ }
+
+ minimist@1.2.8:
+ resolution:
+ {
+ integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
+ }
+
+ ms@2.1.3:
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
+
+ nanoid@3.3.18:
+ resolution:
+ {
+ integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==,
+ }
+ engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution:
+ {
+ integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
+ }
+
+ natural-orderby@5.0.0:
+ resolution:
+ {
+ integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==,
+ }
+ engines: { node: ">=18" }
+
+ neo-async@2.6.2:
+ resolution:
+ {
+ integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==,
+ }
+
+ next@16.3.3:
+ resolution:
+ {
+ integrity: sha512-tuRTx1nQ/yVw83cwJBo9F+njGUgMn3UHQycreWHB8XsStvvAh1AthbI8/4IpKnFaF58F+iSiHejYOlMQ/eq83g==,
+ }
+ engines: { node: ">=20.9.0" }
+ hasBin: true
+ peerDependencies:
+ "@opentelemetry/api": ^1.1.0
+ "@playwright/test": ^1.51.1
+ babel-plugin-react-compiler: "*"
+ react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ "@opentelemetry/api":
+ optional: true
+ "@playwright/test":
+ optional: true
+ babel-plugin-react-compiler:
+ optional: true
+ sass:
+ optional: true
+
+ no-cliches@0.3.6:
+ resolution:
+ {
+ integrity: sha512-3yZ1vfGKOcv0dyyhUeqA0Qa6RsQ4SfUnL6o2IWR4sVg8kdnJo48XTWbMLdtnfiZTbCUdsMttNwyJcihEdGCZBw==,
+ }
+ engines: { node: ">=16", npm: ">=8" }
+
+ node-exports-info@1.6.2:
+ resolution:
+ {
+ integrity: sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==,
+ }
+ engines: { node: ">= 0.4" }
+
+ node-releases@2.0.54:
+ resolution:
+ {
+ integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==,
+ }
+ engines: { node: ">=18" }
+
+ object-assign@4.1.1:
+ resolution:
+ {
+ integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ object-inspect@1.13.4:
+ resolution:
+ {
+ integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object-keys@1.1.1:
+ resolution:
+ {
+ integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.assign@4.1.7:
+ resolution:
+ {
+ integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.entries@1.1.9:
+ resolution:
+ {
+ integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.fromentries@2.0.8:
+ resolution:
+ {
+ integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.values@1.2.1:
+ resolution:
+ {
+ integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ obug@2.1.4:
+ resolution:
+ {
+ integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==,
+ }
+ engines: { node: ">=12.20.0" }
+
+ optionator@0.9.4:
+ resolution:
+ {
+ integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ own-keys@1.0.2:
+ resolution:
+ {
+ integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ p-limit@3.1.0:
+ resolution:
+ {
+ integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
+ }
+ engines: { node: ">=10" }
+
+ p-locate@5.0.0:
+ resolution:
+ {
+ integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
+ }
+ engines: { node: ">=10" }
+
+ parent-module@1.0.1:
+ resolution:
+ {
+ integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
+ }
+ engines: { node: ">=6" }
+
+ passive-voice@0.1.0:
+ resolution:
+ {
+ integrity: sha512-Pj9iwzXw4bKEtdugGYm92jT4tnsj+xrTSkHFEM4bn6fefqbFdZi49tZMmGIZ91aIQTyFtMUww7O2qYaZKAsDag==,
+ }
+
+ path-exists@4.0.0:
+ resolution:
+ {
+ integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
+ }
+ engines: { node: ">=8" }
+
+ path-key@3.1.1:
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: ">=8" }
+
+ path-parse@1.0.7:
+ resolution:
+ {
+ integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
+ }
+
+ pathe@2.0.3:
+ resolution:
+ {
+ integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==,
+ }
+
+ picocolors@1.1.1:
+ resolution:
+ {
+ integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ }
+
+ picomatch@2.3.2:
+ resolution:
+ {
+ integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==,
+ }
+ engines: { node: ">=8.6" }
+
+ picomatch@4.0.7:
+ resolution:
+ {
+ integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==,
+ }
+ engines: { node: ">=12" }
+
+ pluralize@8.0.0:
+ resolution:
+ {
+ integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==,
+ }
+ engines: { node: ">=4" }
+
+ possible-typed-array-names@1.1.0:
+ resolution:
+ {
+ integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ postcss@8.5.23:
+ resolution:
+ {
+ integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+
+ postcss@8.5.26:
+ resolution:
+ {
+ integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+
+ prelude-ls@1.2.1:
+ resolution:
+ {
+ integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ prettier-linter-helpers@1.0.1:
+ resolution:
+ {
+ integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==,
+ }
+ engines: { node: ">=6.0.0" }
+
+ prettier@3.9.6:
+ resolution:
+ {
+ integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==,
+ }
+ engines: { node: ">=14" }
+ hasBin: true
+
+ prop-types@15.8.1:
+ resolution:
+ {
+ integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==,
+ }
+
+ punycode@2.3.1:
+ resolution:
+ {
+ integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ }
+ engines: { node: ">=6" }
+
+ queue-microtask@1.2.3:
+ resolution:
+ {
+ integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
+ }
+
+ react-dom@19.2.8:
+ resolution:
+ {
+ integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==,
+ }
+ peerDependencies:
+ react: ^19.2.8
+
+ react-is@16.13.1:
+ resolution:
+ {
+ integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==,
+ }
+
+ react@19.2.8:
+ resolution:
+ {
+ integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ reflect.getprototypeof@1.0.10:
+ resolution:
+ {
+ integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ regexp-tree@0.1.27:
+ resolution:
+ {
+ integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==,
+ }
+ hasBin: true
+
+ regexp.prototype.flags@1.5.4:
+ resolution:
+ {
+ integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ regjsparser@0.13.2:
+ resolution:
+ {
+ integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==,
+ }
+ hasBin: true
+
+ requireindex@1.1.0:
+ resolution:
+ {
+ integrity: sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg==,
+ }
+ engines: { node: ">=0.10.5" }
+
+ resolve-from@4.0.0:
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: ">=4" }
+
+ resolve@1.22.12:
+ resolution:
+ {
+ integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==,
+ }
+ engines: { node: ">= 0.4" }
+ hasBin: true
+
+ resolve@2.0.0-next.7:
+ resolution:
+ {
+ integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==,
+ }
+ engines: { node: ">= 0.4" }
+ hasBin: true
+
+ reusify@1.1.0:
+ resolution:
+ {
+ integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==,
+ }
+ engines: { iojs: ">=1.0.0", node: ">=0.10.0" }
+
+ rolldown@1.2.6:
+ resolution:
+ {
+ integrity: sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution:
+ {
+ integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
+ }
+
+ safe-array-concat@1.1.4:
+ resolution:
+ {
+ integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==,
+ }
+ engines: { node: ">=0.4" }
+
+ safe-push-apply@1.0.0:
+ resolution:
+ {
+ integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ safe-regex-test@1.1.0:
+ resolution:
+ {
+ integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ scheduler@0.27.0:
+ resolution:
+ {
+ integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==,
+ }
+
+ semver@6.3.1:
+ resolution:
+ {
+ integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ }
+ hasBin: true
+
+ semver@7.8.5:
+ resolution:
+ {
+ integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==,
+ }
+ engines: { node: ">=10" }
+ hasBin: true
+
+ set-function-length@1.2.2:
+ resolution:
+ {
+ integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ set-function-name@2.0.2:
+ resolution:
+ {
+ integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ set-proto@1.0.0:
+ resolution:
+ {
+ integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ sharp@0.35.4:
+ resolution:
+ {
+ integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==,
+ }
+ engines: { node: ">=20.9.0" }
+ peerDependencies:
+ "@types/node": "*"
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+
+ shebang-command@2.0.0:
+ resolution:
+ {
+ integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
+ }
+ engines: { node: ">=8" }
+
+ shebang-regex@3.0.0:
+ resolution:
+ {
+ integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
+ }
+ engines: { node: ">=8" }
+
+ side-channel-list@1.0.1:
+ resolution:
+ {
+ integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel-map@1.0.1:
+ resolution:
+ {
+ integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel-weakmap@1.0.2:
+ resolution:
+ {
+ integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel@1.1.1:
+ resolution:
+ {
+ integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ siginfo@2.0.0:
+ resolution:
+ {
+ integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==,
+ }
+
+ source-map-js@1.2.1:
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ source-map@0.6.1:
+ resolution:
+ {
+ integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ stackback@0.0.2:
+ resolution:
+ {
+ integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==,
+ }
+
+ std-env@4.2.0:
+ resolution:
+ {
+ integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==,
+ }
+
+ stop-iteration-iterator@1.1.0:
+ resolution:
+ {
+ integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.includes@2.0.1:
+ resolution:
+ {
+ integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.matchall@4.1.0:
+ resolution:
+ {
+ integrity: sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.repeat@1.0.0:
+ resolution:
+ {
+ integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==,
+ }
+
+ string.prototype.trim@1.2.11:
+ resolution:
+ {
+ integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.trimend@1.0.10:
+ resolution:
+ {
+ integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.trimstart@1.0.8:
+ resolution:
+ {
+ integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ strip-indent@4.1.1:
+ resolution:
+ {
+ integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==,
+ }
+ engines: { node: ">=12" }
+
+ strip-json-comments@3.1.1:
+ resolution:
+ {
+ integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
+ }
+ engines: { node: ">=8" }
+
+ styled-jsx@5.1.6:
+ resolution:
+ {
+ integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ peerDependencies:
+ "@babel/core": "*"
+ babel-plugin-macros: "*"
+ react: ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ peerDependenciesMeta:
+ "@babel/core":
+ optional: true
+ babel-plugin-macros:
+ optional: true
+
+ supports-color@7.2.0:
+ resolution:
+ {
+ integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
+ }
+ engines: { node: ">=8" }
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution:
+ {
+ integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ synckit@0.11.13:
+ resolution:
+ {
+ integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
+
+ tinybench@2.9.0:
+ resolution:
+ {
+ integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==,
+ }
+
+ tinyexec@1.3.0:
+ resolution:
+ {
+ integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==,
+ }
+ engines: { node: ">=18" }
+
+ tinyglobby@0.2.17:
+ resolution:
+ {
+ integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==,
+ }
+ engines: { node: ">=12.0.0" }
+
+ tinyrainbow@3.1.1:
+ resolution:
+ {
+ integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==,
+ }
+ engines: { node: ">=14.0.0" }
+
+ to-regex-range@5.0.1:
+ resolution:
+ {
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
+ }
+ engines: { node: ">=8.0" }
+
+ too-wordy@0.3.6:
+ resolution:
+ {
+ integrity: sha512-fK4DKkEcrpBbK6uANekH37VeNAb/88qKdkqc/nBOFJpHdvXKXdA4lZRkiM6zNlow00Zp4W4/lnWyqqCaOQlg/w==,
+ }
+ engines: { node: ">=6", npm: ">=5" }
+
+ ts-api-utils@2.5.0:
+ resolution:
+ {
+ integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==,
+ }
+ engines: { node: ">=18.12" }
+ peerDependencies:
+ typescript: ">=4.8.4"
+
+ ts-declaration-location@1.0.7:
+ resolution:
+ {
+ integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==,
+ }
+ peerDependencies:
+ typescript: ">=4.0.0"
+
+ tslib@2.8.1:
+ resolution:
+ {
+ integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ }
+
+ turbo@2.10.12:
+ resolution:
+ {
+ integrity: sha512-AswgMPnpOoaVZHrrSBejETzEbuIA69OVGwfkHwfrY0A23VjWXBANzgq9+OymWOHAIArB7D1+1z498WY8fGg1Jw==,
+ }
+ hasBin: true
+
+ type-check@0.4.0:
+ resolution:
+ {
+ integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ typed-array-buffer@1.0.3:
+ resolution:
+ {
+ integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-byte-length@1.0.3:
+ resolution:
+ {
+ integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-byte-offset@1.0.4:
+ resolution:
+ {
+ integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-length@1.0.8:
+ resolution:
+ {
+ integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typescript-eslint@8.68.0:
+ resolution:
+ {
+ integrity: sha512-MHy0Y0ynqeEbx/S45+i/bBssdy3X6KNBfmJAP35GrgtNxu2TQ5K5xsFDhAnmsq1jvpdoZOPG1LGtJo0HWqYCrQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: ">=4.8.4 <6.1.0"
+
+ typescript@6.0.3:
+ resolution:
+ {
+ integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==,
+ }
+ engines: { node: ">=14.17" }
+ hasBin: true
+
+ typescript@7.0.2:
+ resolution:
+ {
+ integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==,
+ }
+ engines: { node: ">=16.20.0" }
+ hasBin: true
+
+ uglify-js@3.19.3:
+ resolution:
+ {
+ integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==,
+ }
+ engines: { node: ">=0.8.0" }
+ hasBin: true
+
+ unbox-primitive@1.1.0:
+ resolution:
+ {
+ integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ undici-types@6.21.0:
+ resolution:
+ {
+ integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==,
+ }
+
+ update-browserslist-db@1.3.2:
+ resolution:
+ {
+ integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==,
+ }
+ hasBin: true
+ peerDependencies:
+ browserslist: ">= 4.21.0"
+
+ uri-js@4.4.1:
+ resolution:
+ {
+ integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
+ }
+
+ vite@8.2.2:
+ resolution:
+ {
+ integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ hasBin: true
+ peerDependencies:
+ "@types/node": ^20.19.0 || >=22.12.0
+ "@vitejs/devtools": ^0.4.0 || ^0.5.0
+ 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
+
+ vitest@4.1.11:
+ resolution:
+ {
+ integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==,
+ }
+ engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ hasBin: true
+ peerDependencies:
+ "@edge-runtime/vm": "*"
+ "@opentelemetry/api": ^1.9.0
+ "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0
+ "@vitest/browser-playwright": 4.1.11
+ "@vitest/browser-preview": 4.1.11
+ "@vitest/browser-webdriverio": 4.1.11
+ "@vitest/coverage-istanbul": 4.1.11
+ "@vitest/coverage-v8": 4.1.11
+ "@vitest/ui": 4.1.11
+ happy-dom: "*"
+ jsdom: "*"
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ "@edge-runtime/vm":
+ optional: true
+ "@opentelemetry/api":
+ optional: true
+ "@types/node":
+ optional: true
+ "@vitest/browser-playwright":
+ optional: true
+ "@vitest/browser-preview":
+ optional: true
+ "@vitest/browser-webdriverio":
+ optional: true
+ "@vitest/coverage-istanbul":
+ optional: true
+ "@vitest/coverage-v8":
+ optional: true
+ "@vitest/ui":
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
+ weasel-words@0.1.1:
+ resolution:
+ {
+ integrity: sha512-rWkTAGqs4TN6qreS06+irmFUMrQVx5KoFjD8CxMHUsAwmxw/upDcfleaEYOLsonUbornahg+VJ9xrWxp4udyJA==,
+ }
+
+ which-boxed-primitive@1.1.1:
+ resolution:
+ {
+ integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-builtin-type@1.2.1:
+ resolution:
+ {
+ integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-collection@1.0.2:
+ resolution:
+ {
+ integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-typed-array@1.1.22:
+ resolution:
+ {
+ integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which@2.0.2:
+ resolution:
+ {
+ integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
+ }
+ engines: { node: ">= 8" }
+ hasBin: true
+
+ why-is-node-running@2.3.0:
+ resolution:
+ {
+ integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==,
+ }
+ engines: { node: ">=8" }
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution:
+ {
+ integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ wordwrap@1.0.0:
+ resolution:
+ {
+ integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==,
+ }
+
+ write-good@1.0.8:
+ resolution:
+ {
+ integrity: sha512-P1Ct7+DNrOcr2JAxDZ3Q5i5sx2LSveu7iLaoUL0A+YiG0GKf0l5+9j3rwMeyh6JeTL1+HfQV1rnwEvzhNIvpFw==,
+ }
+ engines: { node: ">=6", npm: ">=5" }
+ hasBin: true
+
+ ws@8.21.0:
+ resolution:
+ {
+ integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==,
+ }
+ engines: { node: ">=10.0.0" }
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ">=5.0.2"
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ yallist@3.1.1:
+ resolution:
+ {
+ integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
+ }
+
+ yocto-queue@0.1.0:
+ resolution:
+ {
+ integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
+ }
+ engines: { node: ">=10" }
+
+ zod-validation-error@4.0.2:
+ resolution:
+ {
+ integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==,
+ }
+ engines: { node: ">=18.0.0" }
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+
+ zod@4.5.4:
+ resolution:
+ {
+ integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==,
+ }
+
+snapshots:
+ "@babel/code-frame@7.29.7":
+ dependencies:
+ "@babel/helper-validator-identifier": 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ "@babel/compat-data@7.29.7": {}
+
+ "@babel/core@7.29.7(supports-color@7.2.0)":
+ dependencies:
+ "@babel/code-frame": 7.29.7
+ "@babel/generator": 7.29.8
+ "@babel/helper-compilation-targets": 7.29.7
+ "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0)
+ "@babel/helpers": 7.29.7
+ "@babel/parser": 7.29.8
+ "@babel/template": 7.29.7
+ "@babel/traverse": 7.29.8(supports-color@7.2.0)
+ "@babel/types": 7.29.8
+ "@jridgewell/remapping": 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3(supports-color@7.2.0)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/generator@7.29.8":
+ dependencies:
+ "@babel/parser": 7.29.8
+ "@babel/types": 7.29.8
+ "@jridgewell/gen-mapping": 0.3.13
+ "@jridgewell/trace-mapping": 0.3.31
+ jsesc: 3.1.0
+
+ "@babel/helper-compilation-targets@7.29.7":
+ dependencies:
+ "@babel/compat-data": 7.29.7
+ "@babel/helper-validator-option": 7.29.7
+ browserslist: 4.28.8
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ "@babel/helper-globals@7.29.7": {}
+
+ "@babel/helper-module-imports@7.29.7(supports-color@7.2.0)":
+ dependencies:
+ "@babel/traverse": 7.29.8(supports-color@7.2.0)
+ "@babel/types": 7.29.8
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@babel/core": 7.29.7(supports-color@7.2.0)
+ "@babel/helper-module-imports": 7.29.7(supports-color@7.2.0)
+ "@babel/helper-validator-identifier": 7.29.7
+ "@babel/traverse": 7.29.8(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-string-parser@7.29.7": {}
+
+ "@babel/helper-validator-identifier@7.29.7": {}
+
+ "@babel/helper-validator-option@7.29.7": {}
+
+ "@babel/helpers@7.29.7":
+ dependencies:
+ "@babel/template": 7.29.7
+ "@babel/types": 7.29.8
+
+ "@babel/parser@7.29.8":
+ dependencies:
+ "@babel/types": 7.29.8
+
+ "@babel/template@7.29.7":
+ dependencies:
+ "@babel/code-frame": 7.29.7
+ "@babel/parser": 7.29.8
+ "@babel/types": 7.29.8
+
+ "@babel/traverse@7.29.8(supports-color@7.2.0)":
+ 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.4.3(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/types@7.29.8":
+ dependencies:
+ "@babel/helper-string-parser": 7.29.7
+ "@babel/helper-validator-identifier": 7.29.7
+
+ "@bcoe/v8-coverage@1.0.2": {}
+
+ "@boundaries/elements@1.2.0(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ eslint-import-resolver-node: 0.3.9(supports-color@7.2.0)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint-import-resolver-node@0.3.9(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ handlebars: 4.7.8
+ is-core-module: 2.16.1
+ micromatch: 4.0.8
+ transitivePeerDependencies:
+ - "@typescript-eslint/parser"
+ - eslint
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ "@convex-dev/eslint-plugin@1.2.2(@typescript/typescript6@6.0.2)(convex@1.45.0(react@19.2.8))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/types": 8.58.2
+ "@typescript-eslint/utils": 8.58.2(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ convex: 1.45.0(react@19.2.8)
+ transitivePeerDependencies:
+ - eslint
+ - supports-color
+ - typescript
+
+ "@emnapi/runtime@1.11.3":
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ "@esbuild/aix-ppc64@0.27.0":
+ optional: true
+
+ "@esbuild/android-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/android-arm@0.27.0":
+ optional: true
+
+ "@esbuild/android-x64@0.27.0":
+ optional: true
+
+ "@esbuild/darwin-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/darwin-x64@0.27.0":
+ optional: true
+
+ "@esbuild/freebsd-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/freebsd-x64@0.27.0":
+ optional: true
+
+ "@esbuild/linux-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/linux-arm@0.27.0":
+ optional: true
+
+ "@esbuild/linux-ia32@0.27.0":
+ optional: true
+
+ "@esbuild/linux-loong64@0.27.0":
+ optional: true
+
+ "@esbuild/linux-mips64el@0.27.0":
+ optional: true
+
+ "@esbuild/linux-ppc64@0.27.0":
+ optional: true
+
+ "@esbuild/linux-riscv64@0.27.0":
+ optional: true
+
+ "@esbuild/linux-s390x@0.27.0":
+ optional: true
+
+ "@esbuild/linux-x64@0.27.0":
+ optional: true
+
+ "@esbuild/netbsd-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/netbsd-x64@0.27.0":
+ optional: true
+
+ "@esbuild/openbsd-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/openbsd-x64@0.27.0":
+ optional: true
+
+ "@esbuild/openharmony-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/sunos-x64@0.27.0":
+ optional: true
+
+ "@esbuild/win32-arm64@0.27.0":
+ optional: true
+
+ "@esbuild/win32-ia32@0.27.0":
+ optional: true
+
+ "@esbuild/win32-x64@0.27.0":
+ optional: true
+
+ "@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(supports-color@7.2.0))":
+ dependencies:
+ eslint: 9.39.5(supports-color@7.2.0)
+ eslint-visitor-keys: 3.4.3
+
+ "@eslint-community/eslint-utils@4.9.1(eslint@9.39.5(supports-color@7.2.0))":
+ dependencies:
+ eslint: 9.39.5(supports-color@7.2.0)
+ eslint-visitor-keys: 3.4.3
+
+ "@eslint-community/regexpp@4.12.2": {}
+
+ "@eslint/config-array@0.21.2(supports-color@7.2.0)":
+ dependencies:
+ "@eslint/object-schema": 2.1.7
+ debug: 4.4.3(supports-color@7.2.0)
+ minimatch: 3.1.5
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/config-helpers@0.4.2":
+ dependencies:
+ "@eslint/core": 0.17.0
+
+ "@eslint/core@0.17.0":
+ dependencies:
+ "@types/json-schema": 7.0.15
+
+ "@eslint/eslintrc@3.3.6(supports-color@7.2.0)":
+ dependencies:
+ ajv: 6.15.0
+ debug: 4.4.3(supports-color@7.2.0)
+ espree: 10.4.0
+ globals: 14.0.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.3.2
+ minimatch: 3.1.5
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/js@9.39.5": {}
+
+ "@eslint/object-schema@2.1.7": {}
+
+ "@eslint/plugin-kit@0.4.1":
+ dependencies:
+ "@eslint/core": 0.17.0
+ levn: 0.4.1
+
+ "@humanfs/core@0.19.2":
+ dependencies:
+ "@humanfs/types": 0.15.0
+
+ "@humanfs/node@0.16.8":
+ dependencies:
+ "@humanfs/core": 0.19.2
+ "@humanfs/types": 0.15.0
+ "@humanwhocodes/retry": 0.4.3
+
+ "@humanfs/types@0.15.0": {}
+
+ "@humanwhocodes/module-importer@1.0.1": {}
+
+ "@humanwhocodes/retry@0.4.3": {}
+
+ "@img/colour@1.1.0":
+ optional: true
+
+ "@img/sharp-darwin-arm64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-arm64": 1.3.3
+ optional: true
+
+ "@img/sharp-darwin-x64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-x64": 1.3.3
+ optional: true
+
+ "@img/sharp-freebsd-wasm32@0.35.4":
+ dependencies:
+ "@img/sharp-wasm32": 0.35.4
+ optional: true
+
+ "@img/sharp-libvips-darwin-arm64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-darwin-x64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linux-arm64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linux-arm@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linux-ppc64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linux-riscv64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linux-s390x@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linux-x64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linuxmusl-arm64@1.3.3":
+ optional: true
+
+ "@img/sharp-libvips-linuxmusl-x64@1.3.3":
+ optional: true
+
+ "@img/sharp-linux-arm64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm64": 1.3.3
+ optional: true
+
+ "@img/sharp-linux-arm@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm": 1.3.3
+ optional: true
+
+ "@img/sharp-linux-ppc64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-ppc64": 1.3.3
+ optional: true
+
+ "@img/sharp-linux-riscv64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-riscv64": 1.3.3
+ optional: true
+
+ "@img/sharp-linux-s390x@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-s390x": 1.3.3
+ optional: true
+
+ "@img/sharp-linux-x64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-x64": 1.3.3
+ optional: true
+
+ "@img/sharp-linuxmusl-arm64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-arm64": 1.3.3
+ optional: true
+
+ "@img/sharp-linuxmusl-x64@0.35.4":
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-x64": 1.3.3
+ optional: true
+
+ "@img/sharp-wasm32@0.35.4":
+ dependencies:
+ "@emnapi/runtime": 1.11.3
+ optional: true
+
+ "@img/sharp-webcontainers-wasm32@0.35.4":
+ dependencies:
+ "@img/sharp-wasm32": 0.35.4
+ optional: true
+
+ "@img/sharp-win32-arm64@0.35.4":
+ optional: true
+
+ "@img/sharp-win32-ia32@0.35.4":
+ optional: true
+
+ "@img/sharp-win32-x64@0.35.4":
+ optional: true
+
+ "@jridgewell/gen-mapping@0.3.13":
+ dependencies:
+ "@jridgewell/sourcemap-codec": 1.6.0
+ "@jridgewell/trace-mapping": 0.3.31
+
+ "@jridgewell/remapping@2.3.5":
+ dependencies:
+ "@jridgewell/gen-mapping": 0.3.13
+ "@jridgewell/trace-mapping": 0.3.31
+
+ "@jridgewell/resolve-uri@3.1.2": {}
+
+ "@jridgewell/sourcemap-codec@1.6.0": {}
+
+ "@jridgewell/trace-mapping@0.3.31":
+ dependencies:
+ "@jridgewell/resolve-uri": 3.1.2
+ "@jridgewell/sourcemap-codec": 1.6.0
+
+ "@next/env@16.3.3": {}
+
+ "@next/eslint-plugin-next@16.3.3(eslint@9.39.5(supports-color@7.2.0))":
+ dependencies:
+ "@eslint-community/eslint-utils": 4.9.1(eslint@9.39.5(supports-color@7.2.0))
+ fast-glob: 3.3.1
+ transitivePeerDependencies:
+ - eslint
+
+ "@next/swc-darwin-arm64@16.3.3":
+ optional: true
+
+ "@next/swc-darwin-x64@16.3.3":
+ optional: true
+
+ "@next/swc-linux-arm64-gnu@16.3.3":
+ optional: true
+
+ "@next/swc-linux-arm64-musl@16.3.3":
+ optional: true
+
+ "@next/swc-linux-x64-gnu@16.3.3":
+ optional: true
+
+ "@next/swc-linux-x64-musl@16.3.3":
+ optional: true
+
+ "@next/swc-win32-arm64-msvc@16.3.3":
+ optional: true
+
+ "@next/swc-win32-x64-msvc@16.3.3":
+ optional: true
+
+ "@nodelib/fs.scandir@2.1.5":
+ dependencies:
+ "@nodelib/fs.stat": 2.0.5
+ run-parallel: 1.2.0
+
+ "@nodelib/fs.stat@2.0.5": {}
+
+ "@nodelib/fs.walk@1.2.8":
+ dependencies:
+ "@nodelib/fs.scandir": 2.1.5
+ fastq: 1.20.3
+
+ "@oxc-project/types@0.147.0": {}
+
+ "@pkgr/core@0.3.6": {}
+
+ "@rolldown/binding-android-arm-eabi@1.2.6":
+ optional: true
+
+ "@rolldown/binding-android-arm64@1.2.6":
+ optional: true
+
+ "@rolldown/binding-darwin-arm64@1.2.6":
+ optional: true
+
+ "@rolldown/binding-darwin-x64@1.2.6":
+ optional: true
+
+ "@rolldown/binding-freebsd-x64@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-arm-gnueabihf@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-arm64-gnu@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-arm64-musl@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-ppc64-gnu@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-s390x-gnu@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-x64-gnu@1.2.6":
+ optional: true
+
+ "@rolldown/binding-linux-x64-musl@1.2.6":
+ optional: true
+
+ "@rolldown/binding-openharmony-arm64@1.2.6":
+ optional: true
+
+ "@rolldown/binding-win32-arm64-msvc@1.2.6":
+ optional: true
+
+ "@rolldown/binding-win32-x64-msvc@1.2.6":
+ optional: true
+
+ "@rolldown/pluginutils@1.0.1": {}
+
+ "@standard-schema/spec@1.1.0": {}
+
+ "@swc/helpers@0.5.23":
+ dependencies:
+ tslib: 2.8.1
+
+ "@turbo/darwin-64@2.10.12":
+ optional: true
+
+ "@turbo/darwin-arm64@2.10.12":
+ optional: true
+
+ "@turbo/linux-64@2.10.12":
+ optional: true
+
+ "@turbo/linux-arm64@2.10.12":
+ optional: true
+
+ "@turbo/windows-64@2.10.12":
+ optional: true
+
+ "@turbo/windows-arm64@2.10.12":
+ optional: true
+
+ "@types/chai@5.2.3":
+ dependencies:
+ "@types/deep-eql": 4.0.2
+ assertion-error: 2.0.1
+
+ "@types/deep-eql@4.0.2": {}
+
+ "@types/estree@1.0.9": {}
+
+ "@types/json-schema@7.0.15": {}
+
+ "@types/node@22.20.1":
+ dependencies:
+ undici-types: 6.21.0
+
+ "@types/react-dom@19.2.5(@types/react@19.2.18)":
+ dependencies:
+ "@types/react": 19.2.18
+
+ "@types/react@19.2.18":
+ dependencies:
+ csstype: 3.2.3
+
+ "@typescript-eslint/eslint-plugin@8.68.0(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@eslint-community/regexpp": 4.12.2
+ "@typescript-eslint/parser": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ "@typescript-eslint/scope-manager": 8.68.0
+ "@typescript-eslint/type-utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ "@typescript-eslint/utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ "@typescript-eslint/visitor-keys": 8.68.0
+ eslint: 9.39.5(supports-color@7.2.0)
+ ignore: 7.0.7
+ natural-compare: 1.4.0
+ ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/scope-manager": 8.68.0
+ "@typescript-eslint/types": 8.68.0
+ "@typescript-eslint/typescript-estree": 8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ "@typescript-eslint/visitor-keys": 8.68.0
+ debug: 4.4.3(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/project-service@8.58.2(@typescript/typescript6@6.0.2)(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/tsconfig-utils": 8.58.2(@typescript/typescript6@6.0.2)
+ "@typescript-eslint/types": 8.58.2
+ debug: 4.4.3(supports-color@7.2.0)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/project-service@8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/tsconfig-utils": 8.68.0(@typescript/typescript6@6.0.2)
+ "@typescript-eslint/types": 8.68.0
+ debug: 4.4.3(supports-color@7.2.0)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/scope-manager@8.58.2":
+ dependencies:
+ "@typescript-eslint/types": 8.58.2
+ "@typescript-eslint/visitor-keys": 8.58.2
+
+ "@typescript-eslint/scope-manager@8.68.0":
+ dependencies:
+ "@typescript-eslint/types": 8.68.0
+ "@typescript-eslint/visitor-keys": 8.68.0
+
+ "@typescript-eslint/tsconfig-utils@8.58.2(@typescript/typescript6@6.0.2)":
+ dependencies:
+ typescript: "@typescript/typescript6@6.0.2"
+
+ "@typescript-eslint/tsconfig-utils@8.68.0(@typescript/typescript6@6.0.2)":
+ dependencies:
+ typescript: "@typescript/typescript6@6.0.2"
+
+ "@typescript-eslint/type-utils@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/types": 8.68.0
+ "@typescript-eslint/typescript-estree": 8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ "@typescript-eslint/utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ debug: 4.4.3(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/types@8.58.2": {}
+
+ "@typescript-eslint/types@8.68.0": {}
+
+ "@typescript-eslint/typescript-estree@8.58.2(@typescript/typescript6@6.0.2)(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/project-service": 8.58.2(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ "@typescript-eslint/tsconfig-utils": 8.58.2(@typescript/typescript6@6.0.2)
+ "@typescript-eslint/types": 8.58.2
+ "@typescript-eslint/visitor-keys": 8.58.2
+ debug: 4.4.3(supports-color@7.2.0)
+ minimatch: 10.2.6
+ semver: 7.8.5
+ tinyglobby: 0.2.17
+ ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/typescript-estree@8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)":
+ dependencies:
+ "@typescript-eslint/project-service": 8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ "@typescript-eslint/tsconfig-utils": 8.68.0(@typescript/typescript6@6.0.2)
+ "@typescript-eslint/types": 8.68.0
+ "@typescript-eslint/visitor-keys": 8.68.0
+ debug: 4.4.3(supports-color@7.2.0)
+ minimatch: 10.2.6
+ semver: 7.8.5
+ tinyglobby: 0.2.17
+ ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/utils@8.58.2(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@eslint-community/eslint-utils": 4.10.1(eslint@9.39.5(supports-color@7.2.0))
+ "@typescript-eslint/scope-manager": 8.58.2
+ "@typescript-eslint/types": 8.58.2
+ "@typescript-eslint/typescript-estree": 8.58.2(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/utils@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)":
+ dependencies:
+ "@eslint-community/eslint-utils": 4.10.1(eslint@9.39.5(supports-color@7.2.0))
+ "@typescript-eslint/scope-manager": 8.68.0
+ "@typescript-eslint/types": 8.68.0
+ "@typescript-eslint/typescript-estree": 8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/visitor-keys@8.58.2":
+ dependencies:
+ "@typescript-eslint/types": 8.58.2
+ eslint-visitor-keys: 5.0.1
+
+ "@typescript-eslint/visitor-keys@8.68.0":
+ dependencies:
+ "@typescript-eslint/types": 8.68.0
+ eslint-visitor-keys: 5.0.1
+
+ "@typescript/typescript-aix-ppc64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-darwin-arm64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-darwin-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-freebsd-arm64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-freebsd-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-arm64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-arm@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-loong64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-mips64el@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-ppc64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-riscv64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-s390x@7.0.2":
+ optional: true
+
+ "@typescript/typescript-linux-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-netbsd-arm64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-netbsd-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-openbsd-arm64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-openbsd-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-sunos-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-win32-arm64@7.0.2":
+ optional: true
+
+ "@typescript/typescript-win32-x64@7.0.2":
+ optional: true
+
+ "@typescript/typescript6@6.0.2":
+ dependencies:
+ "@typescript/old": typescript@6.0.3
+
+ "@vitest/coverage-v8@4.1.11(vitest@4.1.11)":
+ dependencies:
+ "@bcoe/v8-coverage": 1.0.2
+ "@vitest/utils": 4.1.11
+ ast-v8-to-istanbul: 1.0.5
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-report: 3.0.1
+ istanbul-reports: 3.2.0
+ magicast: 0.5.4
+ obug: 2.1.4
+ std-env: 4.2.0
+ tinyrainbow: 3.1.1
+ vitest: 4.1.11(@types/node@22.20.1)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.0))
+
+ "@vitest/expect@4.1.11":
+ dependencies:
+ "@standard-schema/spec": 1.1.0
+ "@types/chai": 5.2.3
+ "@vitest/spy": 4.1.11
+ "@vitest/utils": 4.1.11
+ chai: 6.2.2
+ tinyrainbow: 3.1.1
+
+ "@vitest/mocker@4.1.11(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.0))":
+ dependencies:
+ "@vitest/spy": 4.1.11
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.0)
+
+ "@vitest/pretty-format@4.1.11":
+ dependencies:
+ tinyrainbow: 3.1.1
+
+ "@vitest/runner@4.1.11":
+ dependencies:
+ "@vitest/utils": 4.1.11
+ pathe: 2.0.3
+
+ "@vitest/snapshot@4.1.11":
+ dependencies:
+ "@vitest/pretty-format": 4.1.11
+ "@vitest/utils": 4.1.11
+ magic-string: 0.30.21
+ pathe: 2.0.3
+
+ "@vitest/spy@4.1.11": {}
+
+ "@vitest/utils@4.1.11":
+ dependencies:
+ "@vitest/pretty-format": 4.1.11
+ convert-source-map: 2.0.0
+ tinyrainbow: 3.1.1
+
+ "@vllnt/eslint-config@1.0.1(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(convex@1.45.0(react@19.2.8))(eslint@9.39.5(supports-color@7.2.0))(prettier@3.9.6)(supports-color@7.2.0)(turbo@2.10.12)":
+ dependencies:
+ "@convex-dev/eslint-plugin": 1.2.2(@typescript/typescript6@6.0.2)(convex@1.45.0(react@19.2.8))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ "@eslint/js": 9.39.5
+ "@next/eslint-plugin-next": 16.3.3(eslint@9.39.5(supports-color@7.2.0))
+ eslint: 9.39.5(supports-color@7.2.0)
+ eslint-config-prettier: 10.1.8(eslint@9.39.5(supports-color@7.2.0))
+ eslint-plugin-boundaries: 5.4.0(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint-plugin-css-modules: 2.12.0(eslint@9.39.5(supports-color@7.2.0))
+ eslint-plugin-functional: 9.0.5(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.5(supports-color@7.2.0))
+ eslint-plugin-perfectionist: 5.10.1(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.5(supports-color@7.2.0)))(eslint@9.39.5(supports-color@7.2.0))(prettier@3.9.6)
+ eslint-plugin-react: 7.37.5(eslint@9.39.5(supports-color@7.2.0))
+ eslint-plugin-react-hooks: 7.1.1(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint-plugin-simple-import-sort: 12.1.1(eslint@9.39.5(supports-color@7.2.0))
+ eslint-plugin-turbo: 2.10.12(eslint@9.39.5(supports-color@7.2.0))(turbo@2.10.12)
+ eslint-plugin-unicorn: 62.0.0(eslint@9.39.5(supports-color@7.2.0))
+ eslint-plugin-write-good-comments: 0.2.0
+ prettier: 3.9.6
+ typescript-eslint: 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ optionalDependencies:
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - "@types/eslint"
+ - "@typescript-eslint/parser"
+ - convex
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ - turbo
+
+ acorn-jsx@5.3.2(acorn@8.18.0):
+ dependencies:
+ acorn: 8.18.0
+
+ acorn@8.18.0: {}
+
+ adverb-where@0.2.6: {}
+
+ ajv@6.15.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ argparse@2.0.1: {}
+
+ aria-query@5.3.2: {}
+
+ array-buffer-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ is-array-buffer: 3.0.5
+
+ array-includes@3.1.9:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-object-atoms: 1.1.2
+ get-intrinsic: 1.3.0
+ is-string: 1.1.1
+ math-intrinsics: 1.1.0
+
+ array.prototype.findlast@1.2.5:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flat@1.3.3:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flatmap@1.3.3:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.tosorted@1.1.4:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.1.0
+
+ arraybuffer.prototype.slice@1.0.4:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
+
+ assertion-error@2.0.1: {}
+
+ ast-types-flow@0.0.8: {}
+
+ ast-v8-to-istanbul@1.0.5:
+ dependencies:
+ "@jridgewell/trace-mapping": 0.3.31
+ estree-walker: 3.0.3
+ js-tokens: 10.0.0
+
+ async-function@1.0.0: {}
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
+
+ axe-core@4.13.0: {}
+
+ axobject-query@4.1.0: {}
+
+ balanced-match@1.0.2: {}
+
+ balanced-match@4.0.4: {}
+
+ baseline-browser-mapping@2.11.20: {}
+
+ brace-expansion@1.1.18:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@5.0.9:
+ dependencies:
+ balanced-match: 4.0.4
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.28.8:
+ dependencies:
+ baseline-browser-mapping: 2.11.20
+ caniuse-lite: 1.0.30001810
+ electron-to-chromium: 1.5.416
+ node-releases: 2.0.54
+ update-browserslist-db: 1.3.2(browserslist@4.28.8)
+
+ builtin-modules@5.3.0: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.9:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0: {}
+
+ caniuse-lite@1.0.30001810: {}
+
+ chai@6.2.2: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ change-case@5.4.4: {}
+
+ ci-info@4.4.0: {}
+
+ clean-regexp@1.0.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
+ client-only@0.0.1: {}
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ commander@2.20.3: {}
+
+ concat-map@0.0.1: {}
+
+ convert-source-map@2.0.0: {}
+
+ convex@1.45.0(react@19.2.8):
+ dependencies:
+ esbuild: 0.27.0
+ prettier: 3.9.6
+ ws: 8.21.0
+ optionalDependencies:
+ react: 19.2.8
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ core-js-compat@3.50.0:
+ dependencies:
+ browserslist: 4.28.8
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ csstype@3.2.3: {}
+
+ damerau-levenshtein@1.0.8: {}
+
+ data-view-buffer@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-offset@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ debug@3.2.7(supports-color@7.2.0):
+ dependencies:
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 7.2.0
+
+ debug@4.4.3(supports-color@7.2.0):
+ dependencies:
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 7.2.0
+
+ deep-is@0.1.4: {}
+
+ deepmerge-ts@7.1.6: {}
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ detect-libc@2.1.2: {}
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dotenv@16.0.3: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ e-prime@0.10.4: {}
+
+ electron-to-chromium@1.5.416: {}
+
+ emoji-regex@9.2.2: {}
+
+ es-abstract-get@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ is-callable: 1.2.7
+ object-inspect: 1.13.4
+
+ es-abstract@1.24.2:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.4
+ function.prototype.name: 1.2.0
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.4
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-negative-zero: 2.0.3
+ is-regex: 1.2.1
+ is-set: 2.0.3
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.2
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.4
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ stop-iteration-iterator: 1.1.0
+ string.prototype.trim: 1.2.11
+ string.prototype.trimend: 1.0.10
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.8
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.22
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-iterator-helpers@1.4.0:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.1.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ iterator.prototype: 1.1.5
+ math-intrinsics: 1.1.0
+
+ es-module-lexer@2.3.2: {}
+
+ es-object-atoms@1.1.2:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.4
+
+ es-shim-unscopables@1.1.0:
+ dependencies:
+ hasown: 2.0.4
+
+ es-to-primitive@1.3.4:
+ dependencies:
+ es-abstract-get: 1.0.0
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+
+ esbuild@0.27.0:
+ optionalDependencies:
+ "@esbuild/aix-ppc64": 0.27.0
+ "@esbuild/android-arm": 0.27.0
+ "@esbuild/android-arm64": 0.27.0
+ "@esbuild/android-x64": 0.27.0
+ "@esbuild/darwin-arm64": 0.27.0
+ "@esbuild/darwin-x64": 0.27.0
+ "@esbuild/freebsd-arm64": 0.27.0
+ "@esbuild/freebsd-x64": 0.27.0
+ "@esbuild/linux-arm": 0.27.0
+ "@esbuild/linux-arm64": 0.27.0
+ "@esbuild/linux-ia32": 0.27.0
+ "@esbuild/linux-loong64": 0.27.0
+ "@esbuild/linux-mips64el": 0.27.0
+ "@esbuild/linux-ppc64": 0.27.0
+ "@esbuild/linux-riscv64": 0.27.0
+ "@esbuild/linux-s390x": 0.27.0
+ "@esbuild/linux-x64": 0.27.0
+ "@esbuild/netbsd-arm64": 0.27.0
+ "@esbuild/netbsd-x64": 0.27.0
+ "@esbuild/openbsd-arm64": 0.27.0
+ "@esbuild/openbsd-x64": 0.27.0
+ "@esbuild/openharmony-arm64": 0.27.0
+ "@esbuild/sunos-x64": 0.27.0
+ "@esbuild/win32-arm64": 0.27.0
+ "@esbuild/win32-ia32": 0.27.0
+ "@esbuild/win32-x64": 0.27.0
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ eslint-config-prettier@10.1.8(eslint@9.39.5(supports-color@7.2.0)):
+ dependencies:
+ eslint: 9.39.5(supports-color@7.2.0)
+
+ eslint-import-resolver-node@0.3.9(supports-color@7.2.0):
+ dependencies:
+ debug: 3.2.7(supports-color@7.2.0)
+ is-core-module: 2.16.2
+ resolve: 1.22.12
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint-import-resolver-node@0.3.9(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ debug: 3.2.7(supports-color@7.2.0)
+ optionalDependencies:
+ "@typescript-eslint/parser": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ eslint-import-resolver-node: 0.3.9(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-boundaries@5.4.0(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ "@boundaries/elements": 1.2.0(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ chalk: 4.1.2
+ eslint: 9.39.5(supports-color@7.2.0)
+ eslint-import-resolver-node: 0.3.9(supports-color@7.2.0)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint-import-resolver-node@0.3.9(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ micromatch: 4.0.8
+ transitivePeerDependencies:
+ - "@typescript-eslint/parser"
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-css-modules@2.12.0(eslint@9.39.5(supports-color@7.2.0)):
+ dependencies:
+ eslint: 9.39.5(supports-color@7.2.0)
+ gonzales-pe: 4.3.0
+ lodash: 4.18.1
+
+ eslint-plugin-functional@9.0.5(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ "@typescript-eslint/utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ deepmerge-ts: 7.1.6
+ escape-string-regexp: 5.0.0
+ eslint: 9.39.5(supports-color@7.2.0)
+ is-immutable-type: 5.0.4(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
+ ts-declaration-location: 1.0.7(@typescript/typescript6@6.0.2)
+ optionalDependencies:
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.5(supports-color@7.2.0)):
+ dependencies:
+ aria-query: 5.3.2
+ array-includes: 3.1.9
+ array.prototype.flatmap: 1.3.3
+ ast-types-flow: 0.0.8
+ axe-core: 4.13.0
+ axobject-query: 4.1.0
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ eslint: 9.39.5(supports-color@7.2.0)
+ hasown: 2.0.4
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.9
+ minimatch: 3.1.5
+ object.fromentries: 2.0.8
+ safe-regex-test: 1.1.0
+ string.prototype.includes: 2.0.1
+
+ eslint-plugin-perfectionist@5.10.1(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ "@typescript-eslint/utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ natural-orderby: 5.0.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.5(supports-color@7.2.0)))(eslint@9.39.5(supports-color@7.2.0))(prettier@3.9.6):
+ dependencies:
+ eslint: 9.39.5(supports-color@7.2.0)
+ prettier: 3.9.6
+ prettier-linter-helpers: 1.0.1
+ synckit: 0.11.13
+ optionalDependencies:
+ eslint-config-prettier: 10.1.8(eslint@9.39.5(supports-color@7.2.0))
+
+ eslint-plugin-react-hooks@7.1.1(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ "@babel/core": 7.29.7(supports-color@7.2.0)
+ "@babel/parser": 7.29.8
+ eslint: 9.39.5(supports-color@7.2.0)
+ hermes-parser: 0.25.1
+ zod: 4.5.4
+ zod-validation-error: 4.0.2(zod@4.5.4)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-react@7.37.5(eslint@9.39.5(supports-color@7.2.0)):
+ dependencies:
+ array-includes: 3.1.9
+ array.prototype.findlast: 1.2.5
+ array.prototype.flatmap: 1.3.3
+ array.prototype.tosorted: 1.1.4
+ doctrine: 2.1.0
+ es-iterator-helpers: 1.4.0
+ eslint: 9.39.5(supports-color@7.2.0)
+ estraverse: 5.3.0
+ hasown: 2.0.4
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.5
+ object.entries: 1.1.9
+ object.fromentries: 2.0.8
+ object.values: 1.2.1
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.7
+ semver: 6.3.1
+ string.prototype.matchall: 4.1.0
+ string.prototype.repeat: 1.0.0
+
+ eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.5(supports-color@7.2.0)):
+ dependencies:
+ eslint: 9.39.5(supports-color@7.2.0)
+
+ eslint-plugin-turbo@2.10.12(eslint@9.39.5(supports-color@7.2.0))(turbo@2.10.12):
+ dependencies:
+ dotenv: 16.0.3
+ eslint: 9.39.5(supports-color@7.2.0)
+ turbo: 2.10.12
+
+ eslint-plugin-unicorn@62.0.0(eslint@9.39.5(supports-color@7.2.0)):
+ dependencies:
+ "@babel/helper-validator-identifier": 7.29.7
+ "@eslint-community/eslint-utils": 4.10.1(eslint@9.39.5(supports-color@7.2.0))
+ "@eslint/plugin-kit": 0.4.1
+ change-case: 5.4.4
+ ci-info: 4.4.0
+ clean-regexp: 1.0.0
+ core-js-compat: 3.50.0
+ eslint: 9.39.5(supports-color@7.2.0)
+ esquery: 1.7.0
+ find-up-simple: 1.0.1
+ globals: 16.5.0
+ indent-string: 5.0.0
+ is-builtin-module: 5.0.0
+ jsesc: 3.1.0
+ pluralize: 8.0.0
+ regexp-tree: 0.1.27
+ regjsparser: 0.13.2
+ semver: 7.8.5
+ strip-indent: 4.1.1
+
+ eslint-plugin-write-good-comments@0.2.0:
+ dependencies:
+ requireindex: 1.1.0
+ write-good: 1.0.8
+
+ eslint-scope@8.4.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.2.1: {}
+
+ eslint-visitor-keys@5.0.1: {}
+
+ eslint@9.39.5(supports-color@7.2.0):
+ dependencies:
+ "@eslint-community/eslint-utils": 4.10.1(eslint@9.39.5(supports-color@7.2.0))
+ "@eslint-community/regexpp": 4.12.2
+ "@eslint/config-array": 0.21.2(supports-color@7.2.0)
+ "@eslint/config-helpers": 0.4.2
+ "@eslint/core": 0.17.0
+ "@eslint/eslintrc": 3.3.6(supports-color@7.2.0)
+ "@eslint/js": 9.39.5
+ "@eslint/plugin-kit": 0.4.1
+ "@humanfs/node": 0.16.8
+ "@humanwhocodes/module-importer": 1.0.1
+ "@humanwhocodes/retry": 0.4.3
+ "@types/estree": 1.0.9
+ ajv: 6.15.0
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.3(supports-color@7.2.0)
+ escape-string-regexp: 4.0.0
+ eslint-scope: 8.4.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
+ esquery: 1.7.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.5
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@10.4.0:
+ dependencies:
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
+ eslint-visitor-keys: 4.2.1
+
+ esquery@1.7.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ "@types/estree": 1.0.9
+
+ esutils@2.0.3: {}
+
+ expect-type@1.4.0: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-diff@1.3.0: {}
+
+ fast-glob@3.3.1:
+ dependencies:
+ "@nodelib/fs.stat": 2.0.5
+ "@nodelib/fs.walk": 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.20.3:
+ dependencies:
+ reusify: 1.1.0
+
+ fdir@6.5.0(picomatch@4.0.7):
+ optionalDependencies:
+ picomatch: 4.0.7
+
+ file-entry-cache@8.0.0:
+ dependencies:
+ flat-cache: 4.0.1
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-up-simple@1.0.1: {}
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.4.4
+ keyv: 4.5.4
+
+ flatted@3.4.4: {}
+
+ for-each@0.3.5:
+ dependencies:
+ is-callable: 1.2.7
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.2.0:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+ hasown: 2.0.4
+ is-callable: 1.2.7
+ is-document.all: 1.0.0
+
+ functions-have-names@1.2.3: {}
+
+ generator-function@2.0.1: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.4
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.2
+
+ get-symbol-description@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ globals@14.0.0: {}
+
+ globals@16.5.0: {}
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+
+ gonzales-pe@4.3.0:
+ dependencies:
+ minimist: 1.2.8
+
+ gopd@1.2.0: {}
+
+ handlebars@4.7.8:
+ dependencies:
+ minimist: 1.2.8
+ neo-async: 2.6.2
+ source-map: 0.6.1
+ wordwrap: 1.0.0
+ optionalDependencies:
+ uglify-js: 3.19.3
+
+ has-bigints@1.1.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-proto@1.2.0:
+ dependencies:
+ dunder-proto: 1.0.1
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.4:
+ dependencies:
+ function-bind: 1.1.2
+
+ hermes-estree@0.25.1: {}
+
+ hermes-parser@0.25.1:
+ dependencies:
+ hermes-estree: 0.25.1
+
+ html-escaper@2.0.2: {}
+
+ ignore@5.3.2: {}
+
+ ignore@7.0.7: {}
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@5.0.0: {}
+
+ internal-slot@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.4
+ side-channel: 1.1.1
+
+ is-array-buffer@3.0.5:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+
+ is-async-function@2.1.1:
+ dependencies:
+ async-function: 1.0.0
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-bigint@1.1.0:
+ dependencies:
+ has-bigints: 1.1.0
+
+ is-boolean-object@1.2.2:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-builtin-module@5.0.0:
+ dependencies:
+ builtin-modules: 5.3.0
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.4
+
+ is-core-module@2.16.2:
+ dependencies:
+ hasown: 2.0.4
+
+ is-data-view@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+
+ is-date-object@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-document.all@1.0.0:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-generator-function@1.1.2:
+ dependencies:
+ call-bound: 1.0.4
+ generator-function: 2.0.1
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-immutable-type@5.0.4(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ "@typescript-eslint/type-utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
+ ts-declaration-location: 1.0.7(@typescript/typescript6@6.0.2)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ is-map@2.0.3: {}
+
+ is-negative-zero@2.0.3: {}
+
+ is-number-object@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-regex@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.4
+
+ is-set@2.0.3: {}
+
+ is-shared-array-buffer@1.0.4:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-string@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
+
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.22
+
+ is-weakmap@2.0.2: {}
+
+ is-weakref@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-weakset@2.0.4:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+
+ isarray@2.0.5: {}
+
+ isexe@2.0.0: {}
+
+ istanbul-lib-coverage@3.2.2: {}
+
+ istanbul-lib-report@3.0.1:
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ istanbul-reports@3.2.0:
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
+ iterator.prototype@1.1.5:
+ dependencies:
+ define-data-property: 1.1.4
+ es-object-atoms: 1.1.2
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ has-symbols: 1.1.0
+ set-function-name: 2.0.2
+
+ js-tokens@10.0.0: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.3.2:
+ dependencies:
+ argparse: 2.0.1
+
+ jsesc@3.1.0: {}
+
+ json-buffer@3.0.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json5@2.2.3: {}
+
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.9
+ array.prototype.flat: 1.3.3
+ object.assign: 4.1.7
+ object.values: 1.2.1
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ language-subtag-registry@0.3.23: {}
+
+ language-tags@1.0.9:
+ dependencies:
+ language-subtag-registry: 0.3.23
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lightningcss-android-arm64@1.33.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.33.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.33.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.33.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ optional: true
+
+ lightningcss@1.33.0:
+ dependencies:
+ detect-libc: 2.1.2
+ 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
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.merge@4.6.2: {}
+
+ lodash@4.18.1: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.30.21:
+ dependencies:
+ "@jridgewell/sourcemap-codec": 1.6.0
+
+ magicast@0.5.4:
+ dependencies:
+ "@babel/parser": 7.29.8
+ "@babel/types": 7.29.8
+ source-map-js: 1.2.1
+
+ make-dir@4.0.0:
+ dependencies:
+ semver: 7.8.5
+
+ math-intrinsics@1.1.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.2
+
+ minimatch@10.2.6:
+ dependencies:
+ brace-expansion: 5.0.9
+
+ minimatch@3.1.5:
+ dependencies:
+ brace-expansion: 1.1.18
+
+ minimist@1.2.8: {}
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.18: {}
+
+ natural-compare@1.4.0: {}
+
+ natural-orderby@5.0.0: {}
+
+ neo-async@2.6.2: {}
+
+ next@16.3.3(@babel/core@7.29.7(supports-color@7.2.0))(@types/node@22.20.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
+ dependencies:
+ "@next/env": 16.3.3
+ "@swc/helpers": 0.5.23
+ baseline-browser-mapping: 2.11.20
+ caniuse-lite: 1.0.30001810
+ postcss: 8.5.23
+ react: 19.2.8
+ react-dom: 19.2.8(react@19.2.8)
+ styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@7.2.0))(react@19.2.8)
+ optionalDependencies:
+ "@next/swc-darwin-arm64": 16.3.3
+ "@next/swc-darwin-x64": 16.3.3
+ "@next/swc-linux-arm64-gnu": 16.3.3
+ "@next/swc-linux-arm64-musl": 16.3.3
+ "@next/swc-linux-x64-gnu": 16.3.3
+ "@next/swc-linux-x64-musl": 16.3.3
+ "@next/swc-win32-arm64-msvc": 16.3.3
+ "@next/swc-win32-x64-msvc": 16.3.3
+ sharp: 0.35.4(@types/node@22.20.1)
+ transitivePeerDependencies:
+ - "@babel/core"
+ - "@types/node"
+ - babel-plugin-macros
+
+ no-cliches@0.3.6: {}
+
+ node-exports-info@1.6.2:
+ dependencies:
+ array.prototype.flatmap: 1.3.3
+ es-errors: 1.3.0
+ object.entries: 1.1.9
+ semver: 6.3.1
+
+ node-releases@2.0.54: {}
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.4: {}
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.7:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.2
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+
+ object.entries@1.1.9:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.2
+
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-object-atoms: 1.1.2
+
+ object.values@1.2.1:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.2
+
+ obug@2.1.4: {}
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ own-keys@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ passive-voice@0.1.0: {}
+
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ pathe@2.0.3: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.2: {}
+
+ picomatch@4.0.7: {}
+
+ pluralize@8.0.0: {}
+
+ possible-typed-array-names@1.1.0: {}
+
+ postcss@8.5.23:
+ dependencies:
+ nanoid: 3.3.18
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ postcss@8.5.26:
+ dependencies:
+ nanoid: 3.3.18
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ prelude-ls@1.2.1: {}
+
+ prettier-linter-helpers@1.0.1:
+ dependencies:
+ fast-diff: 1.3.0
+
+ prettier@3.9.6: {}
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ punycode@2.3.1: {}
+
+ queue-microtask@1.2.3: {}
+
+ react-dom@19.2.8(react@19.2.8):
+ dependencies:
+ react: 19.2.8
+ scheduler: 0.27.0
+
+ react-is@16.13.1: {}
+
+ react@19.2.8: {}
+
+ reflect.getprototypeof@1.0.10:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+
+ regexp-tree@0.1.27: {}
+
+ regexp.prototype.flags@1.5.4:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+
+ regjsparser@0.13.2:
+ dependencies:
+ jsesc: 3.1.0
+
+ requireindex@1.1.0: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve@1.22.12:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ resolve@2.0.0-next.7:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
+ node-exports-info: 1.6.2
+ object-keys: 1.1.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ reusify@1.1.0: {}
+
+ rolldown@1.2.6:
+ dependencies:
+ "@oxc-project/types": 0.147.0
+ "@rolldown/pluginutils": 1.0.1
+ optionalDependencies:
+ "@rolldown/binding-android-arm-eabi": 1.2.6
+ "@rolldown/binding-android-arm64": 1.2.6
+ "@rolldown/binding-darwin-arm64": 1.2.6
+ "@rolldown/binding-darwin-x64": 1.2.6
+ "@rolldown/binding-freebsd-x64": 1.2.6
+ "@rolldown/binding-linux-arm-gnueabihf": 1.2.6
+ "@rolldown/binding-linux-arm64-gnu": 1.2.6
+ "@rolldown/binding-linux-arm64-musl": 1.2.6
+ "@rolldown/binding-linux-ppc64-gnu": 1.2.6
+ "@rolldown/binding-linux-s390x-gnu": 1.2.6
+ "@rolldown/binding-linux-x64-gnu": 1.2.6
+ "@rolldown/binding-linux-x64-musl": 1.2.6
+ "@rolldown/binding-openharmony-arm64": 1.2.6
+ "@rolldown/binding-win32-arm64-msvc": 1.2.6
+ "@rolldown/binding-win32-x64-msvc": 1.2.6
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ safe-array-concat@1.1.4:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+
+ safe-push-apply@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+
+ scheduler@0.27.0: {}
+
+ semver@6.3.1: {}
+
+ semver@7.8.5: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
+ set-function-name@2.0.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ set-proto@1.0.0:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+
+ sharp@0.35.4(@types/node@22.20.1):
+ dependencies:
+ "@img/colour": 1.1.0
+ detect-libc: 2.1.2
+ semver: 7.8.5
+ optionalDependencies:
+ "@img/sharp-darwin-arm64": 0.35.4
+ "@img/sharp-darwin-x64": 0.35.4
+ "@img/sharp-freebsd-wasm32": 0.35.4
+ "@img/sharp-libvips-darwin-arm64": 1.3.3
+ "@img/sharp-libvips-darwin-x64": 1.3.3
+ "@img/sharp-libvips-linux-arm": 1.3.3
+ "@img/sharp-libvips-linux-arm64": 1.3.3
+ "@img/sharp-libvips-linux-ppc64": 1.3.3
+ "@img/sharp-libvips-linux-riscv64": 1.3.3
+ "@img/sharp-libvips-linux-s390x": 1.3.3
+ "@img/sharp-libvips-linux-x64": 1.3.3
+ "@img/sharp-libvips-linuxmusl-arm64": 1.3.3
+ "@img/sharp-libvips-linuxmusl-x64": 1.3.3
+ "@img/sharp-linux-arm": 0.35.4
+ "@img/sharp-linux-arm64": 0.35.4
+ "@img/sharp-linux-ppc64": 0.35.4
+ "@img/sharp-linux-riscv64": 0.35.4
+ "@img/sharp-linux-s390x": 0.35.4
+ "@img/sharp-linux-x64": 0.35.4
+ "@img/sharp-linuxmusl-arm64": 0.35.4
+ "@img/sharp-linuxmusl-x64": 0.35.4
+ "@img/sharp-webcontainers-wasm32": 0.35.4
+ "@img/sharp-win32-arm64": 0.35.4
+ "@img/sharp-win32-ia32": 0.35.4
+ "@img/sharp-win32-x64": 0.35.4
+ "@types/node": 22.20.1
+ optional: true
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ side-channel-list@1.0.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.1
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ siginfo@2.0.0: {}
+
+ source-map-js@1.2.1: {}
+
+ source-map@0.6.1: {}
+
+ stackback@0.0.2: {}
+
+ std-env@4.2.0: {}
+
+ stop-iteration-iterator@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ internal-slot: 1.1.0
+
+ string.prototype.includes@2.0.1:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+
+ string.prototype.matchall@4.1.0:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ regexp.prototype.flags: 1.5.4
+ set-function-name: 2.0.2
+ side-channel: 1.1.1
+
+ string.prototype.repeat@1.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+
+ string.prototype.trim@1.2.11:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-object-atoms: 1.1.2
+ has-property-descriptors: 1.0.2
+ safe-regex-test: 1.1.0
+
+ string.prototype.trimend@1.0.10:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.2
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.2
+
+ strip-indent@4.1.1: {}
+
+ strip-json-comments@3.1.1: {}
+
+ styled-jsx@5.1.6(@babel/core@7.29.7(supports-color@7.2.0))(react@19.2.8):
+ dependencies:
+ client-only: 0.0.1
+ react: 19.2.8
+ optionalDependencies:
+ "@babel/core": 7.29.7(supports-color@7.2.0)
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ synckit@0.11.13:
+ dependencies:
+ "@pkgr/core": 0.3.6
+
+ tinybench@2.9.0: {}
+
+ tinyexec@1.3.0: {}
+
+ tinyglobby@0.2.17:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.7)
+ picomatch: 4.0.7
+
+ tinyrainbow@3.1.1: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ too-wordy@0.3.6: {}
+
+ ts-api-utils@2.5.0(@typescript/typescript6@6.0.2):
+ dependencies:
+ typescript: "@typescript/typescript6@6.0.2"
+
+ ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2):
+ dependencies:
+ picomatch: 4.0.7
+ typescript: "@typescript/typescript6@6.0.2"
+
+ tslib@2.8.1: {}
+
+ turbo@2.10.12:
+ optionalDependencies:
+ "@turbo/darwin-64": 2.10.12
+ "@turbo/darwin-arm64": 2.10.12
+ "@turbo/linux-64": 2.10.12
+ "@turbo/linux-arm64": 2.10.12
+ "@turbo/windows-64": 2.10.12
+ "@turbo/windows-arm64": 2.10.12
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-length@1.0.3:
+ dependencies:
+ call-bind: 1.0.9
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-offset@1.0.4:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+
+ typed-array-length@1.0.8:
+ dependencies:
+ call-bind: 1.0.9
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.1.0
+ reflect.getprototypeof: 1.0.10
+
+ typescript-eslint@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
+ dependencies:
+ "@typescript-eslint/eslint-plugin": 8.68.0(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ "@typescript-eslint/parser": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ "@typescript-eslint/typescript-estree": 8.68.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
+ "@typescript-eslint/utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
+ eslint: 9.39.5(supports-color@7.2.0)
+ typescript: "@typescript/typescript6@6.0.2"
+ transitivePeerDependencies:
+ - supports-color
+
+ typescript@6.0.3: {}
+
+ typescript@7.0.2:
+ optionalDependencies:
+ "@typescript/typescript-aix-ppc64": 7.0.2
+ "@typescript/typescript-darwin-arm64": 7.0.2
+ "@typescript/typescript-darwin-x64": 7.0.2
+ "@typescript/typescript-freebsd-arm64": 7.0.2
+ "@typescript/typescript-freebsd-x64": 7.0.2
+ "@typescript/typescript-linux-arm": 7.0.2
+ "@typescript/typescript-linux-arm64": 7.0.2
+ "@typescript/typescript-linux-loong64": 7.0.2
+ "@typescript/typescript-linux-mips64el": 7.0.2
+ "@typescript/typescript-linux-ppc64": 7.0.2
+ "@typescript/typescript-linux-riscv64": 7.0.2
+ "@typescript/typescript-linux-s390x": 7.0.2
+ "@typescript/typescript-linux-x64": 7.0.2
+ "@typescript/typescript-netbsd-arm64": 7.0.2
+ "@typescript/typescript-netbsd-x64": 7.0.2
+ "@typescript/typescript-openbsd-arm64": 7.0.2
+ "@typescript/typescript-openbsd-x64": 7.0.2
+ "@typescript/typescript-sunos-x64": 7.0.2
+ "@typescript/typescript-win32-arm64": 7.0.2
+ "@typescript/typescript-win32-x64": 7.0.2
+
+ uglify-js@3.19.3:
+ optional: true
+
+ unbox-primitive@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+
+ undici-types@6.21.0: {}
+
+ update-browserslist-db@1.3.2(browserslist@4.28.8):
+ dependencies:
+ browserslist: 4.28.8
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.0):
+ dependencies:
+ lightningcss: 1.33.0
+ picomatch: 4.0.7
+ postcss: 8.5.26
+ rolldown: 1.2.6
+ tinyglobby: 0.2.17
+ optionalDependencies:
+ "@types/node": 22.20.1
+ esbuild: 0.27.0
+ fsevents: 2.3.3
+
+ vitest@4.1.11(@types/node@22.20.1)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.0)):
+ dependencies:
+ "@vitest/expect": 4.1.11
+ "@vitest/mocker": 4.1.11(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.0))
+ "@vitest/pretty-format": 4.1.11
+ "@vitest/runner": 4.1.11
+ "@vitest/snapshot": 4.1.11
+ "@vitest/spy": 4.1.11
+ "@vitest/utils": 4.1.11
+ es-module-lexer: 2.3.2
+ expect-type: 1.4.0
+ magic-string: 0.30.21
+ obug: 2.1.4
+ pathe: 2.0.3
+ picomatch: 4.0.7
+ std-env: 4.2.0
+ tinybench: 2.9.0
+ tinyexec: 1.3.0
+ tinyglobby: 0.2.17
+ tinyrainbow: 3.1.1
+ vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.0)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ "@types/node": 22.20.1
+ "@vitest/coverage-v8": 4.1.11(vitest@4.1.11)
+ transitivePeerDependencies:
+ - msw
+
+ weasel-words@0.1.1: {}
+
+ which-boxed-primitive@1.1.1:
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+
+ which-builtin-type@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ function.prototype.name: 1.2.0
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.1
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.2
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.22
+
+ which-collection@1.0.2:
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.4
+
+ which-typed-array@1.1.22:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ why-is-node-running@2.3.0:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
+ word-wrap@1.2.5: {}
+
+ wordwrap@1.0.0: {}
+
+ write-good@1.0.8:
+ dependencies:
+ adverb-where: 0.2.6
+ commander: 2.20.3
+ e-prime: 0.10.4
+ no-cliches: 0.3.6
+ passive-voice: 0.1.0
+ too-wordy: 0.3.6
+ weasel-words: 0.1.1
+
+ ws@8.21.0: {}
+
+ yallist@3.1.1: {}
+
+ yocto-queue@0.1.0: {}
+
+ zod-validation-error@4.0.2(zod@4.5.4):
+ dependencies:
+ zod: 4.5.4
+
+ zod@4.5.4: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..03f1886
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,5 @@
+packages:
+ - tests/integration/*
+
+allowBuilds:
+ esbuild: true
diff --git a/scripts/test-utils.mjs b/scripts/test-utils.mjs
new file mode 100644
index 0000000..07212ea
--- /dev/null
+++ b/scripts/test-utils.mjs
@@ -0,0 +1,59 @@
+import { spawnSync } from "node:child_process";
+import { readFileSync } from "node:fs";
+import { createRequire } from "node:module";
+import { dirname, join } from "node:path";
+import process from "node:process";
+import { fileURLToPath } from "node:url";
+
+const require = createRequire(import.meta.url);
+
+export const root = join(dirname(fileURLToPath(import.meta.url)), "..");
+export const fixtures = join(root, "tests", "fixtures");
+export const presets = ["base", "nextjs", "node-library", "nodejs", "react"];
+export const compilers = [
+ {
+ binary: "tsc6",
+ label: "TypeScript 6",
+ packageName: "typescript",
+ versionPrefix: "Version 6.",
+ },
+ {
+ binary: "tsc",
+ label: "TypeScript 7",
+ packageName: "@typescript/native",
+ versionPrefix: "Version 7.",
+ },
+];
+
+export function loadJson(path) {
+ return JSON.parse(readFileSync(path, "utf8"));
+}
+
+export function compilerPath(compiler) {
+ const packagePath = require.resolve(`${compiler.packageName}/package.json`);
+ const packageJson = loadJson(packagePath);
+ return join(dirname(packagePath), packageJson.bin[compiler.binary]);
+}
+
+export function run(command, args, options = {}) {
+ const result = spawnSync(command, args, {
+ cwd: options.cwd ?? root,
+ encoding: "utf8",
+ timeout: options.timeout ?? 60_000,
+ });
+
+ if (result.error) {
+ throw result.error;
+ }
+ if (result.status !== 0) {
+ throw new Error(
+ `${command} ${args.join(" ")} failed with status ${result.status}:\n${result.stdout}${result.stderr}`,
+ );
+ }
+
+ return result.stdout.trim();
+}
+
+export function runCompiler(compiler, args, options) {
+ return run(process.execPath, [compilerPath(compiler), ...args], options);
+}
diff --git a/tests/configs.test.mjs b/tests/configs.test.mjs
new file mode 100644
index 0000000..06f3caa
--- /dev/null
+++ b/tests/configs.test.mjs
@@ -0,0 +1,198 @@
+import {
+ mkdirSync,
+ mkdtempSync,
+ readdirSync,
+ rmSync,
+ writeFileSync,
+} from "node:fs";
+import { tmpdir } from "node:os";
+import { join } from "node:path";
+import process from "node:process";
+
+import { describe, expect, test } from "vitest";
+
+import {
+ compilers,
+ fixtures,
+ loadJson,
+ presets,
+ root,
+ run,
+ runCompiler,
+} from "../scripts/test-utils.mjs";
+
+const packageJson = loadJson(join(root, "package.json"));
+const expectedPackageFiles = [
+ "base.json",
+ "CHANGELOG.md",
+ "LICENSE",
+ "llms-full.txt",
+ "llms.txt",
+ "nextjs.json",
+ "node-library.json",
+ "nodejs.json",
+ "package.json",
+ "react.json",
+ "README.md",
+];
+
+describe("public presets", () => {
+ test("are valid, published, and derived from the base preset", () => {
+ for (const preset of presets) {
+ const filename = `${preset}.json`;
+ const config = loadJson(join(root, filename));
+ expect(config.compilerOptions).toBeTypeOf("object");
+ expect(packageJson.files).toContain(filename);
+ expect(packageJson.exports[`./${filename}`]).toBe(`./${filename}`);
+ if (preset !== "base") {
+ expect(config.extends).toBe("./base.json");
+ }
+ }
+ });
+
+ test("preserve the documented effective compiler options", () => {
+ const expected = {
+ base: { noUncheckedIndexedAccess: true, strict: true, types: [] },
+ nextjs: { jsx: "preserve", moduleResolution: "bundler", noEmit: true },
+ "node-library": {
+ declaration: true,
+ declarationMap: true,
+ module: "nodenext",
+ target: "es2024",
+ },
+ nodejs: { module: "nodenext", target: "es2024" },
+ react: {
+ jsx: "react-jsx",
+ moduleResolution: "bundler",
+ target: "es2022",
+ },
+ };
+
+ for (const compiler of compilers) {
+ for (const preset of presets) {
+ const output = runCompiler(compiler, [
+ "--project",
+ join(fixtures, preset, "tsconfig.json"),
+ "--showConfig",
+ ]);
+ expect(loadJsonFromOutput(output).compilerOptions).toMatchObject(
+ expected[preset],
+ );
+ }
+ }
+ });
+});
+
+describe.each(compilers)("$label", (compiler) => {
+ test("is the expected compiler major", () => {
+ expect(runCompiler(compiler, ["--version"])).toMatch(
+ compiler.versionPrefix,
+ );
+ });
+
+ test("type-checks every preset fixture", () => {
+ const buildInfoDirectory = mkdtempSync(
+ join(tmpdir(), "vllnt-ts-build-info-"),
+ );
+ try {
+ for (const preset of presets) {
+ runCompiler(compiler, [
+ "--project",
+ join(fixtures, preset, "tsconfig.json"),
+ "--noEmit",
+ "--incremental",
+ "--tsBuildInfoFile",
+ join(buildInfoDirectory, `${preset}.tsbuildinfo`),
+ ]);
+ }
+ } finally {
+ rmSync(buildInfoDirectory, { force: true, recursive: true });
+ }
+ });
+
+ test("preserves node-library emit behavior", () => {
+ const outputDirectory = mkdtempSync(join(tmpdir(), "vllnt-ts-library-"));
+ try {
+ runCompiler(compiler, [
+ "--project",
+ join(fixtures, "node-library", "tsconfig.json"),
+ "--outDir",
+ outputDirectory,
+ ]);
+ expect(readdirSync(outputDirectory).sort()).toEqual([
+ "index.d.ts",
+ "index.d.ts.map",
+ "index.js",
+ "index.js.map",
+ ]);
+ } finally {
+ rmSync(outputDirectory, { force: true, recursive: true });
+ }
+ });
+});
+
+test("TypeScript 6 remains available to JavaScript API consumers", async () => {
+ const typescript = await import("typescript");
+ expect(typescript.version).toMatch(/^6\./);
+ expect(typescript.createProgram).toBeTypeOf("function");
+});
+
+test("the package tarball has an exact public surface and resolves every preset", () => {
+ const temporaryRoot = mkdtempSync(join(tmpdir(), "vllnt-ts-package-"));
+ try {
+ const pack = JSON.parse(
+ run("pnpm", ["pack", "--json", "--pack-destination", temporaryRoot]),
+ );
+ expect(pack.files.map(({ path }) => path).sort()).toEqual(
+ [...expectedPackageFiles].sort(),
+ );
+
+ const consumer = join(temporaryRoot, "consumer");
+ mkdirSync(consumer);
+ writeFileSync(
+ join(consumer, "package.json"),
+ JSON.stringify({
+ devDependencies: {
+ "@vllnt/typescript": `file:${pack.filename}`,
+ },
+ packageManager: "pnpm@11.24.0",
+ private: true,
+ }),
+ );
+ run(
+ "pnpm",
+ ["install", "--ignore-scripts", "--config.auto-install-peers=false"],
+ { cwd: consumer },
+ );
+
+ for (const preset of presets) {
+ const project = join(consumer, preset);
+ mkdirSync(project);
+ writeFileSync(join(project, "index.ts"), "export const value = 1\n");
+ writeFileSync(
+ join(project, "tsconfig.json"),
+ JSON.stringify({
+ compilerOptions: { noEmit: true },
+ extends: `@vllnt/typescript/${preset}.json`,
+ files: ["index.ts"],
+ }),
+ );
+ runCompiler(compilers[1], ["--project", join(project, "tsconfig.json")], {
+ cwd: consumer,
+ });
+ }
+ } finally {
+ rmSync(temporaryRoot, { force: true, recursive: true });
+ }
+});
+
+test("command failures retain actionable diagnostics", () => {
+ expect(() =>
+ run(process.execPath, ["--definitely-not-a-node-option"]),
+ ).toThrow(/failed with status/);
+ expect(() => run("vllnt-command-that-does-not-exist", [])).toThrow();
+});
+
+function loadJsonFromOutput(output) {
+ return JSON.parse(output);
+}
diff --git a/tests/fixtures/base/src/index.ts b/tests/fixtures/base/src/index.ts
index e2f6240..3715b0f 100644
--- a/tests/fixtures/base/src/index.ts
+++ b/tests/fixtures/base/src/index.ts
@@ -1,3 +1,8 @@
-const greeting: string = "hello"
+const greeting: string = "hello";
+const values: string[] = [];
-export { greeting }
+// This must remain an error while noUncheckedIndexedAccess is inherited.
+// @ts-expect-error An indexed value can be undefined.
+const first: string = values[0];
+
+export { first, greeting };
diff --git a/tests/fixtures/nextjs/src/jsx-runtime.d.ts b/tests/fixtures/nextjs/src/jsx-runtime.d.ts
deleted file mode 100644
index 8addab5..0000000
--- a/tests/fixtures/nextjs/src/jsx-runtime.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-declare namespace JSX {
- interface IntrinsicElements {
- main: {
- children?: unknown
- }
- }
-}
-
-declare module "react/jsx-runtime" {
- namespace JSX {
- interface IntrinsicElements {
- main: {
- children?: unknown
- }
- }
- }
-
- export const Fragment: unique symbol
- export function jsx(type: unknown, props: unknown): unknown
- export function jsxs(type: unknown, props: unknown): unknown
-}
diff --git a/tests/fixtures/nextjs/src/page.tsx b/tests/fixtures/nextjs/src/page.tsx
index edb168e..6be707e 100644
--- a/tests/fixtures/nextjs/src/page.tsx
+++ b/tests/fixtures/nextjs/src/page.tsx
@@ -1,3 +1,3 @@
export default function Page() {
- return Ready
+ return Ready;
}
diff --git a/tests/fixtures/nextjs/tsconfig.json b/tests/fixtures/nextjs/tsconfig.json
index 30ebc4d..2b86090 100644
--- a/tests/fixtures/nextjs/tsconfig.json
+++ b/tests/fixtures/nextjs/tsconfig.json
@@ -1,7 +1,8 @@
{
"extends": "../../../nextjs.json",
"compilerOptions": {
- "rootDir": "src"
+ "rootDir": "src",
+ "types": ["node", "react"]
},
"include": ["src"]
}
diff --git a/tests/fixtures/node-library/src/index.ts b/tests/fixtures/node-library/src/index.ts
index 3ded969..cc2d359 100644
--- a/tests/fixtures/node-library/src/index.ts
+++ b/tests/fixtures/node-library/src/index.ts
@@ -1,3 +1,3 @@
export function double(value: number): number {
- return value * 2
+ return value * 2;
}
diff --git a/tests/fixtures/nodejs/src/index.ts b/tests/fixtures/nodejs/src/index.ts
index 8627fb8..a1f4ead 100644
--- a/tests/fixtures/nodejs/src/index.ts
+++ b/tests/fixtures/nodejs/src/index.ts
@@ -1,3 +1,3 @@
-const environment = process.env.NODE_ENV ?? "development"
+const environment = process.env.NODE_ENV ?? "development";
-export { environment }
+export { environment };
diff --git a/tests/fixtures/nodejs/src/node.d.ts b/tests/fixtures/nodejs/src/node.d.ts
deleted file mode 100644
index bc4f2d0..0000000
--- a/tests/fixtures/nodejs/src/node.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare const process: {
- env: Record
-}
diff --git a/tests/fixtures/nodejs/tsconfig.json b/tests/fixtures/nodejs/tsconfig.json
index cb3cbba..e83203a 100644
--- a/tests/fixtures/nodejs/tsconfig.json
+++ b/tests/fixtures/nodejs/tsconfig.json
@@ -2,7 +2,8 @@
"extends": "../../../nodejs.json",
"compilerOptions": {
"noEmit": true,
- "rootDir": "src"
+ "rootDir": "src",
+ "types": ["node"]
},
"include": ["src"]
}
diff --git a/tests/fixtures/react/src/index.tsx b/tests/fixtures/react/src/index.tsx
index db63b9f..fad623e 100644
--- a/tests/fixtures/react/src/index.tsx
+++ b/tests/fixtures/react/src/index.tsx
@@ -1,3 +1,3 @@
export function Button() {
- return
+ return ;
}
diff --git a/tests/fixtures/react/src/jsx-runtime.d.ts b/tests/fixtures/react/src/jsx-runtime.d.ts
deleted file mode 100644
index d4358b7..0000000
--- a/tests/fixtures/react/src/jsx-runtime.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-declare module "react/jsx-runtime" {
- namespace JSX {
- interface IntrinsicElements {
- button: {
- children?: unknown
- disabled?: boolean
- }
- }
- }
-
- export const Fragment: unique symbol
- export function jsx(type: unknown, props: unknown): unknown
- export function jsxs(type: unknown, props: unknown): unknown
-}
diff --git a/tests/fixtures/react/tsconfig.json b/tests/fixtures/react/tsconfig.json
index 17e1caf..0ddff1e 100644
--- a/tests/fixtures/react/tsconfig.json
+++ b/tests/fixtures/react/tsconfig.json
@@ -2,7 +2,8 @@
"extends": "../../../react.json",
"compilerOptions": {
"noEmit": true,
- "rootDir": "src"
+ "rootDir": "src",
+ "types": ["react"]
},
"include": ["src"]
}
diff --git a/tests/integration/nextjs/app/layout.tsx b/tests/integration/nextjs/app/layout.tsx
new file mode 100644
index 0000000..e53180e
--- /dev/null
+++ b/tests/integration/nextjs/app/layout.tsx
@@ -0,0 +1,9 @@
+import type { ReactNode } from "react";
+
+export default function RootLayout({ children }: { children: ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/tests/integration/nextjs/app/page.tsx b/tests/integration/nextjs/app/page.tsx
new file mode 100644
index 0000000..de4fb3b
--- /dev/null
+++ b/tests/integration/nextjs/app/page.tsx
@@ -0,0 +1,3 @@
+export default function Page() {
+ return TypeScript 7;
+}
diff --git a/tests/integration/nextjs/next-env.d.ts b/tests/integration/nextjs/next-env.d.ts
new file mode 100644
index 0000000..ce4e94a
--- /dev/null
+++ b/tests/integration/nextjs/next-env.d.ts
@@ -0,0 +1,7 @@
+///
+///
+import "./.next/types/routes.d.ts";
+import "./.next/types/root-params.d.ts";
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/tests/integration/nextjs/next.config.mjs b/tests/integration/nextjs/next.config.mjs
new file mode 100644
index 0000000..ff8b4c5
--- /dev/null
+++ b/tests/integration/nextjs/next.config.mjs
@@ -0,0 +1 @@
+export default {};
diff --git a/tests/integration/nextjs/package.json b/tests/integration/nextjs/package.json
new file mode 100644
index 0000000..5cd3b9d
--- /dev/null
+++ b/tests/integration/nextjs/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@vllnt/typescript-nextjs-integration",
+ "private": true,
+ "scripts": {
+ "build": "NEXT_TELEMETRY_DISABLED=1 next build"
+ },
+ "devDependencies": {
+ "@vllnt/typescript": "workspace:*",
+ "@types/node": "22.20.1",
+ "@types/react": "19.2.18",
+ "@types/react-dom": "19.2.5",
+ "next": "16.3.3",
+ "react": "19.2.8",
+ "react-dom": "19.2.8",
+ "typescript": "7.0.2"
+ }
+}
diff --git a/tests/integration/nextjs/tsconfig.json b/tests/integration/nextjs/tsconfig.json
new file mode 100644
index 0000000..2421cad
--- /dev/null
+++ b/tests/integration/nextjs/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../../nextjs.json",
+ "compilerOptions": {
+ "rootDir": ".",
+ "types": ["node", "react"]
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/tests/integration/react/index.html b/tests/integration/react/index.html
new file mode 100644
index 0000000..39688cc
--- /dev/null
+++ b/tests/integration/react/index.html
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/integration/react/package.json b/tests/integration/react/package.json
new file mode 100644
index 0000000..9cdf281
--- /dev/null
+++ b/tests/integration/react/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "@vllnt/typescript-react-integration",
+ "private": true,
+ "scripts": {
+ "build": "tsc --project tsconfig.json && vite build"
+ },
+ "devDependencies": {
+ "@vllnt/typescript": "workspace:*",
+ "@types/react": "19.2.18",
+ "@types/react-dom": "19.2.5",
+ "react": "19.2.8",
+ "react-dom": "19.2.8",
+ "typescript": "7.0.2",
+ "vite": "8.2.2"
+ }
+}
diff --git a/tests/integration/react/src/main.tsx b/tests/integration/react/src/main.tsx
new file mode 100644
index 0000000..d0c7201
--- /dev/null
+++ b/tests/integration/react/src/main.tsx
@@ -0,0 +1,14 @@
+import { StrictMode } from "react";
+
+import { createRoot } from "react-dom/client";
+
+const root = document.querySelector("#root");
+if (!root) {
+ throw new Error("Missing React root");
+}
+
+createRoot(root).render(
+
+ TypeScript 7
+ ,
+);
diff --git a/tests/integration/react/tsconfig.json b/tests/integration/react/tsconfig.json
new file mode 100644
index 0000000..643bd73
--- /dev/null
+++ b/tests/integration/react/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../../react.json",
+ "compilerOptions": {
+ "noEmit": true,
+ "rootDir": "src",
+ "types": ["react", "react-dom/client"]
+ },
+ "include": ["src"]
+}
diff --git a/tests/smoke.test.js b/tests/smoke.test.js
deleted file mode 100644
index 6298ac8..0000000
--- a/tests/smoke.test.js
+++ /dev/null
@@ -1,146 +0,0 @@
-const { test } = require('node:test')
-const assert = require('node:assert/strict')
-const { mkdtempSync, readFileSync, readdirSync, rmSync } = require('node:fs')
-const { tmpdir } = require('node:os')
-const { dirname, join } = require('node:path')
-const { spawnSync } = require('node:child_process')
-
-const root = join(__dirname, '..')
-const fixtures = join(__dirname, 'fixtures')
-
-const configs = readdirSync(root).filter(
- (file) =>
- file.endsWith('.json') &&
- file !== 'package.json' &&
- file !== 'package-lock.json',
-)
-
-const compilers = [
- {
- binary: 'tsc6',
- label: 'TypeScript 6',
- packageName: 'typescript',
- versionPrefix: 'Version 6.',
- },
- {
- binary: 'tsc',
- label: 'TypeScript 7',
- packageName: '@typescript/native',
- versionPrefix: 'Version 7.',
- },
-]
-
-function compilerPath(compiler) {
- const packagePath = require.resolve(`${compiler.packageName}/package.json`)
- const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'))
- return join(dirname(packagePath), packageJson.bin[compiler.binary])
-}
-
-function runCompiler(compiler, args) {
- const result = spawnSync(process.execPath, [compilerPath(compiler), ...args], {
- cwd: root,
- encoding: 'utf-8',
- timeout: 30_000,
- })
- assert.equal(
- result.error,
- undefined,
- `${compiler.label} could not run: ${result.error?.message}`,
- )
- assert.equal(
- result.status,
- 0,
- `${compiler.label} failed (${args.join(' ')}):\n${result.stdout}${result.stderr}`,
- )
- return result.stdout.trim()
-}
-
-test('all config files are valid JSON with compilerOptions', () => {
- for (const config of configs) {
- const raw = readFileSync(join(root, config), 'utf-8')
- const parsed = JSON.parse(raw)
- assert.ok(parsed.compilerOptions, `${config} must have compilerOptions`)
- assert.equal(typeof parsed.compilerOptions, 'object')
- }
-})
-
-test('derived configs extend base.json', () => {
- const derived = configs.filter((c) => c !== 'base.json')
- for (const config of derived) {
- const raw = readFileSync(join(root, config), 'utf-8')
- const parsed = JSON.parse(raw)
- assert.equal(parsed.extends, './base.json', `${config} must extend base.json`)
- }
-})
-
-test('package.json files array includes all configs', () => {
- const pkg = JSON.parse(readFileSync(join(root, 'package.json'), 'utf-8'))
- for (const config of configs) {
- assert.ok(pkg.files.includes(config), `${config} must be in package.json files`)
- }
-})
-
-test('integration tests use the supported compiler majors', () => {
- for (const compiler of compilers) {
- assert.ok(
- runCompiler(compiler, ['--version']).startsWith(compiler.versionPrefix),
- `${compiler.label} must report ${compiler.versionPrefix}`,
- )
- }
-})
-
-test('TypeScript 6 compatibility package exposes the JavaScript API', () => {
- const typescript = require('typescript')
- assert.match(typescript.version, /^6\./)
- assert.equal(typeof typescript.createProgram, 'function')
-})
-
-for (const compiler of compilers) {
- test(`${compiler.label} type-checks every preset fixture`, () => {
- const buildInfoDirectory = mkdtempSync(
- join(tmpdir(), 'vllnt-typescript-build-info-'),
- )
- try {
- for (const preset of configs.map((config) => config.replace('.json', ''))) {
- runCompiler(compiler, [
- '--project',
- join(fixtures, preset, 'tsconfig.json'),
- '--noEmit',
- '--incremental',
- '--tsBuildInfoFile',
- join(buildInfoDirectory, `${preset}.tsbuildinfo`),
- ])
- }
- } finally {
- rmSync(buildInfoDirectory, { force: true, recursive: true })
- }
- })
-
- test(`${compiler.label} preserves node-library emit behavior`, () => {
- const outputDirectory = mkdtempSync(
- join(tmpdir(), 'vllnt-typescript-node-library-'),
- )
- try {
- runCompiler(compiler, [
- '--project',
- join(fixtures, 'node-library', 'tsconfig.json'),
- '--outDir',
- outputDirectory,
- ])
-
- for (const output of [
- 'index.js',
- 'index.js.map',
- 'index.d.ts',
- 'index.d.ts.map',
- ]) {
- assert.ok(
- readdirSync(outputDirectory).includes(output),
- `${compiler.label} must emit ${output} for node-library.json`,
- )
- }
- } finally {
- rmSync(outputDirectory, { force: true, recursive: true })
- }
- })
-}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..3b33f62
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./nodejs.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "noEmit": true,
+ "rootDir": ".",
+ "types": ["node", "vitest/globals"]
+ },
+ "include": ["*.config.mjs", "scripts/**/*.mjs", "tests/**/*.mjs"]
+}
diff --git a/vitest.config.mjs b/vitest.config.mjs
new file mode 100644
index 0000000..741714f
--- /dev/null
+++ b/vitest.config.mjs
@@ -0,0 +1,18 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ coverage: {
+ include: ["scripts/**/*.mjs"],
+ provider: "v8",
+ reporter: ["text", "json-summary"],
+ thresholds: {
+ branches: 100,
+ functions: 100,
+ lines: 100,
+ statements: 100,
+ },
+ },
+ testTimeout: 120_000,
+ },
+});
From e673a2d9a1a00ae6355d052e1a2d186b92a064cd Mon Sep 17 00:00:00 2001
From: bntvllnt <32437578+bntvllnt@users.noreply.github.com>
Date: Mon, 31 Aug 2026 16:21:48 +0200
Subject: [PATCH 4/6] fix: make stable publishing recoverable
---
.github/workflows/publish.yml | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 93ba2d5..b888556 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -123,6 +123,21 @@ jobs:
VERSION=$(node -p "require('./package.json').version")
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
+ - name: Install OIDC-capable npm
+ run: npm install --global npm@12.0.2
+
+ - name: Publish to npm
+ env:
+ VERSION: ${{ steps.version.outputs.version }}
+ run: |
+ sed -i '/_authToken/d' "$NPM_CONFIG_USERCONFIG"
+ unset NODE_AUTH_TOKEN
+ if npm view "@vllnt/typescript@${VERSION}" version >/dev/null 2>&1; then
+ echo "@vllnt/typescript@${VERSION} is already published; reconciling Git metadata"
+ else
+ npm publish --tag latest --provenance --access public
+ fi
+
- name: Commit and tag
env:
VERSION: ${{ steps.version.outputs.version }}
@@ -133,18 +148,11 @@ jobs:
git add package.json pnpm-lock.yaml
git commit -m "chore(release): v${VERSION}"
fi
- git tag -a "v${VERSION}" -m "v${VERSION}"
+ if ! git rev-parse "refs/tags/v${VERSION}" >/dev/null 2>&1; then
+ git tag -a "v${VERSION}" -m "v${VERSION}"
+ fi
git push origin main --follow-tags
- - name: Install OIDC-capable npm
- run: npm install --global npm@12.0.2
-
- - name: Publish to npm
- run: |
- sed -i '/_authToken/d' "$NPM_CONFIG_USERCONFIG"
- unset NODE_AUTH_TOKEN
- npm publish --tag latest --provenance --access public
-
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From 0b4a0de12ce0575fa5fa879ab1ccd15b2e207f66 Mon Sep 17 00:00:00 2001
From: bntvllnt <32437578+bntvllnt@users.noreply.github.com>
Date: Mon, 31 Aug 2026 16:42:02 +0200
Subject: [PATCH 5/6] fix: harden release and compatibility gates
---
.github/workflows/ci.yml | 12 ++--
.github/workflows/publish.yml | 112 ++++++++++++++++++----------------
CHANGELOG.md | 5 +-
README.md | 2 +-
llms-full.txt | 2 +-
llms.txt | 2 +-
package.json | 2 +-
pnpm-lock.yaml | 20 +++---
pnpm-workspace.yaml | 4 ++
tests/configs.test.mjs | 6 ++
10 files changed, 95 insertions(+), 72 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9eb8567..04bc3f8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -19,11 +19,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- - uses: actions/checkout@v7
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- - uses: pnpm/action-setup@v6
+ - uses: pnpm/action-setup@f520eceda224fe1a4aed5a2a27a194379a409996 # v6.0.10
- - uses: actions/setup-node@v7
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.13
cache: pnpm
@@ -38,11 +38,11 @@ jobs:
strategy:
fail-fast: false
matrix:
- node: [18, 26]
+ node: [22.13, 26]
steps:
- - uses: actions/checkout@v7
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- - uses: actions/setup-node@v7
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node }}
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index b888556..9a57c70 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -17,16 +17,10 @@ on:
- ".github/workflows/publish.yml"
workflow_dispatch:
inputs:
- bump:
- description: "Version bump before publishing; use none for the version already on main"
+ version:
+ description: "Exact package version already committed to main"
required: true
- default: none
- type: choice
- options:
- - none
- - patch
- - minor
- - major
+ type: string
concurrency:
group: publish-${{ github.event_name }}
@@ -41,11 +35,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- - uses: actions/checkout@v7
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- - uses: pnpm/action-setup@v6
+ - uses: pnpm/action-setup@f520eceda224fe1a4aed5a2a27a194379a409996 # v6.0.10
- - uses: actions/setup-node@v7
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.13
cache: pnpm
@@ -63,18 +57,13 @@ jobs:
id-token: write
contents: read
steps:
- - uses: actions/checkout@v7
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- - uses: pnpm/action-setup@v6
-
- - uses: actions/setup-node@v7
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.13
- cache: pnpm
registry-url: https://registry.npmjs.org
- - run: pnpm install --frozen-lockfile
-
- name: Install OIDC-capable npm
run: npm install --global npm@12.0.2
@@ -85,13 +74,25 @@ jobs:
BASE_VERSION=$(node -p "require('./package.json').version")
SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-7)
- npm version "${BASE_VERSION}-canary.${SHORT_SHA}" --no-git-tag-version
- npm publish --tag canary --provenance --access public
+ VERSION="${BASE_VERSION}-canary.${SHORT_SHA}"
+ npm version "$VERSION" --no-git-tag-version
+
+ PACK_RESULT=$(npm pack --ignore-scripts --json --pack-destination "$RUNNER_TEMP")
+ TARBALL_NAME=$(echo "$PACK_RESULT" | node -e 'let input=""; process.stdin.on("data", chunk => input += chunk); process.stdin.on("end", () => console.log(JSON.parse(input)[0].filename))')
+ LOCAL_INTEGRITY=$(echo "$PACK_RESULT" | node -e 'let input=""; process.stdin.on("data", chunk => input += chunk); process.stdin.on("end", () => console.log(JSON.parse(input)[0].integrity))')
+ REMOTE_INTEGRITY=$(npm view "@vllnt/typescript@${VERSION}" dist.integrity 2>/dev/null || true)
+
+ if [ -n "$REMOTE_INTEGRITY" ]; then
+ test "$LOCAL_INTEGRITY" = "$REMOTE_INTEGRITY"
+ test "$(npm view @vllnt/typescript dist-tags.canary)" = "$VERSION"
+ else
+ npm publish "$RUNNER_TEMP/$TARBALL_NAME" --tag canary --provenance --access public
+ fi
release:
name: Publish Stable Release
needs: quality
- if: github.event_name == 'workflow_dispatch'
+ if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
timeout-minutes: 10
environment: npm
@@ -99,62 +100,67 @@ jobs:
contents: write
id-token: write
steps:
- - uses: actions/checkout@v7
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- token: ${{ secrets.RELEASE_PAT }}
-
- - uses: pnpm/action-setup@v6
- - uses: actions/setup-node@v7
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.13
- cache: pnpm
registry-url: https://registry.npmjs.org
- - run: pnpm install --frozen-lockfile
-
- - name: Prepare version
- id: version
+ - name: Verify versioned main commit
+ env:
+ EXPECTED_VERSION: ${{ inputs.version }}
run: |
- if [ "${{ inputs.bump }}" != "none" ]; then
- pnpm version "${{ inputs.bump }}" --no-git-tag-version
- fi
+ git fetch origin main
+ test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)"
VERSION=$(node -p "require('./package.json').version")
- echo "version=$VERSION" >> "$GITHUB_OUTPUT"
+ test "$VERSION" = "$EXPECTED_VERSION"
+ grep -F "## [$VERSION]" CHANGELOG.md
- name: Install OIDC-capable npm
run: npm install --global npm@12.0.2
- - name: Publish to npm
+ - name: Publish or reconcile npm package
env:
- VERSION: ${{ steps.version.outputs.version }}
+ VERSION: ${{ inputs.version }}
run: |
sed -i '/_authToken/d' "$NPM_CONFIG_USERCONFIG"
unset NODE_AUTH_TOKEN
- if npm view "@vllnt/typescript@${VERSION}" version >/dev/null 2>&1; then
- echo "@vllnt/typescript@${VERSION} is already published; reconciling Git metadata"
+
+ PACK_RESULT=$(npm pack --ignore-scripts --json --pack-destination "$RUNNER_TEMP")
+ TARBALL_NAME=$(echo "$PACK_RESULT" | node -e 'let input=""; process.stdin.on("data", chunk => input += chunk); process.stdin.on("end", () => console.log(JSON.parse(input)[0].filename))')
+ LOCAL_INTEGRITY=$(echo "$PACK_RESULT" | node -e 'let input=""; process.stdin.on("data", chunk => input += chunk); process.stdin.on("end", () => console.log(JSON.parse(input)[0].integrity))')
+ REMOTE_INTEGRITY=$(npm view "@vllnt/typescript@${VERSION}" dist.integrity 2>/dev/null || true)
+
+ if [ -n "$REMOTE_INTEGRITY" ]; then
+ test "$LOCAL_INTEGRITY" = "$REMOTE_INTEGRITY"
+ test "$(npm view @vllnt/typescript dist-tags.latest)" = "$VERSION"
else
- npm publish --tag latest --provenance --access public
+ npm publish "$RUNNER_TEMP/$TARBALL_NAME" --tag latest --provenance --access public
fi
- - name: Commit and tag
+ - name: Create or verify release tag
env:
- VERSION: ${{ steps.version.outputs.version }}
+ VERSION: ${{ inputs.version }}
run: |
- git config user.name "github-actions[bot]"
- git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- if ! git diff --quiet; then
- git add package.json pnpm-lock.yaml
- git commit -m "chore(release): v${VERSION}"
- fi
- if ! git rev-parse "refs/tags/v${VERSION}" >/dev/null 2>&1; then
+ if git rev-parse "refs/tags/v${VERSION}" >/dev/null 2>&1; then
+ test "$(git rev-list -n 1 "v${VERSION}")" = "$(git rev-parse HEAD)"
+ else
+ git config user.name "github-actions[bot]"
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag -a "v${VERSION}" -m "v${VERSION}"
+ git push origin "refs/tags/v${VERSION}"
fi
- git push origin main --follow-tags
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- VERSION: ${{ steps.version.outputs.version }}
- run: gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes --verify-tag
+ VERSION: ${{ inputs.version }}
+ run: |
+ if gh release view "v${VERSION}" >/dev/null 2>&1; then
+ echo "GitHub release v${VERSION} already exists"
+ else
+ gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes --verify-tag
+ fi
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4dcc813..ab05990 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@ All notable changes to this project are documented in this file. The format foll
## [Unreleased]
+## [2.0.0] - 2026-08-31
+
### Added
- Added compiler-backed fixtures for every preset under TypeScript 6 and TypeScript 7.
@@ -32,5 +34,6 @@ All notable changes to this project are documented in this file. The format foll
- Added `base.json`, `nodejs.json`, `node-library.json`, `react.json`, and `nextjs.json` presets.
- Documented Node.js 22+ and TypeScript 5+ expectations.
-[Unreleased]: https://github.com/vllnt/typescript/compare/v1.0.0...HEAD
+[Unreleased]: https://github.com/vllnt/typescript/compare/v2.0.0...HEAD
+[2.0.0]: https://github.com/vllnt/typescript/compare/v1.0.0...v2.0.0
[1.0.0]: https://github.com/vllnt/typescript/releases/tag/v1.0.0
diff --git a/README.md b/README.md
index e11348d..7d28848 100644
--- a/README.md
+++ b/README.md
@@ -126,7 +126,7 @@ TypeScript 7 also removes ES5 targeting, legacy module formats and resolution, `
| Surface | Supported version |
| ---------------------- | ------------------------------------------------------- |
-| Node.js consumers | `>=18` |
+| Node.js consumers | `>=22` |
| TypeScript | `>=6.0.2 <8` |
| Tested compilers | TypeScript 6 compatibility package and TypeScript 7.0.2 |
| Next.js integration | 16.3.3 |
diff --git a/llms-full.txt b/llms-full.txt
index 5630974..9bbb3ce 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -1,6 +1,6 @@
# @vllnt/typescript full reference
-`@vllnt/typescript` publishes strict JSON compiler presets for Node.js, npm libraries, React, and Next.js. Version 2 supports TypeScript `>=6.0.2 <8` and is validated with the TypeScript 6 compatibility package and native TypeScript 7.0.2.
+`@vllnt/typescript` publishes strict JSON compiler presets for Node.js 22+, npm libraries, React, and Next.js. Version 2 supports TypeScript `>=6.0.2 <8` and is validated with the TypeScript 6 compatibility package and native TypeScript 7.0.2.
## Installation
diff --git a/llms.txt b/llms.txt
index 6e4396c..83251f7 100644
--- a/llms.txt
+++ b/llms.txt
@@ -11,7 +11,7 @@
## Compatibility
-- Node.js consumers: 18 or newer
+- Node.js consumers: 22 or newer
- TypeScript: `>=6.0.2 <8`
- TypeScript 7 migration: native `tsc` can run beside the TypeScript 6 compatibility API
- Runtime dependencies: none; TypeScript is a peer dependency
diff --git a/package.json b/package.json
index 9fdf8a7..686900a 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
],
"packageManager": "pnpm@11.24.0",
"engines": {
- "node": ">=18"
+ "node": ">=22"
},
"files": [
"base.json",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c7a4e1a..324ca08 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,6 +4,10 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
+overrides:
+ deepmerge-ts: 8.0.0
+ handlebars: 4.7.9
+
importers:
.:
devDependencies:
@@ -2037,10 +2041,10 @@ packages:
integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
}
- deepmerge-ts@7.1.6:
+ deepmerge-ts@8.0.0:
resolution:
{
- integrity: sha512-gQhL1ksGBLQbHeAo47YU6cs2ahd3Pv+8PFYoWogNZbQnNwQyOh9Ad5kbeHFiWwbKdeWQJ5Z7Y7mwb9ew2hXBLw==,
+ integrity: sha512-ICNjaP0ML+eSdEpJYQC46XiAn/UjAdwbEl0dE8p85ZTeNDinN4Kd4+9jS4OSAuH7st6eC7rQhsqTF5zIDaUm2g==,
}
engines: { node: ">=16.0.0" }
@@ -2664,10 +2668,10 @@ packages:
}
engines: { node: ">= 0.4" }
- handlebars@4.7.8:
+ handlebars@4.7.9:
resolution:
{
- integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==,
+ integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==,
}
engines: { node: ">=0.4.7" }
hasBin: true
@@ -4429,7 +4433,7 @@ snapshots:
dependencies:
eslint-import-resolver-node: 0.3.9(supports-color@7.2.0)
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0))(eslint-import-resolver-node@0.3.9(supports-color@7.2.0))(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
- handlebars: 4.7.8
+ handlebars: 4.7.9
is-core-module: 2.16.1
micromatch: 4.0.8
transitivePeerDependencies:
@@ -5397,7 +5401,7 @@ snapshots:
deep-is@0.1.4: {}
- deepmerge-ts@7.1.6: {}
+ deepmerge-ts@8.0.0: {}
define-data-property@1.1.4:
dependencies:
@@ -5626,7 +5630,7 @@ snapshots:
eslint-plugin-functional@9.0.5(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0):
dependencies:
"@typescript-eslint/utils": 8.68.0(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
- deepmerge-ts: 7.1.6
+ deepmerge-ts: 8.0.0
escape-string-regexp: 5.0.0
eslint: 9.39.5(supports-color@7.2.0)
is-immutable-type: 5.0.4(@typescript/typescript6@6.0.2)(eslint@9.39.5(supports-color@7.2.0))(supports-color@7.2.0)
@@ -5938,7 +5942,7 @@ snapshots:
gopd@1.2.0: {}
- handlebars@4.7.8:
+ handlebars@4.7.9:
dependencies:
minimist: 1.2.8
neo-async: 2.6.2
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 03f1886..3f54be9 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -3,3 +3,7 @@ packages:
allowBuilds:
esbuild: true
+
+overrides:
+ deepmerge-ts: 8.0.0
+ handlebars: 4.7.9
diff --git a/tests/configs.test.mjs b/tests/configs.test.mjs
index 06f3caa..dc073cf 100644
--- a/tests/configs.test.mjs
+++ b/tests/configs.test.mjs
@@ -125,6 +125,12 @@ describe.each(compilers)("$label", (compiler) => {
"index.js",
"index.js.map",
]);
+ expect(
+ run(process.execPath, [
+ "--eval",
+ `const { double } = require(${JSON.stringify(join(outputDirectory, "index.js"))}); process.stdout.write(String(double(2)))`,
+ ]),
+ ).toBe("4");
} finally {
rmSync(outputDirectory, { force: true, recursive: true });
}
From 425e8a3ab22455401a148f894bebf8c1e87663b5 Mon Sep 17 00:00:00 2001
From: bntvllnt <32437578+bntvllnt@users.noreply.github.com>
Date: Mon, 31 Aug 2026 17:19:08 +0200
Subject: [PATCH 6/6] fix: align publish runtime with npm 12
---
.github/workflows/publish.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 9a57c70..2ae34cf 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -41,7 +41,7 @@ jobs:
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: 22.13
+ node-version: 22.22.2
cache: pnpm
- run: pnpm install --frozen-lockfile
@@ -61,7 +61,7 @@ jobs:
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: 22.13
+ node-version: 22.22.2
registry-url: https://registry.npmjs.org
- name: Install OIDC-capable npm
@@ -106,7 +106,7 @@ jobs:
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: 22.13
+ node-version: 22.22.2
registry-url: https://registry.npmjs.org
- name: Verify versioned main commit