From abb9d0b43dc2d5a94693f6780e5a536c951be7c4 Mon Sep 17 00:00:00 2001 From: richerfu Date: Fri, 26 Jun 2026 14:46:16 +0800 Subject: [PATCH 1/8] Add documentation website --- .gitignore | 2 + README.md | 11 + justfile | 9 + website/api/index.html | 15 + website/index.html | 18 + website/package-lock.json | 5657 +++++++++++++++++ website/package.json | 28 + website/public/logo/icon-1024.png | Bin 0 -> 253151 bytes website/public/logo/icon-256.png | Bin 0 -> 66916 bytes website/public/logo/icon-512.png | Bin 0 -> 156293 bytes website/public/zig-napi-pipeline.svg | 108 + website/src/api-docs.tsx | 136 + website/src/content/api/async-runtime.md | 160 + website/src/content/api/binary-data.md | 123 + website/src/content/api/build-node.md | 91 + website/src/content/api/build-openharmony.md | 106 + website/src/content/api/callback-functions.md | 112 + website/src/content/api/classes-ownership.md | 143 + website/src/content/api/conversion-model.md | 93 + .../src/content/api/declaration-generation.md | 91 + website/src/content/api/dts-overrides.md | 70 + website/src/content/api/errors-results.md | 143 + website/src/content/api/index.ts | 182 + .../src/content/api/module-registration.md | 88 + website/src/content/api/overview.md | 85 + website/src/content/api/values-objects.md | 101 + website/src/content/api/values-primitives.md | 77 + website/src/content/api/versioning.md | 83 + website/src/content/snippets/install.md | 13 + website/src/content/snippets/node.md | 16 + website/src/content/snippets/openharmony.md | 21 + website/src/content/snippets/types.md | 8 + website/src/main.tsx | 452 ++ website/src/styles.css | 439 ++ website/src/vite-env.d.ts | 17 + website/tsconfig.json | 18 + website/vite.config.ts | 111 + 37 files changed, 8827 insertions(+) create mode 100644 website/api/index.html create mode 100644 website/index.html create mode 100644 website/package-lock.json create mode 100644 website/package.json create mode 100644 website/public/logo/icon-1024.png create mode 100644 website/public/logo/icon-256.png create mode 100644 website/public/logo/icon-512.png create mode 100644 website/public/zig-napi-pipeline.svg create mode 100644 website/src/api-docs.tsx create mode 100644 website/src/content/api/async-runtime.md create mode 100644 website/src/content/api/binary-data.md create mode 100644 website/src/content/api/build-node.md create mode 100644 website/src/content/api/build-openharmony.md create mode 100644 website/src/content/api/callback-functions.md create mode 100644 website/src/content/api/classes-ownership.md create mode 100644 website/src/content/api/conversion-model.md create mode 100644 website/src/content/api/declaration-generation.md create mode 100644 website/src/content/api/dts-overrides.md create mode 100644 website/src/content/api/errors-results.md create mode 100644 website/src/content/api/index.ts create mode 100644 website/src/content/api/module-registration.md create mode 100644 website/src/content/api/overview.md create mode 100644 website/src/content/api/values-objects.md create mode 100644 website/src/content/api/values-primitives.md create mode 100644 website/src/content/api/versioning.md create mode 100644 website/src/content/snippets/install.md create mode 100644 website/src/content/snippets/node.md create mode 100644 website/src/content/snippets/openharmony.md create mode 100644 website/src/content/snippets/types.md create mode 100644 website/src/main.tsx create mode 100644 website/src/styles.css create mode 100644 website/src/vite-env.d.ts create mode 100644 website/tsconfig.json create mode 100644 website/vite.config.ts diff --git a/.gitignore b/.gitignore index 3d645a5..ec28151 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ .zig-cache zig-out node_modules +website/.void +website/dist node-test/*.node .tmp_arkvm_runner .tmp_arkvm_memory_runner diff --git a/README.md b/README.md index a931de0..cdfee6e 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,17 @@ Node.js matrix tests live in `node-test`. It mirrors the NAPI-RS example split w The Node addon CI runs those tests on Linux, macOS, and Windows for Node.js 12, 14, 16, 18, 20, and 22. +## Website + +The documentation website lives in `website` and builds as a standalone Vite site. + +```bash +cd website +npm install +npm run dev +npm run build +``` + ## Credits This zig-napi project is heavily inspired by: diff --git a/justfile b/justfile index 425dac1..eb34371 100644 --- a/justfile +++ b/justfile @@ -52,3 +52,12 @@ test-node-matrix: format: zig fmt $(git ls-files '*.zig' '*.zon') oxk format $(git ls-files '*.js' '*.jsx' '*.ts' '*.tsx' '*.ets') + +website-dev: + cd website && npm run dev + +website-build: + cd website && npm run build + +website-preview: + cd website && npm run preview diff --git a/website/api/index.html b/website/api/index.html new file mode 100644 index 0000000..8d5d487 --- /dev/null +++ b/website/api/index.html @@ -0,0 +1,15 @@ + + + + + + + + + zig-napi API + + +
+ + + diff --git a/website/index.html b/website/index.html new file mode 100644 index 0000000..1c5c18e --- /dev/null +++ b/website/index.html @@ -0,0 +1,18 @@ + + + + + + + + + zig-napi + + +
+ + + diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 0000000..186e141 --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,5657 @@ +{ + "name": "zig-napi-website", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "zig-napi-website", + "version": "0.0.0", + "dependencies": { + "@fontsource/maple-mono": "^5.2.6", + "@void/md": "^0.9.3", + "@void/react": "^0.9.3", + "react": "^19.2.1", + "react-dom": "^19.2.1", + "void": "^0.9.3" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.3.1", + "@types/node": "^26.0.1", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "tailwindcss": "^4.3.1", + "typescript": "^6.0.3", + "vite": "^8.0.0" + } + }, + "node_modules/@ark/schema": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.56.0.tgz", + "integrity": "sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@ark/util": "0.56.0" + } + }, + "node_modules/@ark/util": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.56.0.tgz", + "integrity": "sha512-BghfRC8b9pNs3vBoDJhcta0/c1J1rsoS1+HgVUreMFPdhz/CRAKReAu57YEllNaSy98rWAdY1gE+gFup7OXpgA==", + "license": "MIT", + "peer": true + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@better-auth/core": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.6.20.tgz", + "integrity": "sha512-y73I1xNXuNYiHBFduWGRcJ2ro2rNuVDEYkgVMJtIaRXtbosdXHs9gfyQrHecgeHMHKx1SYSBT/CExak0vVMTng==", + "license": "MIT", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.39.0", + "@standard-schema/spec": "^1.1.0", + "zod": "^4.3.6" + }, + "peerDependencies": { + "@better-auth/utils": "0.4.2", + "@better-fetch/fetch": "1.3.1", + "@cloudflare/workers-types": ">=4", + "@opentelemetry/api": "^1.9.0", + "better-call": "1.3.6", + "jose": "^6.1.0", + "kysely": "^0.28.5 || ^0.29.0", + "nanostores": "^1.0.1" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + } + } + }, + "node_modules/@better-auth/drizzle-adapter": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/drizzle-adapter/-/drizzle-adapter-1.6.20.tgz", + "integrity": "sha512-hJHfCdAiZrC7EmZAt3NAiGgcNo9Y5Qz3PLL+a9rODXaAJGCMvzUJniqef9wHuJBwU0SWW+2f4wXe8xQmaC/IKQ==", + "license": "MIT", + "peerDependencies": { + "@better-auth/core": "^1.6.20", + "@better-auth/utils": "0.4.2", + "drizzle-orm": "^0.45.2" + }, + "peerDependenciesMeta": { + "drizzle-orm": { + "optional": true + } + } + }, + "node_modules/@better-auth/kysely-adapter": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/kysely-adapter/-/kysely-adapter-1.6.20.tgz", + "integrity": "sha512-Uvpmgbx5y8JqXroVanNzDdKzOl3HojoTz+/X6MR6zOUr25IzlYz660mjnu0rxKiIF55kD3CroqFsDzjNUw7ERw==", + "license": "MIT", + "peerDependencies": { + "@better-auth/core": "^1.6.20", + "@better-auth/utils": "0.4.2", + "kysely": "^0.28.17 || ^0.29.0" + }, + "peerDependenciesMeta": { + "kysely": { + "optional": true + } + } + }, + "node_modules/@better-auth/memory-adapter": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/memory-adapter/-/memory-adapter-1.6.20.tgz", + "integrity": "sha512-J5Ni0LlFijbzXlwu2rFHaD8zEFocmajyzWkRnHsq8LhV/Dk4iWQwwnqzLrPoDQEj8roECAUF03hrIeMzqWRqJQ==", + "license": "MIT", + "peerDependencies": { + "@better-auth/core": "^1.6.20", + "@better-auth/utils": "0.4.2" + } + }, + "node_modules/@better-auth/mongo-adapter": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/mongo-adapter/-/mongo-adapter-1.6.20.tgz", + "integrity": "sha512-ClDBJf6h4g85WJswxwQwxLaiyRU67Gmz/uaIf19tY1gqlLJDykSGjmqRNSBMG5rWABNzcNqbO4KG31rYUldbIw==", + "license": "MIT", + "peerDependencies": { + "@better-auth/core": "^1.6.20", + "@better-auth/utils": "0.4.2", + "mongodb": "^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "mongodb": { + "optional": true + } + } + }, + "node_modules/@better-auth/prisma-adapter": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/prisma-adapter/-/prisma-adapter-1.6.20.tgz", + "integrity": "sha512-WhYdhSGuVSfu1peCSf2snmmVzfWjRaEvbSrsNCusiwGE9l94HlES4mjSPM48fed24hL7yg4j1dYK/yjEt87FpQ==", + "license": "MIT", + "peerDependencies": { + "@better-auth/core": "^1.6.20", + "@better-auth/utils": "0.4.2", + "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", + "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "@prisma/client": { + "optional": true + }, + "prisma": { + "optional": true + } + } + }, + "node_modules/@better-auth/telemetry": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.6.20.tgz", + "integrity": "sha512-3BhbY3naQDERvdJvJ7fGszVY6rpsVfc6c9uyBVZlC1coVEF/rkM0rIcjtMVI1GUH7vWy1wjR6qF5vQnMun3XNQ==", + "license": "MIT", + "peerDependencies": { + "@better-auth/core": "^1.6.20", + "@better-auth/utils": "0.4.2", + "@better-fetch/fetch": "1.3.1" + } + }, + "node_modules/@better-auth/utils": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.4.2.tgz", + "integrity": "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^2.0.1" + } + }, + "node_modules/@better-fetch/fetch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.3.1.tgz", + "integrity": "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g==", + "license": "MIT" + }, + "node_modules/@cloudflare/containers": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@cloudflare/containers/-/containers-0.3.7.tgz", + "integrity": "sha512-DM9dm3FnIBSyiSJ1FLavKwl/lk3oAmTaynCzZQ9pZR0ncRPquSxkxd8Nu2MFILxmDDsPkxKsSNEh9mHHMty4Fw==", + "license": "MIT OR Apache-2.0" + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.5.0.tgz", + "integrity": "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==", + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@cloudflare/sandbox": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@cloudflare/sandbox/-/sandbox-0.10.3.tgz", + "integrity": "sha512-UHAbkYpS5iB7WwOIN/+x3JC+mP0NPFcpgCXKoxCycwwfyp46Gq5eX4KffTp7WWFa4ghM04ZDkqmn9r4/959IbA==", + "license": "Apache-2.0", + "dependencies": { + "@cloudflare/containers": "^0.3.0", + "aws4fetch": "^1.0.20", + "capnweb": "^0.8.0", + "hono": "^4.12.18" + }, + "peerDependencies": { + "@openai/agents": "^0.3.3", + "@opencode-ai/sdk": "^1.1.40", + "@xterm/xterm": ">=5.0.0" + }, + "peerDependenciesMeta": { + "@openai/agents": { + "optional": true + }, + "@opencode-ai/sdk": { + "optional": true + }, + "@xterm/xterm": { + "optional": true + } + } + }, + "node_modules/@cloudflare/unenv-preset": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.16.1.tgz", + "integrity": "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==", + "license": "MIT OR Apache-2.0", + "peerDependencies": { + "unenv": "2.0.0-rc.24", + "workerd": ">1.20260305.0 <2.0.0-0" + }, + "peerDependenciesMeta": { + "workerd": { + "optional": true + } + } + }, + "node_modules/@cloudflare/vite-plugin": { + "version": "1.42.3", + "resolved": "https://registry.npmjs.org/@cloudflare/vite-plugin/-/vite-plugin-1.42.3.tgz", + "integrity": "sha512-finkD78XE2kpWmWcOo3YjNShcdC2KDS2ZPZTgwuuWBa2FsOCHIWm2c1H6IUXZfK9BqZpHoz4SJI0ZPsjjBYq4A==", + "license": "MIT", + "dependencies": { + "@cloudflare/unenv-preset": "2.16.1", + "miniflare": "4.20260625.0", + "unenv": "2.0.0-rc.24", + "wrangler": "4.105.0", + "ws": "8.21.0" + }, + "bin": { + "cf-vite": "bin/cf-vite" + }, + "peerDependencies": { + "vite": "^6.1.0 || ^7.0.0 || ^8.0.0", + "wrangler": "^4.105.0" + } + }, + "node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20260625.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260625.1.tgz", + "integrity": "sha512-naCfBv0WnnTQIQPTniqMoUlklOIFjrAcSn1X+IAOhY8aFLF/xGYtFjs1eEE8sFib3ZuChGGpU23FFORVczqr0A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20260625.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260625.1.tgz", + "integrity": "sha512-jmH6zjp6Wrux46+qtFwDwrj+vd7s5bdwEqeGvdnwE0a4IEeAhKs0L42HQOyID+g5lkrHq9m55+AbhtmRAm63Pw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20260625.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260625.1.tgz", + "integrity": "sha512-MiQkpA/dX8d83Zp64pzHUKfd6ca4cvwxnNobSP6CnXvfESvnNI9pfa+nfwnParla36sPmnYntNkjR7NjRuDeKQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20260625.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260625.1.tgz", + "integrity": "sha512-LxxW7Qv60Xvv37+w6gUSDpYZziyqMy+cZWd9IvSA5ehVgKAxmzEaYPMiSZlxk32nbIWL9u/tfjXYCOKJ4Lo+XQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20260625.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260625.1.tgz", + "integrity": "sha512-LH6iIX1HHaTwVKV5VokDxxUErXJzQoNZFRwVm7Vx/3fB/ApcTcRCUaMqcxI4as94jEUqg+pmX5czOndiveohow==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workers-types": { + "version": "4.20260626.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20260626.1.tgz", + "integrity": "sha512-fBnpQyFRS3Ce1l2IUd3k+aUxgy/7VMlVXF4F672/eSrpXFeezCy3Ha6Z2uTyGgqu9sGvQPOj8nqKBv2yeI+ciw==", + "license": "MIT OR Apache-2.0" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@drizzle-team/brocli": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", + "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==", + "license": "Apache-2.0" + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", + "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", + "deprecated": "Merged into tsx: https://tsx.is", + "license": "MIT", + "dependencies": { + "esbuild": "~0.18.20", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", + "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", + "deprecated": "Merged into tsx: https://tsx.is", + "license": "MIT", + "dependencies": { + "@esbuild-kit/core-utils": "^3.3.2", + "get-tsconfig": "^4.7.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fontsource/maple-mono": { + "version": "5.2.6", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@hono/oauth-providers": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@hono/oauth-providers/-/oauth-providers-0.8.5.tgz", + "integrity": "sha512-hgEDH/gUmB/opman9jvT8dLItZsSC9M9yFiaam0b6InK7WQkdzIcaRAkdda47QpixnK9S1Ah2vjDB2U16LkMnA==", + "license": "MIT", + "engines": { + "node": ">=18.4.0" + }, + "peerDependencies": { + "hono": ">=3.0.0" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/keyring": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring/-/keyring-1.3.0.tgz", + "integrity": "sha512-WrOw/bcXm0f9qHkumlT1QlArXSTWqaY9sunsDpOk+yCCorCKMxvWT/a3xko4EYHVdeZoh00yI2TydXn6eyICDA==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/keyring-darwin-arm64": "1.3.0", + "@napi-rs/keyring-darwin-x64": "1.3.0", + "@napi-rs/keyring-freebsd-x64": "1.3.0", + "@napi-rs/keyring-linux-arm-gnueabihf": "1.3.0", + "@napi-rs/keyring-linux-arm64-gnu": "1.3.0", + "@napi-rs/keyring-linux-arm64-musl": "1.3.0", + "@napi-rs/keyring-linux-riscv64-gnu": "1.3.0", + "@napi-rs/keyring-linux-x64-gnu": "1.3.0", + "@napi-rs/keyring-linux-x64-musl": "1.3.0", + "@napi-rs/keyring-win32-arm64-msvc": "1.3.0", + "@napi-rs/keyring-win32-ia32-msvc": "1.3.0", + "@napi-rs/keyring-win32-x64-msvc": "1.3.0" + } + }, + "node_modules/@napi-rs/keyring-darwin-arm64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-darwin-arm64/-/keyring-darwin-arm64-1.3.0.tgz", + "integrity": "sha512-pl76hJvdYUBn6I24bXiOBMA9nbDapo3I5B+f3OorjDU4dUMSypXeKbOVehJe8fhgTiH24flMyTS3aAIy43xegQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-darwin-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-darwin-x64/-/keyring-darwin-x64-1.3.0.tgz", + "integrity": "sha512-YcJtEV5LA3cvA4z3BurgxH5IhTsW1JfIvcAAcqcecwk06Si9F9NqkxbZVIfDwQ8oRHgaBmT3zZJnLAotCrVahw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-freebsd-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-freebsd-x64/-/keyring-freebsd-x64-1.3.0.tgz", + "integrity": "sha512-vlLf31TGhfRAaxLDBhg8b89ss0HHD/lyNmL5F3UjSaz5CUXElsJmKYq9fqA/B+cZKUEUcLHHGhF0I/CqcFdaVw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-arm-gnueabihf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-arm-gnueabihf/-/keyring-linux-arm-gnueabihf-1.3.0.tgz", + "integrity": "sha512-KiWdMMu/Inz/bHHIAGrnF7r54FZDYXuHO6UFF/rhIrshUsxbMG1Rl9lEymNtqqsVo927G0VYcb02FzWQ3iBQRQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-arm64-gnu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-arm64-gnu/-/keyring-linux-arm64-gnu-1.3.0.tgz", + "integrity": "sha512-eyKGpY40lm9Jvs1aD294XRH4y7+TlJM0YVAryZeXA6TX0mb4gMkxVXwSQv7MCwgah7raeUd0dKUb4BPAYIgcMg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-arm64-musl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-arm64-musl/-/keyring-linux-arm64-musl-1.3.0.tgz", + "integrity": "sha512-iIK6JWHXAJqDrEyLY3TmswwloVyt2vj+04TZnew+uSJ9gnDO8EwRbp3/iw3LpWaXiDO7VomGO6y8I0Id8uBZSw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-riscv64-gnu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-riscv64-gnu/-/keyring-linux-riscv64-gnu-1.3.0.tgz", + "integrity": "sha512-/PGqrwn6EwgtK6vccASSXJRfOSP4vN1F4ASsIQ+7MdrK6hNvAJ1FZPrIuD5gGGdxezo3F++To2Wq7DbuGIeuNQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-x64-gnu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-x64-gnu/-/keyring-linux-x64-gnu-1.3.0.tgz", + "integrity": "sha512-2PDK1WKWTu9lBGq9VvNEkSlQD3O7YwVpmnyN2M3cy4v7NJ/8gDMd9GXv3G+FVXN13uhp4gnnPBS+ScefmEeD2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-x64-musl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-x64-musl/-/keyring-linux-x64-musl-1.3.0.tgz", + "integrity": "sha512-oJ2HkX8YUo46QBkn0pG+HuIKQNqr523q6vBobCn+P95s4C4K6/kLBqHY/1bg5J4ap31DzsznhnFKcfBNBsjCnw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-win32-arm64-msvc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-win32-arm64-msvc/-/keyring-win32-arm64-msvc-1.3.0.tgz", + "integrity": "sha512-tOd3c/uAaeoE4ycVlmAdSvygz0Zt3zdca6Y7gokBeIbaRDWpjDIUOpU3MvML59XAaqyuKGsVVu0F/DZb1lHPmw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-win32-ia32-msvc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-win32-ia32-msvc/-/keyring-win32-ia32-msvc-1.3.0.tgz", + "integrity": "sha512-sPSqeAFZMGqP1R++M2JTza7GQJJ/TpCo6JU6Vcd4jnebvOaEDs9b7eipakU1PJdSvhpC2yXMCNRk9gXfrhuwHQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-win32-x64-msvc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-win32-x64-msvc/-/keyring-win32-x64-msvc-1.3.0.tgz", + "integrity": "sha512-4DnCWXwDc0HRKwyRlG5y0VhKZW2tNRQfKKfyj6IX/KWfDNyq9hn4n+GL1auyDcOO/v8PwnhmYo2+rOOqCkvvOg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@noble/ciphers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.2.0.tgz", + "integrity": "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz", + "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", + "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.137.0", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "license": "MIT" + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.1.3", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@shikijs/core": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.3.0.tgz", + "integrity": "sha512-EooU3i9F6IAE8kEu+AnGf9DFZWkQBZ+hJn3tLVbsH+61mtQiva5biai66fAA6nvFPXkLgvrh7BrR7YcJU83xQQ==", + "license": "MIT", + "dependencies": { + "@shikijs/primitive": "4.3.0", + "@shikijs/types": "4.3.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.3.0.tgz", + "integrity": "sha512-hTv/KiFf2tpiqlACPiztGGurEARWIutB8YUhcrA1pUC7VzzwKO+g5crUocrLztrZ5ro5Z4hbXg7bYclETn3gSQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.3.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.3.0.tgz", + "integrity": "sha512-1vMdN3gHfnKfLYwecUI2ITJI4RhHt96xEaJumVn7Heb0IlJ8WQMIH0Voak+2j22BpSNKdnOfB/pCTPnPm2gq7A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.3.0", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.3.0.tgz", + "integrity": "sha512-rnlqFbBRSys9bT4gl/5rw9RnS0W/I84ZldXPkO7cvlEMoV85TyF/aU01N7/NbSR776RNLjrJKjfFUXJR6wN1Cg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.3.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.3.0.tgz", + "integrity": "sha512-CPkz64PTa5diRW1ggzMZH9VM/du4RNChYgVtgqrFcgruvIybmCvySv8GkiHSczUHXYuuR8TdKEwFx+UnZMpgdg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.3.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.3.0.tgz", + "integrity": "sha512-Avgt05YiT+Y3prjIc9lmQxhJzHBcCfR6cjiFW4OyaMBbt2A6trX5rfjUzx+Vj/mE9qpArYjatnqo9XPjQNW/AQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.3.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/transformers": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-4.3.0.tgz", + "integrity": "sha512-5/elhJEcUrxdyQ95SSx0HzrnbzVPuipk6TYiXZL67tHhw8J+4N5shzmrTYyCaudiSnpuuwPdpaVtciwRFwSA7A==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.3.0", + "@shikijs/types": "4.3.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.3.0.tgz", + "integrity": "sha512-oc8b9U2SYvofKZk8e/737nIX0qwf6eV2vHFATeObAu7r+mUVpLs8Re0BmVkIjAWAYgkmG/CzLNo7rzuBzRu/wQ==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.17.tgz", + "integrity": "sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg==", + "license": "CC0-1.0" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.1.tgz", + "integrity": "sha512-6NDaqRoAMSXD1mr/RXu0HBvNE9a2n5tHPsxu9XHLws8o4Twes5rBM2205SUUiJ9goAtadrN6xTGX0UDEwp/N4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "5.21.6", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.1" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.1.tgz", + "integrity": "sha512-yVPyo8RNkabVr3O2EhHEE0Rewu7YKzc1DhIqfL46LKveFrmu9XbDazNOJY7/GRuvw1h6u3utWnR29H/p5JPlgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.1", + "@tailwindcss/oxide-darwin-arm64": "4.3.1", + "@tailwindcss/oxide-darwin-x64": "4.3.1", + "@tailwindcss/oxide-freebsd-x64": "4.3.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.1", + "@tailwindcss/oxide-linux-x64-musl": "4.3.1", + "@tailwindcss/oxide-wasm32-wasi": "4.3.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.1.tgz", + "integrity": "sha512-SVlyf61g374l5cHyg8x9kf5xmLcOaxvOTsbsqDnSsDJaKOEFZ7GCvi84VAVGpxojYOs1+3K6M0UjXfqPU8vmOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.1.tgz", + "integrity": "sha512-hVnWLwv+e/l7c4WKyVtHVrIPvYdqWHjRB3MDIqARynzFtnQg85kmQEFCbV9Ja0VVx4xXTIiDWY60Y7iz/iNoDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.1.tgz", + "integrity": "sha512-Cf7abu0WVgbhU7ANgPUnSAvm7nCvMweusHb8FnaHlLfv/Caq4GYaEZg7ZImzzmjx4lIAfuS8q+eLIS7A7IzxIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.1.tgz", + "integrity": "sha512-ZZqzX2Y+GXtXXfqSfpJhDm60OoZfvLHLCgm+J7NVqgHHJjG/m9ugZI77RwTsVd4fnBJuCFP6Ae6kTJb71UdS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.1.tgz", + "integrity": "sha512-/Ah/xik0LaMYfv9DZ0S/t4pBlBNYOcqtRwusjgovHkvT8ixueWCLyJjsaF5kQIckjb4IT8Q6K6p/iPmZMixYgg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.1.tgz", + "integrity": "sha512-gqdFoVJlw444GvpnheZLHmvTzSxI/cOUUh2KSNejQjTcYkW062SVD+En0rUgD+QV91bz1XGIGtt1HJd48xUGbQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.1.tgz", + "integrity": "sha512-Bwv9KwOvE0VKa86xPFif9b9c3Y1NxOV1P0gLti/IYaWEsQYZXDlxfGEtA8mdDZ7SG3wyNXAWYT5SIn3giL57oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.1.tgz", + "integrity": "sha512-Ymi8O8T15HYQdOUWUtTI6ldN0neHP85FC+Qz32xTcZ7iJXtem/x8ITev0o1e9e5rkqj4lONZfTRLvkmin1+tKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.1.tgz", + "integrity": "sha512-M+P/91qJ6uILLw4k2G93GMDRAXj61SMvFQYt39AqvUqYgExXpLL5aepfns7sj4HiAQeolirQF9E0lzRvdf4zPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.1.tgz", + "integrity": "sha512-zsM8uOeqvVGHsAXsJxsT28ttosFahLJKCLOTUBqRAtKnVgGSRitds9T432QiT8b77Yga7JIBkulIRRlJPtYhRA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.1.tgz", + "integrity": "sha512-aiNvSq9BsVk8V513lDKlrCFAgf8qBMPZTpgEhInL+NwQqs97mYmupVMrPrgBBSL8Pv/0zXu9MrMF9rMun1ZeNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.1.tgz", + "integrity": "sha512-xDEyu1rg290472FEGaKHnzyDyh5QH+AlWvsU5hMoMtPpzmKlRI0jaYKCgSHDYtaQWZOYbMaduSyCwFwY4n1HmA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.1.tgz", + "integrity": "sha512-hItDHuIIlEV61R+faXu66s1K36aTurO/Qw0e45Vskz57gXl9pWOT6eg3zmcEui6CZXddbN7zd41bwmvag4JGwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.1", + "@tailwindcss/oxide": "4.3.1", + "tailwindcss": "4.3.1" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.0.1", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.2", + "license": "ISC" + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz", + "integrity": "sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==", + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/@void/md": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@void/md/-/md-0.9.3.tgz", + "integrity": "sha512-ef5eET2EpPshMV8ZMUlA3UdZ+r0s8wWLE5bh/laPywfyHlZQTOHrH9Ctw19Wkt1JuGuLotpF6C1HvCY667T/YA==", + "dependencies": { + "@shikijs/engine-javascript": "^4.0.2", + "@shikijs/transformers": "^4.0.2", + "gray-matter": "^4.0.3", + "markdown-exit": "1.0.0-beta.9", + "markdown-it-anchor": "^9.2.0", + "markdown-it-attrs": "^4.3.1", + "markdown-it-container": "^4.0.0", + "markdown-it-emoji": "^3.0.0", + "pathe": "^2.0.3", + "shiki": "^4.0.2", + "tinyglobby": "^0.2.16" + }, + "peerDependencies": { + "vite": "^8.0.0", + "void": "0.9.3" + } + }, + "node_modules/@void/react": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@void/react/-/react-0.9.3.tgz", + "integrity": "sha512-Wm5d2U0uvt6rBqW7Ho7vbm0a73ofaSgJiDlVSOLv55Z6vPO4t+2s7/eNImTJUdEkHdYMa/KuDYHXlFrRNQYWgQ==", + "dependencies": { + "@vitejs/plugin-react": "^6.0.1" + }, + "peerDependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0", + "vite": "^8.0.0", + "void": "0.9.3" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.39.tgz", + "integrity": "sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.29.7", + "@vue/shared": "3.5.39", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.39.tgz", + "integrity": "sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.5.39", + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.39.tgz", + "integrity": "sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.29.7", + "@vue/compiler-core": "3.5.39", + "@vue/compiler-dom": "3.5.39", + "@vue/compiler-ssr": "3.5.39", + "@vue/shared": "3.5.39", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.15", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.39.tgz", + "integrity": "sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.39", + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.39.tgz", + "integrity": "sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.39.tgz", + "integrity": "sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.39", + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.39.tgz", + "integrity": "sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.39", + "@vue/runtime-core": "3.5.39", + "@vue/shared": "3.5.39", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.39.tgz", + "integrity": "sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/compiler-ssr": "3.5.39", + "@vue/shared": "3.5.39" + }, + "peerDependencies": { + "vue": "3.5.39" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.39.tgz", + "integrity": "sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arkregex": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arkregex/-/arkregex-0.0.6.tgz", + "integrity": "sha512-9mvuMKQuibfWhBrsNYhsKhNb6k9oEHoAJ/FvDiqe8h+E9Siwe0/cro1WVOGgpajXQ9ZHd24yCOf2k35Q/QqUQw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@ark/util": "0.56.0" + } + }, + "node_modules/arktype": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.2.1.tgz", + "integrity": "sha512-CWPJxNoSxrS+NYGB3ufwc/blFonESEW5vBQyYPVS0rf4STu8VWoAWfKJSl5vVVm56h4yxpwbODeYwy6XFKvojA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@ark/schema": "0.56.0", + "@ark/util": "0.56.0", + "arkregex": "0.0.6" + } + }, + "node_modules/aws4fetch": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/aws4fetch/-/aws4fetch-1.0.20.tgz", + "integrity": "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-call": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.3.6.tgz", + "integrity": "sha512-no1jI+h6Bkxs1NVBo4rONbVIzsPjZ8IUu7IHaJBiFwVX1XEQGN8KpHots5fSWmXe9nNyLuLIcgx6WEUcE6EDaA==", + "license": "MIT", + "dependencies": { + "@better-auth/utils": "^0.4.0", + "@better-fetch/fetch": "^1.1.21", + "rou3": "^0.7.12", + "set-cookie-parser": "^3.0.1" + }, + "peerDependencies": { + "zod": "^4.0.0" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/better-sqlite3": { + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz", + "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x || 26.x" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blake3-jit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blake3-jit/-/blake3-jit-1.1.0.tgz", + "integrity": "sha512-5lNvUdIw2roA6LSV39E1mDXN8WVK8kC0dGZtaZoErkVktSgUjgRueTv4WVqHIUMHGerkfhxBuqFtMNuo/GdLrA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "license": "MIT" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/capnweb": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/capnweb/-/capnweb-0.8.0.tgz", + "integrity": "sha512-BK/TuXUiyfLSKsmjojn70yN7oYG/JJzoURZ3tckjg5Zj2KcygPm0A5jyOlswK7SYB4f0Gh9tt+RZ132b80iLfA==", + "license": "MIT" + }, + "node_modules/ccount": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "devOptional": true, + "license": "MIT" + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/drizzle-arktype": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/drizzle-arktype/-/drizzle-arktype-0.1.3.tgz", + "integrity": "sha512-X66GB2pz7Nb+NmCZefDXpdoglxjGYnB2yRU5umAK2stVkl4rvV6i6XbMg1+w1HiY/ydC8gJVq4jKAARYazpb3g==", + "license": "Apache-2.0", + "peerDependencies": { + "arktype": ">=2.0.0", + "drizzle-orm": ">=0.36.0" + } + }, + "node_modules/drizzle-kit": { + "version": "0.31.10", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.10.tgz", + "integrity": "sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==", + "license": "MIT", + "dependencies": { + "@drizzle-team/brocli": "^0.10.2", + "@esbuild-kit/esm-loader": "^2.5.5", + "esbuild": "^0.25.4", + "tsx": "^4.21.0" + }, + "bin": { + "drizzle-kit": "bin.cjs" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/drizzle-orm": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.2.tgz", + "integrity": "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@electric-sql/pglite": ">=0.2.0", + "@libsql/client": ">=0.10.0", + "@libsql/client-wasm": ">=0.10.0", + "@neondatabase/serverless": ">=0.10.0", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1.13", + "@prisma/client": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@libsql/client-wasm": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "gel": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/drizzle-valibot": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/drizzle-valibot/-/drizzle-valibot-0.4.2.tgz", + "integrity": "sha512-tzjT7g0Di/HX7426marIy8IDtWODjPgrwvgscdevLQRUe5rzYzRhx6bDsYLdDFF9VI/eaYgnjNeF/fznWJoUjg==", + "license": "Apache-2.0", + "peerDependencies": { + "drizzle-orm": ">=0.36.0", + "valibot": ">=1.0.0-beta.7" + } + }, + "node_modules/drizzle-zod": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/drizzle-zod/-/drizzle-zod-0.8.3.tgz", + "integrity": "sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==", + "license": "Apache-2.0", + "peerDependencies": { + "drizzle-orm": ">=0.36.0", + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.21.6", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz", + "integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.1", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hono": { + "version": "4.12.27", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.27.tgz", + "integrity": "sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jiti": { + "version": "2.7.0", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jose": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/kysely": { + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.29.2.tgz", + "integrity": "sha512-s6WVJyEZrbm6jhBpiKHsGHyePMrVQKJ85wZCFCr9W4QHv6WTjWIrdvTmO9hDEA3bNK0xkrE2DqrHsXMLWuZpQg==", + "license": "MIT", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/linkify-it": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", + "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/markdown-exit": { + "version": "1.0.0-beta.9", + "resolved": "https://registry.npmjs.org/markdown-exit/-/markdown-exit-1.0.0-beta.9.tgz", + "integrity": "sha512-5tzrMKMF367amyBly131vm6eGuWRL2DjBqWaFmPzPbLyuxP0XOmyyyroOAIXuBAMF/3kZbbfqOxvW/SotqKqbQ==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5.0.0", + "@types/mdurl": "^2.0.0", + "entities": "^7.0.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + } + }, + "node_modules/markdown-it": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", + "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.1", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-anchor": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-9.2.0.tgz", + "integrity": "sha512-sa2ErMQ6kKOA4l31gLGYliFQrMKkqSO0ZJgGhDHKijPf0pNFM9vghjAh3gn26pS4JDRs7Iwa9S36gxm3vgZTzg==", + "license": "Unlicense", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it-attrs": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.5.0.tgz", + "integrity": "sha512-dsuEyK/MDAYsdZLDIaDAQXz5+gP0AAbJ4ZjOSB0w+ZGe4lLbzyCgGg0LApC6j9zUK2F+2SA9VkzXfyNG9hL/8g==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "markdown-it": ">= 9.0.0" + } + }, + "node_modules/markdown-it-container": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-4.0.0.tgz", + "integrity": "sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==", + "license": "MIT" + }, + "node_modules/markdown-it-emoji": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-3.0.0.tgz", + "integrity": "sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==", + "license": "MIT" + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0", + "peer": true + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/miniflare": { + "version": "4.20260625.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260625.0.tgz", + "integrity": "sha512-3kKXwRUObJsnBYPBgR0NiNZYKF/yv8GFyha1cx2EeAEraxNODgRVcyeRo+F1ok1tg5Mg7iUpOWSkknQTHuFhwA==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "sharp": "0.34.5", + "undici": "7.28.0", + "workerd": "1.20260625.1", + "ws": "8.21.0", + "youch": "4.1.0-beta.10" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.15", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanostores": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.3.0.tgz", + "integrity": "sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": "^20.0.0 || >=22.0.0" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.92.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz", + "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.2", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.6", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/pg": { + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.22.0.tgz", + "integrity": "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.14.0", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.15.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.4.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz", + "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.0.tgz", + "integrity": "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.15.0.tgz", + "integrity": "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/property-information": { + "version": "7.2.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rolldown": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.137.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.1.3", + "@rolldown/binding-darwin-arm64": "1.1.3", + "@rolldown/binding-darwin-x64": "1.1.3", + "@rolldown/binding-freebsd-x64": "1.1.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.1.3", + "@rolldown/binding-linux-arm64-gnu": "1.1.3", + "@rolldown/binding-linux-arm64-musl": "1.1.3", + "@rolldown/binding-linux-ppc64-gnu": "1.1.3", + "@rolldown/binding-linux-s390x-gnu": "1.1.3", + "@rolldown/binding-linux-x64-gnu": "1.1.3", + "@rolldown/binding-linux-x64-musl": "1.1.3", + "@rolldown/binding-openharmony-arm64": "1.1.3", + "@rolldown/binding-wasm32-wasi": "1.1.3", + "@rolldown/binding-win32-arm64-msvc": "1.1.3", + "@rolldown/binding-win32-x64-msvc": "1.1.3" + } + }, + "node_modules/rou3": { + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/rou3/-/rou3-0.7.12.tgz", + "integrity": "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.1.tgz", + "integrity": "sha512-vM9SUhjsUYs6UeJUmygc5Ofm5eQGe85riob5ju6XCgFGJI5PLV4nrDAQpQjd+LkFBpAkADn5BQQpZ9EUNkyLuA==", + "license": "MIT" + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/shiki": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.3.0.tgz", + "integrity": "sha512-NKKjWzR6LIGL3sXBrWDw9sDS9cxx42/DkysaNqJEeOWE8Kix5gpak0bc00OfDVEO4oyXSyz8+aRaqKoBD1yo7A==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.3.0", + "@shikijs/engine-javascript": "4.3.0", + "@shikijs/engine-oniguruma": "4.3.0", + "@shikijs/langs": "4.3.0", + "@shikijs/themes": "4.3.0", + "@shikijs/types": "4.3.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.1.tgz", + "integrity": "sha512-hk+TB1m+K8CYNrP6rjQaq/Y+4Zylwpa87mLYBKCunwnnQ9p+fHb7kmSfGqyEJoxF/O6CDyABWVFEafNSYKll+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/tsx": { + "version": "4.22.4", + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", + "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "8.3.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/valibot": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.4.1.tgz", + "integrity": "sha512-klCmFTz2jeDluy9RwX+F884TCiogtdBJ/YaxSx1EOBYXa3NXNWj8kR1jjN8rzluwojJVWWaHJ4r1U5LfICnM3g==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.15", + "rolldown": "~1.1.2", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.3.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 + } + } + }, + "node_modules/void": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/void/-/void-0.9.3.tgz", + "integrity": "sha512-qCQrUTAjp2bOSbr9JeIysghEkDcUWG7KszgCpQ9ZzHmbmbPkWlkyRpQ8hhVmvO62h/QXEK6N7CXHTpMfg8iNMA==", + "dependencies": { + "@cloudflare/sandbox": "^0.10.0", + "@cloudflare/vite-plugin": "^1.36.3", + "@cloudflare/workers-types": "^4.20260508.1", + "@hono/oauth-providers": "^0.8.5", + "@napi-rs/keyring": "1.3.0", + "better-auth": "^1.6.9", + "better-sqlite3": "^12.9.0", + "blake3-jit": "^1.1.0", + "drizzle-arktype": "^0.1.3", + "drizzle-kit": "^0.31.10", + "drizzle-orm": "^0.45.2", + "drizzle-valibot": "^0.4.2", + "drizzle-zod": "^0.8.3", + "es-module-lexer": "^2.1.0", + "hono": "^4.12.18", + "ignore": "^7.0.5", + "jsonc-parser": "3.3.1", + "pg": "^8.20.0", + "wrangler": "^4.90.0" + }, + "bin": { + "void": "dist/cli/cli.mjs" + }, + "peerDependencies": { + "@void/md": "0.9.3", + "arktype": ">=2.0.0", + "valibot": ">=1.0.0-beta.7", + "vite": "^8.0.0", + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@void/md": { + "optional": true + }, + "arktype": { + "optional": true + }, + "valibot": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/void/node_modules/better-auth": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.20.tgz", + "integrity": "sha512-fSpGHGRKiGRiYVd3QTQtuVZ8oxpiSe/7ip0Rpvt/Sy8zQbEbVKUPMOhE0gLXg+FjqTUsIo7582hxUYxtEcqUpA==", + "license": "MIT", + "dependencies": { + "@better-auth/core": "1.6.20", + "@better-auth/drizzle-adapter": "1.6.20", + "@better-auth/kysely-adapter": "1.6.20", + "@better-auth/memory-adapter": "1.6.20", + "@better-auth/mongo-adapter": "1.6.20", + "@better-auth/prisma-adapter": "1.6.20", + "@better-auth/telemetry": "1.6.20", + "@better-auth/utils": "0.4.2", + "@better-fetch/fetch": "1.3.1", + "@noble/ciphers": "^2.1.1", + "@noble/hashes": "^2.0.1", + "better-call": "1.3.6", + "defu": "^6.1.4", + "jose": "^6.1.3", + "kysely": "^0.28.17 || ^0.29.0", + "nanostores": "^1.1.1", + "zod": "^4.3.6" + }, + "peerDependencies": { + "@lynx-js/react": "*", + "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", + "@sveltejs/kit": "^2.0.0", + "@tanstack/react-start": "^1.0.0", + "@tanstack/solid-start": "^1.0.0", + "better-sqlite3": "^12.0.0", + "drizzle-kit": ">=0.31.4", + "drizzle-orm": "^0.45.2", + "mongodb": "^6.0.0 || ^7.0.0", + "mysql2": "^3.0.0", + "next": "^14.0.0 || ^15.0.0 || ^16.0.0", + "pg": "^8.0.0", + "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0", + "solid-js": "^1.0.0", + "svelte": "^4.0.0 || ^5.0.0", + "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", + "vue": "^3.0.0" + }, + "peerDependenciesMeta": { + "@lynx-js/react": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@sveltejs/kit": { + "optional": true + }, + "@tanstack/react-start": { + "optional": true + }, + "@tanstack/solid-start": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "drizzle-kit": { + "optional": true + }, + "drizzle-orm": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "next": { + "optional": true + }, + "pg": { + "optional": true + }, + "prisma": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "solid-js": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vitest": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.39.tgz", + "integrity": "sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.39", + "@vue/compiler-sfc": "3.5.39", + "@vue/runtime-dom": "3.5.39", + "@vue/server-renderer": "3.5.39", + "@vue/shared": "3.5.39" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/workerd": { + "version": "1.20260625.1", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260625.1.tgz", + "integrity": "sha512-GApQvFX52SDM6L4u0+RRnUDB1wJOnEwoXjinkmOPtIyofWBxrlZckdegJSYc1leg++lLZ3+DQ4zMVmBqYVtzfA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20260625.1", + "@cloudflare/workerd-darwin-arm64": "1.20260625.1", + "@cloudflare/workerd-linux-64": "1.20260625.1", + "@cloudflare/workerd-linux-arm64": "1.20260625.1", + "@cloudflare/workerd-windows-64": "1.20260625.1" + } + }, + "node_modules/wrangler": { + "version": "4.105.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.105.0.tgz", + "integrity": "sha512-7dXFH6OLj1Fv0y6ZeRPUxFTkp+duWD7/xxVi/1c0vfOeEYwIFKWB7cdqnY05DvY1Ta3BnqAwRkXfLs8PDj538g==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@cloudflare/kv-asset-handler": "0.5.0", + "@cloudflare/unenv-preset": "2.16.1", + "blake3-wasm": "2.1.5", + "esbuild": "0.28.1", + "miniflare": "4.20260625.0", + "path-to-regexp": "6.3.0", + "unenv": "2.0.0-rc.24", + "workerd": "1.20260625.1" + }, + "bin": { + "cf-wrangler": "bin/cf-wrangler.js", + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=22.0.0" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20260625.1" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + } + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "license": "MIT", + "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 + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/youch": { + "version": "4.1.0-beta.10", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", + "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@poppinss/dumper": "^0.6.4", + "@speed-highlight/core": "^1.2.7", + "cookie": "^1.0.2", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000..395117d --- /dev/null +++ b/website/package.json @@ -0,0 +1,28 @@ +{ + "name": "zig-napi-website", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --host 127.0.0.1", + "build": "tsc --noEmit && vite build", + "preview": "vite preview --host 127.0.0.1" + }, + "dependencies": { + "@fontsource/maple-mono": "^5.2.6", + "@void/md": "^0.9.3", + "@void/react": "^0.9.3", + "react": "^19.2.1", + "react-dom": "^19.2.1", + "void": "^0.9.3" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.3.1", + "@types/node": "^26.0.1", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "tailwindcss": "^4.3.1", + "typescript": "^6.0.3", + "vite": "^8.0.0" + } +} diff --git a/website/public/logo/icon-1024.png b/website/public/logo/icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..a31a785569311b93f7529d82b57cf5179c9bc8c9 GIT binary patch literal 253151 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 )uH3mllJ5d4!7{Ar5$(<7rLa&BYSlE) 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Ι{wzWu+SQhXTsmELBn{yMlIlltB8NqD+(=9>d61) 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
`EH^*LTx9lEKnrW-( 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 literal 0 HcmV?d00001 diff --git a/website/public/logo/icon-256.png b/website/public/logo/icon-256.png new file mode 100644 index 0000000000000000000000000000000000000000..51e3fc69b2051be87e864372514d55d530b4e42a GIT binary patch literal 66916 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
HF9K{*B47U>)`3$f0M^Fv> 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
  • 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 H?2-7t&QRA; literal 0 HcmV?d00001 diff --git a/website/public/zig-napi-pipeline.svg b/website/public/zig-napi-pipeline.svg new file mode 100644 index 0000000..1c8fb7a --- /dev/null +++ b/website/public/zig-napi-pipeline.svg @@ -0,0 +1,108 @@ + + zig-napi build pipeline + A minimal dark pipeline diagram showing Zig exports passing through zig-napi into OpenHarmony, Node.js, and TypeScript outputs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zig + + + + + + + + + + + + + + + zig-napi + + + + + + + + + + OHOS + .so + + + + + + Node + .node + + + + + + Types + .d.ts + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/src/api-docs.tsx b/website/src/api-docs.tsx new file mode 100644 index 0000000..908d3e8 --- /dev/null +++ b/website/src/api-docs.tsx @@ -0,0 +1,136 @@ +import { lastUpdatedByApiSection } from 'virtual:api-last-updated' +import { apiMarkdownGroups, apiMarkdownSections, getApiSection } from './content/api' + +export function ApiDocsPage() { + const activeId = resolveActiveApiSectionId() + const activeSection = getApiSection(activeId) + const ActiveComponent = activeSection.Component + const activeIndex = apiMarkdownSections.findIndex((section) => section.id === activeSection.id) + const previousSection = activeIndex > 0 ? apiMarkdownSections[activeIndex - 1] : undefined + const nextSection = activeIndex >= 0 && activeIndex < apiMarkdownSections.length - 1 ? apiMarkdownSections[activeIndex + 1] : undefined + const tocHeadings = activeSection.headings.filter((heading) => heading.depth > 1 && heading.depth <= 3) + const lastUpdated = formatLastUpdated(lastUpdatedByApiSection[activeSection.id]) + + return ( +
    +
    + + API Reference + + + +
    +
    + +
    + + {tocHeadings.length > 0 ? ( + + ) : null} +
    +
    +
    + ) +} + +function resolveActiveApiSectionId() { + const parts = window.location.pathname.split('/').filter(Boolean) + return parts[0] === 'api' && parts[1] ? parts[1] : 'overview' +} + +function apiHref(id: string) { + return id === 'overview' ? '/api/' : `/api/${id}/` +} + +function apiNavLinkClass(active: boolean, mode: 'desktop' | 'mobile' = 'desktop') { + if (mode === 'mobile') { + return [ + 'flex min-h-11 items-center rounded-md px-2 transition-colors', + active + ? 'bg-(--color-accent-muted) text-(--color-fg)' + : 'text-(--color-muted) hover:bg-(--color-surface-2) hover:text-(--color-fg)', + ].join(' ') + } + + return [ + 'border-l-2 pl-3 transition-colors', + active + ? 'border-(--color-accent) text-(--color-fg)' + : 'border-transparent text-(--color-muted) hover:border-(--color-accent) hover:text-(--color-fg)', + ].join(' ') +} + +function formatLastUpdated(value: string | undefined) { + if (!value) return '' + const date = new Date(value) + if (Number.isNaN(date.valueOf())) return '' + + return new Intl.DateTimeFormat('en', { + year: 'numeric', + month: 'short', + day: 'numeric', + }).format(date) +} diff --git a/website/src/content/api/async-runtime.md b/website/src/content/api/async-runtime.md new file mode 100644 index 0000000..b05ad9d --- /dev/null +++ b/website/src/content/api/async-runtime.md @@ -0,0 +1,160 @@ +--- +title: Async Runtime +--- + +# Async Runtime + +Async descriptors turn native work into JavaScript promises. + +## `AsyncRuntime` + +```zig +napi.AsyncRuntime +``` + +Runtime values: + +| Value | Behavior | +| --- | --- | +| `.single` | Run on the single-threaded IO runtime. | +| `.thread` | Run on the shared threaded IO runtime. | +| `.event` | Use evented IO when available, otherwise fall back through the runtime resolver. | +| `.serial` / `.threaded` / `.evented` | Backward-compatible spellings. | + +`resolveRequestedRuntime(runtime)` normalizes the backward-compatible spellings. + +## `Async` + +```zig +napi.Async(comptime Result: type, comptime runtime: napi.AsyncRuntime) +``` + +Use `Async` for work that produces one final result. + +```zig +fn execute(input: u32) !u32 { + return input + 1; +} + +pub fn run(value: u32) napi.Async(u32, .thread) { + return napi.Async(u32, .thread).from(value, execute); +} +``` + +The run function must accept either `(input)` or `(napi.AsyncContext(void), input)` and return `Result` or `!Result`. + +## `AsyncWithEvents` + +```zig +napi.AsyncWithEvents( + comptime Result: type, + comptime Event: type, + comptime runtime: napi.AsyncRuntime, +) +``` + +Use this when native work emits progress events before resolving. + +```zig +const Progress = struct { current: u32, total: u32 }; + +fn execute(ctx: napi.AsyncContext(Progress), total: u32) !u32 { + for (0..total) |index| { + try ctx.emit(.{ .current = @intCast(index), .total = total }); + try ctx.checkCancelled(); + } + return total; +} +``` + +When an exported function returns `AsyncWithEvents`, declaration generation adds a trailing optional event listener parameter. + +## Scheduling + +Async descriptors expose: + +| Method | Use | +| --- | --- | +| `from(input, run_fn)` | Create a descriptor from input data and a runner function. | +| `schedule(env)` | Schedule without listener or abort signal. | +| `scheduleWithListener(env, listener)` | Schedule with a JavaScript event listener. | +| `scheduleWithSignal(env, signal)` | Schedule with cancellation. | +| `scheduleWithListenerAndSignal(env, listener, signal)` | Schedule with both. | +| `deinit()` | Destroy an unscheduled descriptor. | + +Exported functions usually return the descriptor instead of calling `schedule` manually. The function wrapper schedules it and returns the Promise. + +## `AsyncContext` + +```zig +napi.AsyncContext(comptime Event: type) +``` + +Context helpers: + +| Method | Use | +| --- | --- | +| `emit(event)` | Emit one event. Invalid for `AsyncContext(void)`. | +| `isCancelled()` | Read cancellation state. | +| `checkCancelled()` | Return `error.Cancelled` when cancelled. | +| `awaitGroup()` | Await the IO group. | +| `cancelGroup()` | Cancel the IO group. | + +## `CancelToken` + +```zig +napi.CancelToken +``` + +Small cancellation primitive: + +| Method | Use | +| --- | --- | +| `cancel()` | Mark cancelled. | +| `isCancelled()` | Read state. | +| `check()` | Return `error.Cancelled` when cancelled. | + +## `AbortSignal` + +```zig +napi.AbortSignal +``` + +`AbortSignal` binds JavaScript cancellation to native callbacks. + +| Method | Use | +| --- | --- | +| `from_raw(env, raw)` | Wrap an existing signal value. | +| `from_napi_value(env, raw)` | Conversion hook. | +| `isAborted()` | Read the signal's `aborted` property. | +| `bind(context, callback)` | Register a native abort callback. | + +`bind` returns `*AbortRegistration`. + +## `AbortRegistration` + +| Method | Use | +| --- | --- | +| `requestAbort()` | Invoke the registered native callback. | +| `release()` | Remove the registration and delete the signal reference. | + +`Promise.RejectAbortError()` and async cancellation use the same `AbortError` shape. + +## `Worker` + +```zig +napi.Worker(env: napi.Env, data: anytype) +``` + +`Worker` is a wrapper around `napi_async_work`. The input data must be a struct with `data` and `Execute` fields. It may also include `OnComplete`. + +`Execute` accepts `(data)` or `(napi.Env, data)` and may return `T`, `!T`, `napi.Result(T)`, or `!napi.Result(T)`. `OnComplete` accepts `(data)` or `(napi.Env, data)`. + +| Method | Use | +| --- | --- | +| `Queue()` | Queue work without returning a Promise. | +| `AsyncQueue()` | Queue work and return a `napi.Promise`. | +| `Cancel()` | Cancel the async work. | +| `deinit()` | Delete work and destroy the wrapper. | + +Async wrappers, workers, and `ThreadSafeFunction` require Node-API v4 or newer. diff --git a/website/src/content/api/binary-data.md b/website/src/content/api/binary-data.md new file mode 100644 index 0000000..7a93f3b --- /dev/null +++ b/website/src/content/api/binary-data.md @@ -0,0 +1,123 @@ +--- +title: Binary Data +--- + +# Binary Data + +Binary wrappers make ownership and copying explicit at the JavaScript boundary. + +## `Buffer` + +```zig +napi.Buffer +``` + +Use `Buffer` for Node-compatible binary data. + +| Constructor | Behavior | +| --- | --- | +| `Buffer.New(env, len)` | Allocate a new mutable buffer. | +| `Buffer.copy(env, data)` | Copy bytes into a new buffer. | +| `Buffer.from(env, data)` | Wrap mutable data and transfer ownership to JavaScript. | +| `Buffer.fromWithFinalizer(env, data, on_finalize)` | Wrap mutable data and run a callback when JavaScript releases it. | +| `Buffer.from_raw(env, raw)` | Wrap an existing `napi_value`. | + +Read the memory with: + +| Method | Use | +| --- | --- | +| `asSlice()` | Mutable `[]u8`. | +| `asConstSlice()` | Immutable `[]const u8`. | +| `length()` | Byte length. | + +When external buffers are not allowed by the runtime, creation falls back to copied buffers where the implementation can safely do so. + +## `ArrayBuffer` + +```zig +napi.ArrayBuffer +``` + +`ArrayBuffer` mirrors the buffer API for JavaScript `ArrayBuffer` values. + +| Constructor | Behavior | +| --- | --- | +| `ArrayBuffer.New(env, len)` | Allocate a new ArrayBuffer. | +| `ArrayBuffer.copy(env, data)` | Copy bytes into a new ArrayBuffer. | +| `ArrayBuffer.from(env, data)` | Wrap mutable data and transfer ownership to JavaScript. | +| `ArrayBuffer.fromWithFinalizer(env, data, on_finalize)` | Wrap mutable data and run a callback when released. | +| `ArrayBuffer.from_raw(env, raw)` | Wrap an existing `napi_value`. | + +| Method | Use | +| --- | --- | +| `asSlice()` / `asConstSlice()` | Access bytes. | +| `length()` | Byte length. | +| `detach()` | Detach the ArrayBuffer. Requires Node-API v7. | +| `isDetached()` | Check whether it is detached. Requires Node-API v7. | + +## `TypedArray` + +```zig +napi.TypedArray(T) +``` + +Typed arrays can be created from new memory, copied memory, external memory, or a view into an existing `ArrayBuffer`. + +| Constructor | Behavior | +| --- | --- | +| `TypedArray(T).New(env, len)` | Allocate an ArrayBuffer and create the view. | +| `TypedArray(T).copy(env, data)` | Copy numeric data into a new view. | +| `TypedArray(T).from(env, data)` | Wrap mutable numeric data through an external ArrayBuffer. | +| `TypedArray(T).fromArrayBuffer(env, arraybuffer, len, byte_offset)` | Create a view over an existing ArrayBuffer. | +| `TypedArray(T).from_raw(env, raw)` | Wrap an existing TypedArray. | + +| Method | Use | +| --- | --- | +| `asSlice()` / `asConstSlice()` | Access typed elements. | +| `length()` | Element length. | +| `byteLength()` | Byte length. | + +Aliases are exported for common element types: + +| Alias | Element | +| --- | --- | +| `Int8Array` | `i8` | +| `Uint8Array` | `u8` | +| `Uint8ClampedArray` | `u8` with clamped raw type | +| `Int16Array` / `Uint16Array` | `i16` / `u16` | +| `Int32Array` / `Uint32Array` | `i32` / `u32` | +| `Float32Array` / `Float64Array` | `f32` / `f64` | +| `BigInt64Array` / `BigUint64Array` | `i64` / `u64` | + +BigInt typed arrays require Node-API v6 or newer. + +## `DataView` + +```zig +napi.DataView +``` + +`DataView` supports byte-level access and explicit endianness. + +| Constructor | Behavior | +| --- | --- | +| `DataView.New(env, byte_length)` | Allocate a new ArrayBuffer and view. | +| `DataView.copy(env, data)` | Copy bytes into a new view. | +| `DataView.from(env, data)` | Wrap mutable bytes through an external ArrayBuffer. | +| `DataView.fromArrayBuffer(env, arraybuffer, byte_offset, byte_length)` | Create a view over an existing ArrayBuffer. | +| `DataView.from_raw(env, raw)` | Wrap an existing DataView. | + +| Method | Use | +| --- | --- | +| `asSlice()` / `asConstSlice()` | Access bytes. | +| `byteLength()` | View byte length. | +| `readInt(T, offset, little_endian)` / `writeInt(T, offset, value, little_endian)` | Generic integer access. | +| `readFloat(T, offset, little_endian)` / `writeFloat(T, offset, value, little_endian)` | Generic floating-point access. | +| `getInt8` / `getUint8` | 8-bit reads. | +| `getInt16` / `getUint16` / `getInt32` / `getUint32` | Endian-aware integer reads. | +| `getBigInt64` / `getBigUint64` | 64-bit integer reads. | +| `getFloat32` / `getFloat64` | Endian-aware float reads. | +| `setInt8` / `setUint8` | 8-bit writes. | +| `setInt16` / `setUint16` / `setInt32` / `setUint32` | Endian-aware integer writes. | +| `setBigInt64` / `setBigUint64` | 64-bit integer writes. | +| `setFloat32` / `setFloat64` | Endian-aware float writes. | diff --git a/website/src/content/api/build-node.md b/website/src/content/api/build-node.md new file mode 100644 index 0000000..3d0a2d6 --- /dev/null +++ b/website/src/content/api/build-node.md @@ -0,0 +1,91 @@ +--- +title: Node Addon Build +--- + +# Node Addon Build + +Use `nodeAddonBuild` when the output should be loaded by Node.js through `require()` or `import()`. + +## `nodeAddonBuild` + +```zig +napi_build.nodeAddonBuild( + build: *std.Build, + option: NodeAddonBuildOptionsWithModule, +) !*std.Build.Step.Compile +``` + +Example: + +```zig +const addon = try napi_build.nodeAddonBuild(b, .{ + .name = "hello", + .napi_module = napi, + .node_api = .{ + .version = .v8, + .experimental = false, + }, + .root_module_options = .{ + .root_source_file = b.path("./src/hello.zig"), + .target = target, + .optimize = optimize, + }, +}); +_ = addon; +``` + +## Output Name + +Node addon builds use platform-specific filenames: + +```text +hello.darwin-arm64.node +hello.linux-x64-gnu.node +hello.win32-x64-msvc.node +``` + +The helper exposes these utilities: + +| Helper | Description | +| --- | --- | +| `nodePlatformArchAbi(build, target)` | Returns the platform-arch-abi suffix. | +| `nodeAddonFilename(build, name, target)` | Returns the final `.node` filename. | + +## Target Selection + +If `root_module_options.target` is omitted, the Node addon target defaults to the host target. Provide a target explicitly for cross builds. + +## Windows Linking + +On Windows MSVC, Node-API symbols are resolved from the current Node.js process at runtime by default. If a build needs an import library, pass `.node_import_lib`, set `NODE_LIB_FILE`, or set `NODE_LIB_DIR`. + +Windows GNU builds search `LIBNODE_PATH`, then `LIBPATH`, then `PATH` for `libnode.dll`. + +## Options + +`NodeAddonBuildOptionsWithModule` accepts: + +| Field | Use | +| --- | --- | +| `name` | Base addon name. | +| `napi_module` | `zig-napi` module imported into the addon root. | +| `root_module_options` | Source file, target, optimize mode, imports, and Zig module options. | +| `node_api` | Node-API version and experimental mode. | +| `node_import_lib` | Optional Windows import library override. | +| `version` | Optional semantic version. | +| `max_rss` | Build step memory limit. | +| `use_llvm` / `use_lld` | Override Zig backend/linker selection. | +| `zig_lib_dir` | Optional Zig lib directory. | +| `win32_manifest` | Optional Windows manifest. | + +The helper injects `build_options` into the addon root and configures `@import("napi")` with the selected Node-API version. + +## Install Layout + +The output is installed under `zig-out/node` with the formatted filename from `nodeAddonFilename`. + +On Windows, the import library is installed into the same `node` directory when Zig produces one. + +## Link Behavior + +The compile step sets `linker_allow_shlib_undefined = true` so Node-API symbols can be resolved by the host runtime. Windows GNU builds still link `node` explicitly after locating `libnode.dll`. diff --git a/website/src/content/api/build-openharmony.md b/website/src/content/api/build-openharmony.md new file mode 100644 index 0000000..205a497 --- /dev/null +++ b/website/src/content/api/build-openharmony.md @@ -0,0 +1,106 @@ +--- +title: OpenHarmony Build +--- + +# OpenHarmony Build + +Use `nativeAddonBuild` from `@import("zig-napi").napi_build` to build OpenHarmony shared libraries. + +## `nativeAddonBuild` + +```zig +napi_build.nativeAddonBuild( + build: *std.Build, + option: NativeAddonBuildOptionsWithModule, +) !NativeAddonBuildResult +``` + +Minimal build file: + +```zig +const std = @import("std"); +const napi_build = @import("zig-napi").napi_build; + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const zig_napi = b.dependency("zig-napi", .{}); + const napi = zig_napi.module("napi"); + + _ = try napi_build.nativeAddonBuild(b, .{ + .name = "hello", + .napi_module = napi, + .root_module_options = .{ + .root_source_file = b.path("./src/hello.zig"), + .target = target, + .optimize = optimize, + }, + }); +} +``` + +## Targets + +The helper knows the supported OpenHarmony target triples: + +| Output slot | Target | +| --- | --- | +| `arm64` | `aarch64-linux-ohos` | +| `arm` | `arm-linux-ohoseabi` | +| `x64` | `x86_64-linux-ohos` | + +`NativeAddonBuildResult` stores the compile step for each enabled target. + +If `root_module_options.target` is an OpenHarmony target, the helper builds only the matching output slot. Otherwise it builds all supported OpenHarmony targets. + +## Options + +`NativeAddonBuildOptionsWithModule` accepts: + +| Field | Use | +| --- | --- | +| `name` | Shared library name. | +| `napi_module` | Optional `zig-napi` module import. Required when `.node_api` is customized. | +| `node_api` | Node-API version and experimental mode passed into the wrapper module. | +| `root_module_options` | Source file, target, optimize mode, imports, libc/cpp flags, and other Zig module options. | +| `version` | Optional semantic version for the shared library. | +| `max_rss` | Build step memory limit. | +| `use_llvm` / `use_lld` | Override Zig backend/linker selection. | +| `zig_lib_dir` | Optional Zig lib directory. | +| `win32_manifest` | Passed through for API parity with library options. | + +The helper clones the provided root module options for each target and injects configured `build_options` plus the configured `napi` import. + +## SDK Resolution + +The helper resolves the OHOS native SDK from: + +- `OHOS_NDK_HOME`, using `$OHOS_NDK_HOME/native` +- `ohos_sdk_native` + +It then links `ace_napi.z`, enables libc, and adds the platform include and library directories. + +## Node-API Options + +OpenHarmony builds use Node-API v8 by default. If the addon exports wrappers gated by a newer Node-API version, pass `.node_api` and also pass `.napi_module = napi`. + +```zig +.node_api = .{ + .version = .v10, + .experimental = false, +}, +``` + +Passing `napi_module` lets the configured version flow into both the addon root module and the `napi` wrapper module. + +## ArkVM Host Test Mode + +Passing `-Darkvm-test=true` builds a host Linux x64 artifact under `zig-out/arkvm-host`. This is intended for ArkVM host tests where device-only OpenHarmony libraries should not be linked. + +## Helper Functions + +| Helper | Use | +| --- | --- | +| `resolveNdkPath(build)` | Returns `$OHOS_NDK_HOME/native`, `ohos_sdk_native`, or an empty string. | +| `cloneLibraryOptions(build, option, target)` | Reuses addon library options for a resolved target. | diff --git a/website/src/content/api/callback-functions.md b/website/src/content/api/callback-functions.md new file mode 100644 index 0000000..b198cb0 --- /dev/null +++ b/website/src/content/api/callback-functions.md @@ -0,0 +1,112 @@ +--- +title: Functions +--- + +# Functions + +Function wrappers represent JavaScript callables with Zig types. + +## `Function` + +```zig +napi.Function(comptime Args: type, comptime Return: type) +``` + +Use `Function` when Zig needs to call a JavaScript function or expose a Zig function manually. + +```zig +const Callback = napi.Function(.{ i32, i32 }, i32); + +pub fn call(callback: Callback) !i32 { + return callback.Call(.{ 1, 2 }); +} +``` + +| Method | Use | +| --- | --- | +| `from_raw(env, raw)` | Wrap an existing JavaScript function. | +| `New(env, name, value)` | Create a JavaScript function from a Zig function. | +| `Call(args)` | Call the JavaScript function and convert the result. | +| `CreateRef()` | Create `Reference(Function(Args, Return))`. | + +`Args` may be a tuple type for multiple arguments, a non-tuple type for one argument, or an empty struct for no arguments. + +## Function Exports + +When a `pub fn` is exported through `NODE_API_MODULE`, the wrapper: + +1. Injects `napi.Env` when it is the first parameter. +2. Converts JavaScript arguments into Zig parameter types. +3. Calls the Zig function. +4. Converts the return value into JavaScript. +5. Maps Zig errors and `napi.Result(T).Err` into JavaScript exceptions. + +If the returned payload is an async descriptor, the function returns a Promise and schedules the async operation. + +## `FunctionRef` + +```zig +napi.FunctionRef(comptime Args: type, comptime Return: type) +``` + +`FunctionRef` is a convenience alias for `Reference(Function(Args, Return))`. + +Use it when the native side needs to hold a JavaScript function beyond the current call. + +## `CallbackInfo` + +```zig +napi.CallbackInfo +``` + +`CallbackInfo` is the low-level callback context. It reads callback arguments with an inline buffer for up to eight arguments and heap storage for larger calls. + +| Method | Use | +| --- | --- | +| `from_raw(env, info)` | Read callback information. | +| `deinit()` | Free heap-backed argument storage. | +| `Env()` | Return `napi.Env`. | +| `Get(index)` | Return argument as `NapiValue`. | +| `Len()` | Argument count. | +| `ArgsRaw()` | Raw `napi_value` slice. | +| `ArgRaw(index)` | One raw argument. | +| `This()` | Raw `this` value. | + +Most exported functions should use typed Zig parameters instead. `CallbackInfo` is useful for variadic or dynamic APIs. + +## `ThreadSafeFunction` + +```zig +napi.ThreadSafeFunction( + comptime Args: type, + comptime Return: type, + comptime ThreadSafeFunctionCalleeHandled: anytype, + comptime MaxQueueSize: anytype, +) +``` + +Use `ThreadSafeFunction` to call a JavaScript function from native threads. It requires Node-API v4 or newer. + +`ThreadSafeFunctionCalleeHandled = true` makes the JavaScript callback receive an error-first argument: `(err, ...args) => void`. + +| Method | Use | +| --- | --- | +| `from_raw(env, raw)` | Create a TSFN from a JavaScript function. | +| `acquire()` | Increment active thread usage. | +| `release(mode)` | Release usage or abort release. | +| `abort()` | Stop future calls. | +| `ref()` / `unref()` | Control event-loop lifetime. | +| `Ok(args, mode)` | Send a successful call. | +| `Err(error, mode)` | Send an error call. | +| `deinit()` | Destroy the wrapper allocation. | + +## TSFN Modes + +```zig +napi.ThreadSafeFunctionMode.NonBlocking +napi.ThreadSafeFunctionMode.Blocking +napi.ThreadSafeFunctionReleaseMode.Release +napi.ThreadSafeFunctionReleaseMode.Abort +``` + +`NonBlocking` may fail with `QueueFull` when the queue is full. `Blocking` waits for room. Release mode controls whether the TSFN drains normally or aborts queued work. diff --git a/website/src/content/api/classes-ownership.md b/website/src/content/api/classes-ownership.md new file mode 100644 index 0000000..eb452e5 --- /dev/null +++ b/website/src/content/api/classes-ownership.md @@ -0,0 +1,143 @@ +--- +title: Ownership +--- + +# Ownership + +These wrappers are for JavaScript values that carry native lifetime, or for native code that must keep JavaScript values alive. + +## `Class` + +```zig +napi.Class(comptime T: type) +``` + +Exports a Zig struct type as a JavaScript class with constructor initialization and wrapped native instances. + +`Class(T)` supports: + +| Zig declaration | JavaScript class member | +| --- | --- | +| struct fields | instance properties with getter and setter | +| `pub fn init(...) T` or `!T` | constructor body | +| no `init` | constructor parameters are the struct fields | +| `pub fn method(self: *T, ...)` | instance method | +| `pub fn method(self: T, ...)` | instance method with value receiver | +| `pub fn staticMethod(...)` | static method | +| static factory returning `T` or `*T` | static factory returning a class instance | +| `pub const value = ...` | static readonly value | +| `pub fn deinit(self: *T)` | called when the wrapped instance is finalized | + +```zig +const Counter = struct { + value: i32, + + pub fn init(value: i32) Counter { + return .{ .value = value }; + } + + pub fn inc(self: *Counter) i32 { + self.value += 1; + return self.value; + } +}; + +pub const CounterClass = napi.Class(Counter); +``` + +## `ClassWithoutInit` + +```zig +napi.ClassWithoutInit(comptime T: type) +``` + +Exports a class wrapper when construction should be controlled by native factory functions instead of the JavaScript constructor path. + +Declaration generation emits a private constructor for this form. Static factory methods that return `T` or `*T` are the public construction path. + +## `Reference` And `Ref` + +```zig +napi.Reference(comptime T: type) +napi.Ref(comptime T: type) +``` + +References keep JavaScript values alive across calls. `Ref` is an alias for `Reference`. + +| Method | Use | +| --- | --- | +| `New(env, value)` | Create a reference. | +| `from_napi_value(env, raw)` | Convert a JavaScript value into a reference. | +| `to_napi_value(env)` | Get the referenced value as raw `napi_value`. | +| `get_value(env)` / `GetValue(env)` | Get the referenced wrapper value. | +| `Ref(env)` | Increase the reference count and return the count. | +| `Unref(env)` | Unref and delete the reference. | +| `Delete(env)` | Alias for `Unref`. | + +## `FunctionRef` And `ObjectRef` + +```zig +napi.FunctionRef(Args, Return) +napi.ObjectRef +``` + +`FunctionRef` is `Reference(Function(Args, Return))`. `ObjectRef` is `Reference(Object)`. + +Use these when native code needs to keep a callback or object after the current N-API callback returns. + +## `External` + +```zig +napi.External(comptime T: type) +``` + +Wraps a native payload in a JavaScript external value. The wrapper tags the external with the Zig type name, so `External(A)` does not match `External(B)`. + +| Method | Use | +| --- | --- | +| `New(payload)` / `new(payload)` | Create a detached external wrapper. | +| `NewWithSizeHint(payload, size_hint)` | Create with memory pressure accounting. | +| `newWithSizeHint(payload, size_hint)` | Lowercase alias. | +| `from_raw(env, raw)` / `from_napi_value(env, raw)` | Read and validate an external value. | +| `matches_napi_value(env, raw)` | Check whether a raw value is a zig-napi external of type `T`. | +| `to_napi_value(env)` | Materialize the JavaScript external. | +| `value()` / `asConstPtr()` | Immutable payload pointer. | +| `valueMut()` / `asPtr()` | Mutable payload pointer. | +| `sizeHint()` | Declared size hint. | +| `adjustedSize()` | Last adjusted external memory value. | +| `deinit()` / `Deinit()` | Destroy a detached external before it is materialized. | + +If `T` has a `deinit` method, the conversion layer calls it when the external payload is destroyed. + +## `NativeWrap` + +```zig +napi.NativeWrap.wrap +napi.NativeWrap.unwrap +napi.NativeWrap.unwrapConst +napi.NativeWrap.dropWrapped +napi.NativeWrap.matches +``` + +`NativeWrap` attaches native payloads to JavaScript objects and retrieves them later. + +Use the higher-level conveniences when possible: + +```zig +try object.wrap(.{ .state = 1 }); +const state = try object.unwrap(State); +``` + +The wrapper stores a type tag, optional `size_hint`, and a finalizer. `dropWrapped` removes the N-API wrap, adjusts external memory when needed, and destroys the stored payload. + +## Allocator Hooks + +```zig +napi.globalAllocator() +napi.setOperationAllocator(allocator) +napi.resetOperationAllocator() +``` + +Addon roots may declare `pub const napi_allocator: std.mem.Allocator = ...;` for a root allocator. This declaration is reserved and is not exported as a JavaScript property. + +`setOperationAllocator` overrides only short-lived conversion and operation allocations. It is mainly intended for scoped tests. Applications should prefer a root `napi_allocator`. diff --git a/website/src/content/api/conversion-model.md b/website/src/content/api/conversion-model.md new file mode 100644 index 0000000..d6740ae --- /dev/null +++ b/website/src/content/api/conversion-model.md @@ -0,0 +1,93 @@ +--- +title: Conversion Model +--- + +# Conversion Model + +Exported functions normally do not call wrapper constructors manually. The module registration layer converts JavaScript arguments into Zig types, calls the Zig function, then converts the return value back into JavaScript. + +## Function Parameters + +The first parameter may be `napi.Env`. It is injected by the wrapper and is not part of the JavaScript signature. + +```zig +pub fn make(env: napi.Env, name: []const u8) napi.Object { + _ = env; + _ = name; +} +``` + +All other parameters are read from JavaScript arguments in order. Missing arguments are passed as `undefined` before conversion. + +## Supported Input Shapes + +| Zig type | JavaScript input | +| --- | --- | +| `bool` | boolean | +| integer and float types | number | +| `napi.BigInt` | bigint | +| `[]u8`, `[]const u8`, `[N]u8` | UTF-8 string input | +| `[]u16`, `[]const u16`, `[N]u16` | UTF-16 string input | +| `?T` | `T`, `null`, or `undefined` | +| struct | object with matching fields | +| tuple struct | array with positional entries | +| array, slice, `std.ArrayList(T)` | JavaScript Array, or numeric TypedArray when `T` is supported | +| enum | numeric enum value | +| enum with `pub const napi_string_enum = true` | string enum name | +| union(enum) | first matching union field | +| `napi.NapiValue` | raw JavaScript value | +| `napi.Function`, `*napi.Function`, `napi.FunctionRef` | JavaScript function | +| `napi.ThreadSafeFunction` pointer | JavaScript function promoted to a TSFN | +| `napi.Buffer` | Node Buffer | +| `napi.ArrayBuffer` | ArrayBuffer | +| `napi.TypedArray(T)` and aliases | matching TypedArray | +| `napi.DataView` | DataView | +| `napi.External(T)` | zig-napi external value tagged with `T` | +| `napi.AbortSignal` | AbortSignal-like object | + +Use `napi.Buffer` or `napi.ArrayBuffer` when the JavaScript input should be +treated as binary data instead of a string. + +## Conversion Hooks + +Most wrapper types expose `from_raw(env, raw)` for manually wrapping an existing +`napi_value`. Types that can be accepted as exported function parameters also +expose `from_napi_value`; that hook is what the generated wrapper calls during +automatic argument conversion. + +Regular addon code usually only needs `from_raw` for low-level N-API interop. +Prefer typed function parameters for normal exports so cleanup and error mapping +stay in the generated conversion layer. + +## Supported Return Shapes + +The return conversion supports ordinary Zig values and wrapper values. + +| Zig return | JavaScript output | +| --- | --- | +| `void` | `undefined` | +| `bool`, numbers, strings | primitive JavaScript values | +| `i128` / `u128` | bigint | +| `?T` | `T` or `undefined` | +| struct | object | +| tuple, array, slice, `std.ArrayList(T)` | array | +| enum | numeric or string enum value | +| union(enum) | payload of the active field | +| `napi.Result(T)` | payload or thrown JavaScript error | +| Zig error union `!T` | payload or thrown JavaScript error | +| `napi.Async(T, runtime)` | `Promise` | +| `napi.AsyncWithEvents(T, Event, runtime)` | `Promise` plus optional event callback | +| `napi.Promise` | Promise | +| `napi.Function` | JavaScript function | +| `napi.Class(T)` / `napi.ClassWithoutInit(T)` | JavaScript class constructor | +| `napi.External(T)` | branded external object | + +## Allocation And Cleanup + +Conversions that allocate Zig memory use `napi.globalAllocator()`. String, array, slice, object, function, external, and async conversions are cleaned up by the conversion layer when the wrapper owns the temporary value. + +For addon-wide allocator control, export `pub const napi_allocator` from the addon root. For narrow tests or scoped operations, use `setOperationAllocator` and `resetOperationAllocator`. + +## TypeScript Output + +`generateTypeDefinition` follows the same conversion model. It emits interfaces for object-like structs, tuples for tuple structs, `const enum` for Zig enums, union types for `union(enum)`, `ExternalObject` for `napi.External(T)`, and an `AbortSignal` interface when an API references `napi.AbortSignal`. diff --git a/website/src/content/api/declaration-generation.md b/website/src/content/api/declaration-generation.md new file mode 100644 index 0000000..90ed3d2 --- /dev/null +++ b/website/src/content/api/declaration-generation.md @@ -0,0 +1,91 @@ +--- +title: Declaration Generation +--- + +# Declaration Generation + +`generateTypeDefinition` generates TypeScript declarations from the same root Zig file used by the runtime addon. + +## `generateTypeDefinition` + +```zig +napi_build.generateTypeDefinition( + build: *std.Build, + option: TypeDefinitionBuildOptions, +) !*std.Build.Step.Run +``` + +Example: + +```zig +const dts = try napi_build.generateTypeDefinition(b, .{ + .root_source_file = b.path("./src/hello.zig"), + .output = b.path("index.d.ts"), + .napi_module = napi, + .node_api = .{ .version = .v8 }, +}); +b.getInstallStep().dependOn(&dts.step); +``` + +## Keep Options In Sync + +Use the same `.node_api` options for runtime builds and declaration generation. This matters when the exported API uses version-gated wrappers such as `ThreadSafeFunction`, `Async`, `BigInt`, or BigInt typed arrays. + +`TypeDefinitionBuildOptions` accepts: + +| Field | Use | +| --- | --- | +| `root_source_file` | Addon root source file to compile for reflection. | +| `output` | Destination `.d.ts` path. | +| `napi_module` | `zig-napi` module used to create the configured reflection imports. | +| `node_api` | Node-API version and experimental mode used by version-gated wrappers. | +| `header` | Optional text inserted after the generated banner comments. | +| `options` | Optional extra `std.Build.Step.Options` module for addon-specific build options. | + +## Supported Shapes + +The generator maps the public export surface into TypeScript: + +| Zig shape | TypeScript shape | +| --- | --- | +| `pub fn` | `export function` | +| primitives | `number`, `string`, `boolean`, `bigint`, `null`, `undefined` | +| object-like structs | `export interface` | +| tuples | tuple types | +| arrays, slices, and `std.ArrayList(T)` | `Array` | +| optionals | `T | undefined | null` | +| enums | `export declare const enum` | +| string enums with `napi_string_enum = true` | string-valued `const enum` | +| `union(enum)` | union of payload types | +| `napi.Buffer` | `Buffer` | +| `napi.ArrayBuffer` | `ArrayBuffer` | +| `napi.DataView` | `DataView` | +| `napi.TypedArray(T)` aliases | matching TypedArray names | +| `napi.Promise` | `Promise` | +| async descriptors | `Promise` | +| `napi.AsyncWithEvents` return | `Promise` plus trailing `onEvent?: (event: Event) => void` | +| `napi.Function` | function signatures | +| `napi.ThreadSafeFunction` | callback signature returning `void` | +| `napi.Reference(T)` | declaration of `T` | +| `napi.External(T)` | `ExternalObject` branded interface | +| `napi.AbortSignal` | local `AbortSignal` interface | +| classes | constructor, fields, instance methods, static methods, static values | +| returned functions | function signature with parameter names when source can be resolved | + +When the inferred public shape is not the desired public contract, use `napi.dts` or `napi.Dts`. + +## Class Declarations + +`napi.Class(T)` emits a public constructor. Constructor parameters come from `T.init` when present; otherwise each field becomes a constructor parameter. + +`napi.ClassWithoutInit(T)` emits a private constructor. Static factory methods that return `T` or `*T` become constructors on the JavaScript side. + +Struct fields become instance properties. Function declarations become instance methods when their first parameter is `*T` or `T`; otherwise they become static methods. Non-function declarations become `static readonly` values. + +## Source Names + +The generator scans the source file to recover parameter names for exported functions, class constructors, class methods, and returned callbacks. If a name cannot be recovered, it falls back to `arg`, `arg0`, `arg1`, and so on. + +## Header Injection + +`TypeDefinitionBuildOptions.header` can inject text after the generated banner. Use it for imports, global declarations, or package-specific comments that should live in the generated `.d.ts`. diff --git a/website/src/content/api/dts-overrides.md b/website/src/content/api/dts-overrides.md new file mode 100644 index 0000000..7056b05 --- /dev/null +++ b/website/src/content/api/dts-overrides.md @@ -0,0 +1,70 @@ +--- +title: d.ts Overrides +--- + +# d.ts Overrides + +`dts` and `Dts` override only the generated TypeScript declaration. Runtime behavior stays unchanged. + +## `dts` + +```zig +napi.dts(value: anytype, comptime TypeScriptType: []const u8) +``` + +Use `dts` when you already have a value and want the generated declaration to use a custom TypeScript type string. + +```zig +const napi = @import("napi"); + +pub fn add(left: i32, right: i32) i32 { + return left + right; +} + +pub const custom_add = + napi.dts(add, "(left: Number, right: Number) => Number"); +``` + +During runtime compilation, `custom_add` is the original `add` value. During declaration generation, the generator emits the provided type string. + +## `Dts` + +```zig +napi.Dts(comptime Value: type, comptime TypeScriptType: []const u8) type +``` + +Use `Dts` in signatures when the return type needs a TypeScript-facing override. + +```zig +pub fn label() napi.Dts([]const u8, "String") { + return napi.dts("zig-napi", "String"); +} +``` + +In normal runtime builds, `Dts(Value, TypeScriptType)` is exactly `Value`. In declaration-generation builds, it becomes a wrapper carrying: + +| Field | Use | +| --- | --- | +| `is_napi_dts` | Marker consumed by the conversion and tsgen layers. | +| `wrapped_type` | Original Zig type. | +| `ts_type` | TypeScript text to emit. | +| `value` | Runtime value, when the wrapped value is not comptime-only. | + +The wrapper exposes `unwrap()` during declaration-generation builds. Most addon code should not need it because conversion unwraps `Dts` automatically. + +## Comptime Values + +`dts` also supports comptime-only values such as function values, types, comptime integers, comptime floats, and enum literals. In declaration-generation mode those wrappers carry only type metadata, because such values cannot be stored as runtime fields. + +## Type String Rules + +The type string is emitted verbatim. + +| Input | Generated declaration intent | +| --- | --- | +| `"String"` | Use the boxed or project-specific `String` name exactly as written. | +| `"string"` | Use the TypeScript primitive. | +| `"(left: Number, right: Number) => Number"` | Replace a function declaration with an explicit callable type. | +| `"ReadonlyArray"` | Use a richer TypeScript utility type. | + +Because the string is not parsed by Zig, keep it valid TypeScript. diff --git a/website/src/content/api/errors-results.md b/website/src/content/api/errors-results.md new file mode 100644 index 0000000..f25d2ed --- /dev/null +++ b/website/src/content/api/errors-results.md @@ -0,0 +1,143 @@ +--- +title: Errors +--- + +# Errors + +Error wrappers convert Zig failures into JavaScript exceptions or explicit result values. + +## `Error` + +```zig +napi.Error +``` + +`Error` is a union of JavaScript error kinds: + +```zig +pub const Error = union(enum) { + JsError: napi.JsError, + JsTypeError: napi.JsTypeError, + JsRangeError: napi.JsRangeError, +}; +``` + +Create errors with: + +| Constructor | Use | +| --- | --- | +| `withReason(reason)` | Generic JavaScript `Error`. | +| `withStatus(status)` | Error from `napi.Status` or custom status string. | +| `withCodeAndMessage(code, message)` | Error with explicit code and message. | +| `fromAnyError(err)` | Map a Zig error into `napi.Error`. | +| `withTypeError(reason)` | JavaScript `TypeError`. | +| `withRangeError(reason)` | JavaScript `RangeError`. | +| `fromReason(reason)` | Store a pending error and return `error.GenericFailure`. | +| `fromStatus(status)` | Store a pending status error and return `error.GenericFailure`. | +| `typeError(message)` | Store a pending `TypeError`. | +| `rangeError(message)` | Store a pending `RangeError`. | + +Use `throwInto(env)` when manual code needs to throw into a JavaScript environment. + +## `JsError`, `JsTypeError`, `JsRangeError` + +```zig +napi.JsError +napi.JsTypeError +napi.JsRangeError +``` + +These typed wrappers map directly to JavaScript `Error`, `TypeError`, and `RangeError`. + +| Method | Use | +| --- | --- | +| `fromMessage(message)` | Create with a message and generic status. | +| `fromStatus(status)` | Create from status. | +| `to_napi_error(env)` | Create a JavaScript error value. | +| `throwInto(env)` | Throw into the environment. | + +## Error Mapping + +The conversion layer uses pending error state internally for low-level conversion failures. If a wrapper stores a specific `napi.Error`, the exported function wrapper throws that error. Otherwise it maps `Cancelled` to `AbortError`, `Closing` to a closing status, and other Zig errors to an error whose code and message are based on `@errorName(err)`. + +## `Result(T)` + +```zig +napi.Result(comptime T: type) +``` + +Return a value-or-error union from exported functions: + +```zig +pub fn maybeRead(ok: bool) napi.Result([]const u8) { + if (!ok) return napi.Result([]const u8).Err(napi.Error.withReason("not ready")); + return napi.Result([]const u8).Ok("ready"); +} +``` + +Use `Result(T)` when the public API should model a handled result without throwing through Zig error unions. + +| Method | Use | +| --- | --- | +| `Result(T).Ok(value)` | Return a payload. | +| `Result(T).Err(err)` | Return a JavaScript error. | + +`Result(void).Ok({})` converts to JavaScript `undefined`. + +## Zig Error Unions + +Exported functions may return `!T`. On success, `T` is converted normally. On failure, the wrapper maps the Zig error to `napi.Error` and throws it into JavaScript. + +When you need a specific JavaScript error type, return `napi.Error.typeError(...)`, `napi.Error.rangeError(...)`, or `napi.Error.fromReason(...)` from the Zig error path. + +## `Status` + +```zig +napi.Status +``` + +`Status` wraps `napi_status`. + +| Method | Use | +| --- | --- | +| `from_raw(raw)` | Convert raw N-API status. | +| `New(status)` | Convenience constructor. | +| `isOk()` | Check for `Ok`. | +| `code()` | Numeric status code. | +| `toString()` / `ToString()` | Stable status text. | + +## Status Values + +`Status` includes: + +```zig +.Ok +.InvalidArg +.ObjectExpected +.StringExpected +.NameExpected +.FunctionExpected +.NumberExpected +.BooleanExpected +.ArrayExpected +.GenericFailure +.PendingException +.Cancelled +.EscapeCalledTwice +.HandleScopeMismatch +.CallbackScopeMismatch +.QueueFull +.Closing +.BigintExpected +.DateExpected +.ArrayBufferExpected +.DetachableArraybufferExpected +.WouldDeadlock +.NoExternalBuffersAllowed +.CannotRunJs +.RuntimeSpecific24 +.Unknown +``` + +On OpenHarmony, some runtime-specific status names map to Ark runtime text in +`ToString()`. diff --git a/website/src/content/api/index.ts b/website/src/content/api/index.ts new file mode 100644 index 0000000..c88950c --- /dev/null +++ b/website/src/content/api/index.ts @@ -0,0 +1,182 @@ +import type { ComponentType } from 'react' + +import AsyncRuntime, { headings as asyncRuntimeHeadings } from './async-runtime.md' +import BinaryData, { headings as binaryDataHeadings } from './binary-data.md' +import BuildNode, { headings as buildNodeHeadings } from './build-node.md' +import BuildOpenHarmony, { headings as buildOpenHarmonyHeadings } from './build-openharmony.md' +import CallbackFunctions, { headings as callbackFunctionsHeadings } from './callback-functions.md' +import ClassesOwnership, { headings as classesOwnershipHeadings } from './classes-ownership.md' +import ConversionModel, { headings as conversionModelHeadings } from './conversion-model.md' +import DeclarationGeneration, { headings as declarationGenerationHeadings } from './declaration-generation.md' +import DtsOverrides, { headings as dtsOverridesHeadings } from './dts-overrides.md' +import ErrorsResults, { headings as errorsResultsHeadings } from './errors-results.md' +import ModuleRegistration, { headings as moduleRegistrationHeadings } from './module-registration.md' +import Overview, { headings as overviewHeadings } from './overview.md' +import ValuesObjects, { headings as valuesObjectsHeadings } from './values-objects.md' +import ValuesPrimitives, { headings as valuesPrimitivesHeadings } from './values-primitives.md' +import Versioning, { headings as versioningHeadings } from './versioning.md' + +export type ApiHeading = { + depth: number + slug: string + text: string +} + +export type ApiMarkdownSection = { + id: string + title: string + summary: string + headings: ReadonlyArray + Component: ComponentType +} + +export type ApiMarkdownGroup = { + title: string + sections: ApiMarkdownSection[] +} + +const overviewSection: ApiMarkdownSection = { + id: 'overview', + title: 'Overview', + summary: 'What the public API exports and how the pieces fit together.', + headings: overviewHeadings, + Component: Overview, +} + +export const apiMarkdownGroups: ApiMarkdownGroup[] = [ + { + title: 'Entry', + sections: [ + overviewSection, + { + id: 'conversion-model', + title: 'Conversion Model', + summary: 'Automatic JavaScript-to-Zig conversion and TypeScript declaration mapping.', + headings: conversionModelHeadings, + Component: ConversionModel, + }, + { + id: 'module-registration', + title: 'Module Registration', + summary: 'How exported Zig declarations become JavaScript module exports.', + headings: moduleRegistrationHeadings, + Component: ModuleRegistration, + }, + ], + }, + { + title: 'Build', + sections: [ + { + id: 'build-openharmony', + title: 'OpenHarmony Build', + summary: 'Build shared libraries for ArkTS and OpenHarmony targets.', + headings: buildOpenHarmonyHeadings, + Component: BuildOpenHarmony, + }, + { + id: 'build-node', + title: 'Node Addon Build', + summary: 'Build platform-specific Node.js .node addons.', + headings: buildNodeHeadings, + Component: BuildNode, + }, + { + id: 'declaration-generation', + title: 'Declaration Generation', + summary: 'Generate index.d.ts from the same addon root.', + headings: declarationGenerationHeadings, + Component: DeclarationGeneration, + }, + ], + }, + { + title: 'TypeScript', + sections: [ + { + id: 'dts-overrides', + title: 'd.ts Overrides', + summary: 'Override the generated TypeScript shape without changing runtime values.', + headings: dtsOverridesHeadings, + Component: DtsOverrides, + }, + { + id: 'versioning', + title: 'Versioning', + summary: 'Node-API versions, experimental mode, and gated wrappers.', + headings: versioningHeadings, + Component: Versioning, + }, + ], + }, + { + title: 'Values', + sections: [ + { + id: 'values-primitives', + title: 'Primitive Values', + summary: 'Numbers, strings, booleans, bigint, null, undefined, and raw N-API values.', + headings: valuesPrimitivesHeadings, + Component: ValuesPrimitives, + }, + { + id: 'values-objects', + title: 'Objects And Arrays', + summary: 'Object, Array, Promise, Env, and property helpers.', + headings: valuesObjectsHeadings, + Component: ValuesObjects, + }, + { + id: 'binary-data', + title: 'Binary Data', + summary: 'Buffer, ArrayBuffer, TypedArray, and DataView wrappers.', + headings: binaryDataHeadings, + Component: BinaryData, + }, + ], + }, + { + title: 'Control Flow', + sections: [ + { + id: 'callback-functions', + title: 'Functions', + summary: 'Function wrappers, callback info, references, and thread-safe calls.', + headings: callbackFunctionsHeadings, + Component: CallbackFunctions, + }, + { + id: 'async-runtime', + title: 'Async Runtime', + summary: 'Async descriptors, event emission, cancellation, AbortSignal, and workers.', + headings: asyncRuntimeHeadings, + Component: AsyncRuntime, + }, + ], + }, + { + title: 'Native State', + sections: [ + { + id: 'classes-ownership', + title: 'Ownership', + summary: 'Classes, references, externals, native wraps, and allocator hooks.', + headings: classesOwnershipHeadings, + Component: ClassesOwnership, + }, + { + id: 'errors-results', + title: 'Errors', + summary: 'JavaScript errors, typed errors, status values, and Result(T).', + headings: errorsResultsHeadings, + Component: ErrorsResults, + }, + ], + }, +] + +export const apiMarkdownSections = apiMarkdownGroups.flatMap((group) => group.sections) + +export function getApiSection(id: string) { + return apiMarkdownSections.find((section) => section.id === id) ?? overviewSection +} diff --git a/website/src/content/api/module-registration.md b/website/src/content/api/module-registration.md new file mode 100644 index 0000000..8b08799 --- /dev/null +++ b/website/src/content/api/module-registration.md @@ -0,0 +1,88 @@ +--- +title: Module Registration +--- + +# Module Registration + +Module registration is done at compile time. The root argument must be a struct type, usually `@This()` from the addon root file. + +## `NODE_API_MODULE` + +```zig +napi.NODE_API_MODULE(comptime name: []const u8, comptime root: type) void +``` + +Exports every public field and declaration on `root` into the JavaScript module export object. + +```zig +const napi = @import("napi"); + +pub const version = "0.1.0"; + +pub fn add(left: i32, right: i32) i32 { + return left + right; +} + +comptime { + napi.NODE_API_MODULE("hello", @This()); +} +``` + +The resulting JavaScript module has `version` and `add` exports. + +## `NODE_API_MODULE_WITH_INIT` + +```zig +napi.NODE_API_MODULE_WITH_INIT( + comptime name: []const u8, + comptime root: type, + init: ?fn (env: napi.Env, exports: napi.Object) anyerror!?napi.Object, +) void +``` + +Use this form when the module needs custom setup after generated exports are attached. + +```zig +fn init(env: napi.Env, exports: napi.Object) !?napi.Object { + try exports.Set("loadedAt", env.createDate(0)); + return null; +} + +comptime { + napi.NODE_API_MODULE_WITH_INIT("hello", @This(), init); +} +``` + +Returning `null` keeps the generated export object. Returning an object replaces it. + +## Export Rules + +| Root member | Export behavior | +| --- | --- | +| `pub fn` declaration | Converted into a JavaScript function. | +| `pub const` declaration | Converted through the `Napi.to_napi_value` conversion layer. | +| public struct field on the root type | Converted and attached as an export. | +| `pub const` class wrapper | Exported as a JavaScript class constructor. | +| `pub const` enum type | Exported as a TypeScript enum during declaration generation. | +| `pub const napi_allocator` | Reserved for allocator configuration and not exported. | + +If conversion fails during module initialization, the wrapper throws the pending JavaScript error into the current `Env`. + +## Init Hook + +The init hook runs after generated exports are attached. + +```zig +fn init(env: napi.Env, exports: napi.Object) !?napi.Object { + try exports.Set("global", try env.getGlobal()); + return null; +} +``` + +Return `null` to keep the generated export object. Return another `napi.Object` to replace `module.exports`. + +## Type Generation Mode + +When `build_options.napi_tsgen` is enabled by `generateTypeDefinition`, registration becomes a no-op at runtime. This lets the generator compile the addon root for reflection without emitting a native module initializer. + +`napi.dts` and `napi.Dts` also switch behavior in this mode, so custom TypeScript text affects declarations without changing runtime exports. diff --git a/website/src/content/api/overview.md b/website/src/content/api/overview.md new file mode 100644 index 0000000..925c197 --- /dev/null +++ b/website/src/content/api/overview.md @@ -0,0 +1,85 @@ +--- +title: API Overview +--- + +# API Overview + +`zig-napi` exposes two public import surfaces: + +| Import | Use | +| --- | --- | +| `@import("napi")` | Runtime wrappers, module registration, conversion helpers, async descriptors, and TypeScript override wrappers. | +| `@import("zig-napi").napi_build` | `build.zig` helpers for OpenHarmony shared libraries, Node.js `.node` addons, and generated declaration files. | + +The normal flow is: + +1. Export Zig functions, constants, classes, and wrappers from a root struct. +2. Register that root with `napi.NODE_API_MODULE`. +3. Build an OpenHarmony library with `nativeAddonBuild`, a Node addon with `nodeAddonBuild`, or both. +4. Run `generateTypeDefinition` when the JavaScript consumer needs an `index.d.ts`. + +## Public Modules + +`napi.zig` re-exports the wrappers that addon code is expected to use. Most users should import from `napi` instead of importing files under `src/napi/**` directly. + +```zig +const napi = @import("napi"); + +pub fn add(left: i32, right: i32) i32 { + return left + right; +} + +comptime { + napi.NODE_API_MODULE("hello", @This()); +} +``` + +## Runtime And Type Generation + +Runtime builds and declaration generation compile the same addon root in different modes. `napi.dts` and `napi.Dts` only wrap values during declaration generation; at runtime they preserve the original value shape. + +Use this when the Zig type is useful internally but the public TypeScript contract should be narrower, wider, or named differently. + +## Runtime Surface + +The `napi` module re-exports the runtime-facing API: + +| Category | Exports | +| --- | --- | +| Environment and raw values | `Env`, `NapiValue`, `napi_sys` raw Node-API bindings | +| Primitive values | `Number`, `String`, `Bool`, `BigInt`, `Null`, `Undefined` | +| Object values | `Object`, `Array`, `Promise` | +| Binary values | `Buffer`, `ArrayBuffer`, `TypedArray`, typed array aliases, `DataView` | +| Functions | `Function`, `FunctionRef`, `CallbackInfo`, `ThreadSafeFunction` | +| Async | `AsyncRuntime`, `Async`, `AsyncWithEvents`, `AsyncContext`, `CancelToken`, `AbortSignal`, `Worker` | +| Native state | `Class`, `ClassWithoutInit`, `Reference`, `Ref`, `ObjectRef`, `External`, `NativeWrap` | +| Errors | `Error`, `Status`, `Result`, `JsError`, `JsTypeError`, `JsRangeError` | +| Build-time behavior | `NapiVersion`, `selectedNapiVersion`, `experimentalEnabled`, `resolveRequestedRuntime` | +| TypeScript overrides | `dts`, `Dts` | +| Allocators | `globalAllocator`, `setOperationAllocator`, `resetOperationAllocator` | +| Registration | `NODE_API_MODULE`, `NODE_API_MODULE_WITH_INIT` | + +## Build Surface + +`@import("zig-napi").napi_build` exports the build helpers: + +| Export | Use | +| --- | --- | +| `nativeAddonBuild` | Build OpenHarmony shared libraries. | +| `nodeAddonBuild` | Build platform-specific Node.js `.node` addons. | +| `generateTypeDefinition` | Generate `index.d.ts` from the addon root. | +| `NativeAddonBuildOptionsWithModule` | Options for OpenHarmony output. | +| `NodeAddonBuildOptionsWithModule` | Options for Node addon output. | +| `TypeDefinitionBuildOptions` | Options for declaration generation. | +| `NativeAddonBuildResult` | Compile steps for `arm64`, `arm`, and `x64`. | +| `NodeAddonBuildResult` | Node addon compile step. | +| `NodeApiOptions` | Node-API version and experimental mode. | +| `NapiVersion` | Build-time Node-API enum. | +| `resolveNdkPath` | Resolve the OpenHarmony native SDK path. | +| `cloneLibraryOptions` | Clone root module build options for another target. | +| `nodePlatformArchAbi` | Format Node platform/arch/ABI suffix. | +| `nodeAddonFilename` | Format the installed `.node` filename. | + +## Read Order + +Start with `Conversion Model` if you are exporting normal Zig functions. Use the value wrapper pages when you need manual `Env` or raw N-API work. Use `Ownership` when JavaScript values must carry native state or native code must hold references across calls. diff --git a/website/src/content/api/values-objects.md b/website/src/content/api/values-objects.md new file mode 100644 index 0000000..2ab5ee7 --- /dev/null +++ b/website/src/content/api/values-objects.md @@ -0,0 +1,101 @@ +--- +title: Objects And Arrays +--- + +# Objects And Arrays + +`Env`, `Object`, `Array`, and `Promise` cover most manual JavaScript value work. + +## `Env` + +```zig +napi.Env +``` + +`Env` wraps `napi_env`. It is injected automatically when an exported function uses `napi.Env` as its first parameter. + +| Method | Use | +| --- | --- | +| `from_raw(raw)` | Wrap an existing `napi_env`. | +| `getUndefined()` / `getNull()` | Get singleton JavaScript values. | +| `getNapiVersion()` | Read the host runtime Node-API version. | +| `getGlobal()` | Get the global object. | +| `createSymbol(description)` | Create a JavaScript symbol. | +| `createDate(value)` | Create a JavaScript Date. Requires Node-API v5. | +| `isExceptionPending()` | Check whether an exception is pending. | +| `getAndClearLastException()` | Consume the pending exception as `NapiValue`. | +| `wrap` / `wrapWithSizeHint` | Attach native payload to an object. | +| `unwrap` / `unwrapConst` | Read native payload from an object. | +| `dropWrapped` | Remove and destroy a wrapped payload. | +| `matchesWrapped` | Check whether an object carries a payload of type `T`. | + +## `Object` + +```zig +napi.Object +``` + +Common operations: + +| Method | Use | +| --- | --- | +| `Object.Create(env)` | Create an empty JavaScript object. | +| `Object.New(env, value)` | Convert a Zig object-like value. | +| `Set(key, value)` | Set a named string property. | +| `SetProperty(key, value)` | Set a property with a dynamic key. | +| `setProperty(key, value)` | Lowercase alias for `SetProperty`. | +| `Get(key, T)` | Read a property and convert it to `T`. | +| `GetNamed(key, T)` | Read a comptime-known named property. | +| `Has(key)` | Check for a named property. | +| `propertyNames()` | Return property names as `napi.Array`. | +| `isDate()` / `dateValue()` | Inspect Date values. Requires Node-API v5. | +| `freeze()` / `seal()` | Apply JavaScript object immutability operations. Requires Node-API v8. | +| `CreateRef()` | Create `Reference(Object)`. | +| `Wrap` / `Unwrap` / `DropWrapped` | Convenience native wrap operations. | + +Automatic object conversion maps object-like Zig structs to JavaScript objects. Optional struct fields become optional TypeScript properties during declaration generation. + +## `Array` + +```zig +napi.Array +``` + +Arrays support length, indexed reads, indexed writes, push, element existence checks, and element deletion. + +```zig +var array = try napi.Array.CreateWithLength(env, 0); +try array.Push("first"); +try array.Push(42); +``` + +| Method | Use | +| --- | --- | +| `Array.New(env, value)` | Create an array from a Zig array, slice, tuple, or `std.ArrayList(T)`. | +| `Array.Create(env)` | Create an empty array. | +| `Array.CreateWithLength(env, len)` | Create an array with length. | +| `createWithLength(env, len)` | Lowercase alias for `CreateWithLength`. | +| `length()` | Return cached length. | +| `Get(index, T)` | Read and convert one element. | +| `Set(index, value)` | Write one element. | +| `HasElement(index)` / `hasElement(index)` | Check whether an index exists. | +| `DeleteElement(index)` / `deleteElement(index)` | Delete one element. | +| `Push(value)` | Append one element. | + +When reading JavaScript values into Zig arrays, slices, or `std.ArrayList(T)`, numeric TypedArray inputs are accepted for supported numeric element types. + +## `Promise` + +```zig +napi.Promise +``` + +`Promise.New(env)` creates a deferred promise wrapper. + +| Method | Use | +| --- | --- | +| `Resolve(value)` | Resolve with any value supported by return conversion. | +| `Reject(error)` | Reject with `napi.Error`. | +| `RejectAbortError()` | Reject with an `AbortError` JavaScript error. | + +For most async exports, prefer `napi.Async` or `napi.AsyncWithEvents`; they produce promises and handle scheduling. diff --git a/website/src/content/api/values-primitives.md b/website/src/content/api/values-primitives.md new file mode 100644 index 0000000..97bfd2e --- /dev/null +++ b/website/src/content/api/values-primitives.md @@ -0,0 +1,77 @@ +--- +title: Primitive Values +--- + +# Primitive Values + +Primitive wrappers can be used directly, and they are also used by automatic argument and return conversion. + +## `NapiValue` + +```zig +napi.NapiValue +``` + +`NapiValue` is the escape hatch for raw JavaScript values. It stores `env` and `raw`, and can reinterpret the value through the conversion layer with `As(T)`. + +Use it when the public API needs to pass a value through without committing to a narrower wrapper. + +```zig +pub fn read(value: napi.NapiValue) i32 { + return value.As(i32); +} +``` + +## Number, Bool, String, BigInt + +| Wrapper | Typical Zig values | +| --- | --- | +| `napi.Number` | integers, floats, comptime numeric values | +| `napi.Bool` | `bool` | +| `napi.String` | UTF-8 or UTF-16 string-like values | +| `napi.BigInt` | integer values that should cross as JavaScript `bigint` | + +`BigInt` requires Node-API v6 or newer. + +## `Number` + +`Number.New(env, value)` accepts integer, float, `comptime_int`, and `comptime_float` values that fit JavaScript number conversion. Signed integers up to 32 bits use `napi_create_int32`; unsigned integers up to 32 bits use `napi_create_uint32`; `i64` uses `napi_create_int64`; floats use double conversion. + +Use `BigInt` for `i128`, `u128`, and values that should not be represented as JavaScript numbers. + +## `String` + +`String.New(env, bytes)` creates a UTF-8 JavaScript string. + +| Method | Use | +| --- | --- | +| `utf8Len()` | Byte length of the UTF-8 representation. | +| `utf16Len()` | Code-unit length of the UTF-16 representation. | +| `copyUtf8()` | Allocate and return `[]u8`. | +| `copyUtf16()` | Allocate and return `[]u16`. | + +Automatic conversion supports UTF-8 and UTF-16 string-like Zig targets. + +## `BigInt` + +`BigInt.from_napi_value(env, raw, T)` supports `i64` and `u64` extraction. `BigInt.New` is used by the conversion layer for `i128` and `u128` returns. Manual BigInt construction should pass an `i128` or `u128` value. + +## Null And Undefined + +```zig +napi.Null.New(env) +napi.Undefined.New(env) +``` + +Use these wrappers when a manual API needs to return JavaScript `null` or `undefined` explicitly. + +## Direct Constructors + +Most wrappers expose `New` or `from_raw`: + +```zig +const value = napi.String.New(env, "hello"); +const undefined_value = napi.Undefined.New(env); +``` + +For regular exported functions, returning ordinary Zig values is usually clearer than constructing wrappers manually. diff --git a/website/src/content/api/versioning.md b/website/src/content/api/versioning.md new file mode 100644 index 0000000..0ccc0f0 --- /dev/null +++ b/website/src/content/api/versioning.md @@ -0,0 +1,83 @@ +--- +title: Versioning +--- + +# Versioning + +`zig-napi` defaults to Node-API v8 for OpenHarmony and Node addon builds. + +## `NapiVersion` + +```zig +napi.NapiVersion +napi_build.NapiVersion +``` + +Supported values: + +```zig +.v1 +.v2 +.v3 +.v4 +.v5 +.v6 +.v7 +.v8 +.v9 +.v10 +.experimental +``` + +## Configure Version + +Pass `.node_api` to build helpers: + +```zig +.node_api = .{ + .version = .v10, + .experimental = false, +}, +``` + +When `.experimental = true`, the addon requests the experimental Node-API version and enables experimental declarations in `napi-sys`. + +## Version-Gated Wrappers + +| Wrapper | Minimum | +| --- | --- | +| `Async` | Node-API v4 | +| `AsyncWithEvents` | Node-API v4 | +| `ThreadSafeFunction` | Node-API v4 | +| `Env.createDate` | Node-API v5 | +| `Object.isDate` / `Object.dateValue` | Node-API v5 | +| `BigInt` | Node-API v6 | +| `BigInt64Array` / `BigUint64Array` | Node-API v6 | +| `ArrayBuffer.detach` / `ArrayBuffer.isDetached` | Node-API v7 | +| `Object.freeze` / `Object.seal` | Node-API v8 | + +If the selected version is too low, wrappers fail at compile time with a message that points back to `.node_api.version`. + +## Helper Functions + +```zig +napi.selectedNapiVersion() +napi.experimentalEnabled() +napi.selectedNapiVersion().isAtLeast(.v6) +napi.resolveRequestedRuntime(runtime) +``` + +Use these when low-level code needs to inspect the compiled runtime mode. + +Wrapper code uses compile-time version checks internally. Addon code usually only needs `selectedNapiVersion` or `isAtLeast` when it has custom low-level branches. + +`napi_build.NodeApiOptions` is the build-side configuration struct: + +```zig +.node_api = .{ + .version = .v8, + .experimental = false, +} +``` + +`experimental = true` uses the experimental Node-API version number even when `version` is set. diff --git a/website/src/content/snippets/install.md b/website/src/content/snippets/install.md new file mode 100644 index 0000000..ec68c6b --- /dev/null +++ b/website/src/content/snippets/install.md @@ -0,0 +1,13 @@ +```zig +.{ + .name = "appname", + .version = "0.0.0", + .minimum_zig_version = "0.16.0", + .dependencies = .{ + .@"zig-napi" = .{ + .url = "https://github.com/openharmony-zig/zig-napi/archive/refs/tags/.tar.gz", + .hash = "HASH_GOES_HERE", + }, + }, +} +``` diff --git a/website/src/content/snippets/node.md b/website/src/content/snippets/node.md new file mode 100644 index 0000000..64c447a --- /dev/null +++ b/website/src/content/snippets/node.md @@ -0,0 +1,16 @@ +```zig +const addon = try napi_build.nodeAddonBuild(b, .{ + .name = "hello", + .napi_module = napi, + .node_api = .{ + .version = .v8, + .experimental = false, + }, + .root_module_options = .{ + .root_source_file = b.path("./src/hello.zig"), + .target = target, + .optimize = optimize, + }, +}); +_ = addon; +``` diff --git a/website/src/content/snippets/openharmony.md b/website/src/content/snippets/openharmony.md new file mode 100644 index 0000000..2ec445f --- /dev/null +++ b/website/src/content/snippets/openharmony.md @@ -0,0 +1,21 @@ +```zig +const std = @import("std"); +const napi_build = @import("zig-napi").napi_build; + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const zig_napi = b.dependency("zig-napi", .{}); + const napi = zig_napi.module("napi"); + + _ = try napi_build.nativeAddonBuild(b, .{ + .name = "hello", + .napi_module = napi, + .root_module_options = .{ + .root_source_file = b.path("./src/hello.zig"), + .target = target, + .optimize = optimize, + }, + }); +} +``` diff --git a/website/src/content/snippets/types.md b/website/src/content/snippets/types.md new file mode 100644 index 0000000..82bf890 --- /dev/null +++ b/website/src/content/snippets/types.md @@ -0,0 +1,8 @@ +```zig +const dts = try napi_build.generateTypeDefinition(b, .{ + .root_source_file = b.path("./src/hello.zig"), + .output = b.path("index.d.ts"), + .napi_module = napi, +}); +b.getInstallStep().dependOn(&dts.step); +``` diff --git a/website/src/main.tsx b/website/src/main.tsx new file mode 100644 index 0000000..3c35e0d --- /dev/null +++ b/website/src/main.tsx @@ -0,0 +1,452 @@ +import '@fontsource/maple-mono/index.css' +import { StrictMode, useMemo, useState, type ComponentType } from 'react' +import { createRoot } from 'react-dom/client' +import { ApiDocsPage } from './api-docs' +import InstallSnippet from './content/snippets/install.md' +import NodeSnippet from './content/snippets/node.md' +import OpenHarmonySnippet from './content/snippets/openharmony.md' +import TypesSnippet from './content/snippets/types.md' +import './styles.css' + +type Snippet = { + id: string + label: string + language: string + code: string + Component: ComponentType +} + +type SiteRoute = 'home' | 'api' + +const snippets: Snippet[] = [ + { + id: 'install', + label: 'ZON install', + language: 'zon', + Component: InstallSnippet, + code: `.{ + .name = "appname", + .version = "0.0.0", + .minimum_zig_version = "0.16.0", + .dependencies = .{ + .@"zig-napi" = .{ + .url = "https://github.com/openharmony-zig/zig-napi/archive/refs/tags/.tar.gz", + .hash = "HASH_GOES_HERE", + }, + }, +}`, + }, + { + id: 'openharmony', + label: 'OpenHarmony', + language: 'zig', + Component: OpenHarmonySnippet, + code: `const std = @import("std"); +const napi_build = @import("zig-napi").napi_build; + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const zig_napi = b.dependency("zig-napi", .{}); + const napi = zig_napi.module("napi"); + + _ = try napi_build.nativeAddonBuild(b, .{ + .name = "hello", + .napi_module = napi, + .root_module_options = .{ + .root_source_file = b.path("./src/hello.zig"), + .target = target, + .optimize = optimize, + }, + }); +}`, + }, + { + id: 'node', + label: 'Node addon', + language: 'zig', + Component: NodeSnippet, + code: `const addon = try napi_build.nodeAddonBuild(b, .{ + .name = "hello", + .napi_module = napi, + .node_api = .{ + .version = .v8, + .experimental = false, + }, + .root_module_options = .{ + .root_source_file = b.path("./src/hello.zig"), + .target = target, + .optimize = optimize, + }, +}); +_ = addon;`, + }, + { + id: 'types', + label: 'Type definitions', + language: 'zig', + Component: TypesSnippet, + code: `const dts = try napi_build.generateTypeDefinition(b, .{ + .root_source_file = b.path("./src/hello.zig"), + .output = b.path("index.d.ts"), + .napi_module = napi, +}); +b.getInstallStep().dependOn(&dts.step);`, + }, +] + +const capabilities = [ + { + title: 'Dual runtime output', + body: 'Use one Zig export surface to build OpenHarmony shared libraries and Node.js addons.', + }, + { + title: 'Typed JavaScript boundary', + body: 'Generate declaration files from functions, classes, enums, async descriptors, structs, and unions.', + }, + { + title: 'N-API version gates', + body: 'Select Node-API v4 through v10 behavior and fail early when wrappers need a newer runtime API.', + }, + { + title: 'Low-level escape hatches', + body: 'Work directly with Object, String, Buffer, ArrayBuffer, TypedArray, DataView, External, and references.', + }, +] + +const surfaces = [ + ['OpenHarmony', 'aarch64-linux-ohos, arm-linux-ohoseabi, x86_64-linux-ohos'], + ['Node.js', 'host target by default, with platform-specific .node output names'], + ['TypeScript', 'index.d.ts generation from the same addon root'], + ['Examples', 'basic, init, node, allocator, memory, and benchmark fixtures'], +] + +function App() { + const route = resolveRoute() + + if (route === 'api') { + return ( + <> + +
    + +
    + + + ) + } + + return +} + +function resolveRoute(): SiteRoute { + return window.location.pathname === '/api' || window.location.pathname.startsWith('/api/') ? 'api' : 'home' +} + +function HomePage({ route }: { route: SiteRoute }) { + const [activeSnippetId, setActiveSnippetId] = useState(snippets[0]?.id ?? '') + const [copyLabel, setCopyLabel] = useState('Copy') + const activeSnippet = useMemo( + () => snippets.find((snippet) => snippet.id === activeSnippetId) ?? snippets[0], + [activeSnippetId], + ) + + async function copySnippet() { + if (!activeSnippet) return + + try { + await navigator.clipboard.writeText(activeSnippet.code) + setCopyLabel('Copied') + } catch { + setCopyLabel('Select') + } + + window.setTimeout(() => setCopyLabel('Copy'), 1200) + } + + return ( + <> + +
    + + + + + + + +
    + + + ) +} + +function SiteHeader({ route }: { route: SiteRoute }) { + const apiClass = `transition-colors hover:text-(--color-fg)${route === 'api' ? ' text-(--color-fg)' : ''}` + + return ( +
    + +
    + ) +} + +function Hero() { + return ( +
    +
    + ) +} + +function CapabilitySection() { + return ( +
    +
    + +
    + {capabilities.map((item) => ( +
    +

    {item.title}

    +

    {item.body}

    +
    + ))} +
    +
    +
    + ) +} + +function InstallSection() { + return ( +
    +
    +
    + +

    + The package exports both the napi module and the napi_build helpers used by examples + in this repository. +

    +
    +
    + + zig fetch + + + zig build + + + zig build -Dtarget=aarch64-linux-ohos + +
    +
    +
    + ) +} + +type BuildSectionProps = { + activeSnippet: Snippet | undefined + activeSnippetId: string + copyLabel: string + onCopy: () => void + onSnippetChange: (id: string) => void +} + +function BuildSection({ activeSnippet, activeSnippetId, copyLabel, onCopy, onSnippetChange }: BuildSectionProps) { + const ActiveSnippet = activeSnippet?.Component + + return ( +
    +
    +
    + +
    + {snippets.map((snippet) => ( + + ))} +
    +
    +
    +
    + {activeSnippet?.language} + +
    +
    {ActiveSnippet ? : null}
    +
    +
    +
    + ) +} + +function TypesSection() { + return ( +
    +
    + +
    +
    +

    Generated from Zig

    +

    + Functions, classes, tuples, structs, enums, arrays, unions, async descriptors, and raw N-API wrappers are + mapped into declaration files during the build. +

    +
    +
    +

    Override when the public contract differs

    +

    + napi.dts(value, "TypeScriptType") and napi.Dts(T, "TypeScriptType") let exported + declarations express a custom TypeScript-facing contract while keeping runtime values unchanged. +

    +
    +
    +
    +
    + ) +} + +function SurfaceSection() { + return ( +
    +
    + +
    + {surfaces.map(([name, detail]) => ( +
    +
    + {name} +
    +
    + {detail} +
    +
    + ))} +
    +
    +
    + ) +} + +function ApiOverviewSection() { + return ( +
    +
    +
    + +

    + The standalone API reference covers module registration, build helpers, runtime values, binary wrappers, + async descriptors, native ownership, errors, and custom TypeScript declaration overrides. +

    +
    +
    +

    + Use the API page when you need exact Zig signatures and wrapper behavior instead of the overview flow. +

    + + Open API Reference + +
    +
    +
    + ) +} + +function SectionHeader({ eyebrow, title }: { eyebrow: string; title: string }) { + return ( +
    +

    {eyebrow}

    +

    {title}

    +
    + ) +} + +function SiteFooter() { + return ( +
    +
    + MIT licensed + Inspired by napi-rs and node-addon-api +
    +
    + ) +} + +const app = document.querySelector('#app') + +if (!app) { + throw new Error('Missing #app root') +} + +createRoot(app).render( + + + , +) diff --git a/website/src/styles.css b/website/src/styles.css new file mode 100644 index 0000000..3fc8325 --- /dev/null +++ b/website/src/styles.css @@ -0,0 +1,439 @@ +@import 'tailwindcss'; +@import '@void/md/theme-content.css'; + +@theme { + --color-bg: #0b0a09; + --color-surface-1: #131210; + --color-surface-2: #1b1916; + --color-border: rgb(255 250 245 / 0.08); + --color-border-strong: rgb(255 250 245 / 0.14); + --color-fg: #f4f1ec; + --color-muted: #a8a298; + --color-faint: #8c867c; + --color-accent: oklch(68% 0.16 52); + --color-accent-strong: oklch(73% 0.17 52); + --color-accent-muted: oklch(68% 0.16 52 / 0.16); + --color-accent-glow: oklch(70% 0.18 52 / 0.22); + --color-accent-fg: #1a1208; + --font-mono: 'Maple Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace; + --text-display-xl: 3rem; + --text-h2: 2rem; +} + +:root { + color-scheme: dark; + font-family: var(--font-mono); + color: var(--color-fg); + background: var(--color-bg); + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +@media (min-width: 768px) { + :root { + --text-display-xl: 4rem; + --text-h2: 2.5rem; + } +} + +@media (min-width: 1024px) { + :root { + --text-display-xl: 5rem; + --text-h2: 3rem; + } +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + min-width: 320px; + overflow-x: clip; + background: + radial-gradient(70% 48% at 50% -12%, var(--color-accent-glow), transparent 70%), + var(--color-bg); +} + +body::after { + content: ''; + position: fixed; + inset: 0; + z-index: 60; + pointer-events: none; + opacity: 0.022; + mix-blend-mode: soft-light; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); +} + +::selection { + background: var(--color-accent-muted); + color: var(--color-fg); +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input, +textarea, +select { + font: inherit; +} + +code, +kbd, +pre { + font-family: var(--font-mono); +} + +code { + color: var(--color-fg); +} + +.void-md { + --vmd-link: var(--color-accent); +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } +} + +@layer components { + .container-page { + margin-inline: auto; + width: 100%; + max-width: 1140px; + padding-inline: 1.5rem; + } + + .api-container { + max-width: 1320px; + } + + @media (min-width: 768px) { + .container-page { + padding-inline: 2rem; + } + } + + .site-header { + background: color-mix(in oklab, var(--color-bg) 82%, transparent); + backdrop-filter: saturate(140%) blur(12px); + -webkit-backdrop-filter: saturate(140%) blur(12px); + } + + .accent-glow { + position: absolute; + inset: 0; + pointer-events: none; + background: radial-gradient(60% 50% at 50% 0%, var(--color-accent-glow), transparent 70%); + } + + .eyebrow { + font-size: 0.78rem; + letter-spacing: 0.14em; + line-height: 1; + text-transform: uppercase; + color: var(--color-accent); + } + + .section-band { + border-top: 1px solid var(--color-border); + padding-block: 5rem; + } + + .btn-primary, + .btn-secondary { + display: inline-flex; + min-height: 2.75rem; + align-items: center; + justify-content: center; + border-radius: 0.5rem; + padding-inline: 1rem; + font-size: 0.92rem; + font-weight: 650; + transition: + border-color 160ms ease, + background 160ms ease, + color 160ms ease, + transform 160ms ease; + } + + .btn-primary { + border: 1px solid var(--color-accent-strong); + background: var(--color-accent); + color: var(--color-accent-fg); + } + + .btn-primary:hover, + .btn-secondary:hover { + transform: translateY(-1px); + } + + .btn-secondary { + border: 1px solid var(--color-border-strong); + background: rgb(255 250 245 / 0.04); + color: var(--color-fg); + } + + .btn-secondary:hover { + border-color: var(--color-accent); + } + + .panel { + border: 1px solid var(--color-border); + border-radius: 0.5rem; + background: color-mix(in oklab, var(--color-surface-1) 86%, transparent); + padding: 1.25rem; + } + + .api-markdown { + --vmd-font-mono: var(--font-mono); + max-width: 100%; + } + + .api-markdown h2, + .api-markdown h3 { + scroll-margin-top: 6rem; + } + + .api-last-updated { + margin-bottom: 1.5rem !important; + color: var(--color-faint) !important; + font-size: 0.85rem; + } + + .api-toc { + min-width: 0; + border-left: 1px solid var(--color-border); + padding-left: 1rem; + } + + .api-toc-title { + margin: 0 0 0.9rem; + color: var(--color-faint); + font-size: 0.72rem; + line-height: 1.4; + text-transform: uppercase; + } + + .api-toc-links { + display: grid; + gap: 0.7rem; + } + + .api-toc-link { + color: var(--color-muted); + font-size: 0.78rem; + line-height: 1.45; + transition: color 160ms ease; + } + + .api-toc-link:hover { + color: var(--color-fg); + text-decoration: none !important; + } + + .api-toc-link.depth-3 { + padding-left: 0.85rem; + color: var(--color-faint); + } + + .api-doc-pager { + display: grid; + gap: 1rem; + margin-top: 3rem; + padding-top: 2rem; + border-top: 1px solid var(--color-border); + } + + @media (min-width: 768px) { + .api-doc-pager { + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + } + } + + .api-doc-pager-link { + display: grid; + min-height: 5.25rem; + align-content: center; + border: 1px solid var(--color-border); + border-radius: 0.5rem; + background: color-mix(in oklab, var(--color-surface-1) 86%, transparent); + padding: 1rem; + transition: + border-color 160ms ease, + background 160ms ease; + } + + .api-doc-pager-link:hover { + border-color: var(--color-accent); + background: var(--color-surface-2); + text-decoration: none !important; + } + + .api-doc-pager-link.next { + text-align: right; + } + + .api-doc-pager-link span { + color: var(--color-faint); + font-size: 0.78rem; + text-transform: uppercase; + } + + .api-doc-pager-link strong { + margin-top: 0.35rem; + color: var(--color-fg); + font-size: 0.95rem; + } + + .api-markdown div[class*='language-'], + .snippet-markdown div[class*='language-'] { + border: 1px solid var(--color-border); + border-radius: 0.5rem; + background: var(--color-surface-2) !important; + } + + .api-markdown pre, + .snippet-markdown pre { + background: transparent !important; + } + + .api-markdown pre.shiki.shiki-themes, + .snippet-markdown pre.shiki.shiki-themes { + background-color: transparent !important; + color: var(--shiki-dark, var(--color-fg)) !important; + } + + .api-markdown pre.shiki.shiki-themes span[style*='--shiki-dark'], + .snippet-markdown pre.shiki.shiki-themes span[style*='--shiki-dark'] { + color: var(--shiki-dark) !important; + } + + .api-markdown :not(pre) > code { + color: var(--color-accent-strong); + } + + .api-markdown .header-anchor { + color: var(--color-accent); + } + + .snippet-markdown { + --vmd-font-body: var(--font-mono); + --vmd-font-mono: var(--font-mono); + --vmd-text: var(--color-fg); + --vmd-text-muted: var(--color-muted); + --vmd-link: var(--color-accent); + --vmd-link-hover: var(--color-accent-strong); + --vmd-border: var(--color-border); + --vmd-bg-soft: var(--color-surface-2); + } + + .snippet-markdown > div { + margin: 0; + } + + .snippet-markdown div[class*='language-'] { + margin: 0; + border: 0; + border-radius: 0; + } + + .snippet-markdown div[class*='language-'] pre { + padding: 1.4rem 1.5rem; + } + + .snippet-markdown .copy { + display: none; + } + + .command-line { + display: block; + overflow-x: auto; + border: 1px solid var(--color-border); + border-radius: 0.65rem; + background: var(--color-surface-1); + padding: 0.85rem 1rem; + color: var(--color-fg); + font-size: 0.82rem; + } + + .snippet-tab { + border: 1px solid var(--color-border); + border-radius: 0.55rem; + background: rgb(255 250 245 / 0.03); + padding: 0.5rem 0.7rem; + color: var(--color-muted); + font-size: 0.86rem; + font-weight: 650; + cursor: pointer; + transition: + border-color 160ms ease, + background 160ms ease, + color 160ms ease; + } + + .snippet-tab:hover, + .snippet-tab.active { + border-color: var(--color-accent); + background: var(--color-accent-muted); + color: var(--color-fg); + } + + .copy-button { + border: 1px solid var(--color-border-strong); + border-radius: 0.5rem; + padding: 0.35rem 0.6rem; + color: var(--color-muted); + cursor: pointer; + transition: + border-color 160ms ease, + color 160ms ease, + background 160ms ease; + } + + .copy-button:hover { + border-color: var(--color-accent); + background: var(--color-accent-muted); + color: var(--color-fg); + } + + .nav-caret { + transition: transform 0.18s ease; + } + + details[open] > summary .nav-caret { + transform: rotate(180deg); + } + + .reveal { + transition: + opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1), + transform 0.6s cubic-bezier(0.22, 1, 0.36, 1); + } + + .js .reveal { + opacity: 0; + transform: translateY(12px); + } + + .reveal.is-visible { + opacity: 1; + transform: none; + } +} + +@media (max-width: 620px) { + .section-band { + padding-block: 3.75rem; + } +} diff --git a/website/src/vite-env.d.ts b/website/src/vite-env.d.ts new file mode 100644 index 0000000..b2a1412 --- /dev/null +++ b/website/src/vite-env.d.ts @@ -0,0 +1,17 @@ +/// + +declare module '*.md' { + import type { ComponentType } from 'react' + + const Component: ComponentType + export default Component + export const headings: Array<{ + depth: number + slug: string + text: string + }> +} + +declare module 'virtual:api-last-updated' { + export const lastUpdatedByApiSection: Record +} diff --git a/website/tsconfig.json b/website/tsconfig.json new file mode 100644 index 0000000..1d2b79a --- /dev/null +++ b/website/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "types": ["vite/client"], + "jsx": "react-jsx", + "skipLibCheck": true, + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "strict": true + }, + "include": ["src", "vite.config.ts"] +} diff --git a/website/vite.config.ts b/website/vite.config.ts new file mode 100644 index 0000000..9c859bc --- /dev/null +++ b/website/vite.config.ts @@ -0,0 +1,111 @@ +import { execFileSync } from 'node:child_process' +import { statSync } from 'node:fs' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { defineConfig, type Plugin } from 'vite' +import { voidMarkdown } from '@void/md/plugin' +import { voidReact } from '@void/react/plugin' +import tailwindcss from '@tailwindcss/vite' + +const rootDir = dirname(fileURLToPath(import.meta.url)) +const API_LAST_UPDATED_ID = 'virtual:api-last-updated' +const RESOLVED_API_LAST_UPDATED_ID = `\0${API_LAST_UPDATED_ID}` +const apiMarkdownFiles = [ + ['overview', 'overview.md'], + ['conversion-model', 'conversion-model.md'], + ['module-registration', 'module-registration.md'], + ['build-openharmony', 'build-openharmony.md'], + ['build-node', 'build-node.md'], + ['declaration-generation', 'declaration-generation.md'], + ['dts-overrides', 'dts-overrides.md'], + ['versioning', 'versioning.md'], + ['values-primitives', 'values-primitives.md'], + ['values-objects', 'values-objects.md'], + ['binary-data', 'binary-data.md'], + ['callback-functions', 'callback-functions.md'], + ['async-runtime', 'async-runtime.md'], + ['classes-ownership', 'classes-ownership.md'], + ['errors-results', 'errors-results.md'], +] as const + +function apiFallback(): Plugin { + return { + name: 'api-subpath-fallback', + apply: 'serve', + configureServer(server) { + server.middlewares.use((req, _res, next) => { + if (req.url?.startsWith('/api/') && !req.url.includes('.')) req.url = '/api/index.html' + next() + }) + }, + configurePreviewServer(server) { + server.middlewares.use((req, _res, next) => { + if (req.url?.startsWith('/api/') && !req.url.includes('.')) req.url = '/api/index.html' + next() + }) + }, + } +} + +function apiLastUpdated(): Plugin { + return { + name: 'api-last-updated', + resolveId(id) { + return id === API_LAST_UPDATED_ID ? RESOLVED_API_LAST_UPDATED_ID : null + }, + load(id) { + if (id !== RESOLVED_API_LAST_UPDATED_ID) return null + + const updated = Object.fromEntries( + apiMarkdownFiles.map(([sectionId, file]) => { + const filePath = resolve(rootDir, 'src/content/api', file) + return [sectionId, lastUpdatedIso(filePath)] + }), + ) + + return `export const lastUpdatedByApiSection = ${JSON.stringify(updated, null, 2)};` + }, + } +} + +function lastUpdatedIso(filePath: string) { + try { + const committed = execFileSync('git', ['log', '-1', '--format=%cI', '--', filePath], { + cwd: rootDir, + encoding: 'utf8', + stdio: ['ignore', 'pipe', 'ignore'], + }).trim() + if (committed) return committed + } catch { + // Untracked files have no git history yet; fall back to filesystem time. + } + + return statSync(filePath).mtime.toISOString() +} + +export default defineConfig({ + plugins: [ + voidReact(), + voidMarkdown({ + shiki: { + themes: { + light: 'github-light', + dark: 'github-dark', + }, + }, + }), + apiFallback(), + apiLastUpdated(), + tailwindcss(), + ], + build: { + outDir: 'dist', + emptyOutDir: true, + rollupOptions: { + input: { + main: resolve(rootDir, 'index.html'), + api: resolve(rootDir, 'api/index.html'), + }, + }, + }, +}) From a5229d253af1436e1149f8229d8dbea718f89fc6 Mon Sep 17 00:00:00 2001 From: richerfu Date: Fri, 26 Jun 2026 15:46:50 +0800 Subject: [PATCH 2/8] feat: add zig-napi node cli --- .gitignore | 2 + .oxlintrc.json | 10 + README.md | 25 + bin/zig-napi.js | 307 +++ examples/node/build.zig | 11 + examples/node/build.zig.zon | 2 +- examples/node/index.d.ts | 5 + examples/node/index.js | 52 + examples/node/npm/darwin-arm64/README.md | 3 + examples/node/npm/darwin-arm64/package.json | 16 + examples/node/npm/darwin-x64/README.md | 3 + examples/node/npm/darwin-x64/package.json | 16 + examples/node/npm/linux-arm64-gnu/README.md | 3 + .../node/npm/linux-arm64-gnu/package.json | 19 + examples/node/npm/linux-arm64-musl/README.md | 3 + .../node/npm/linux-arm64-musl/package.json | 19 + examples/node/npm/linux-x64-gnu/README.md | 3 + examples/node/npm/linux-x64-gnu/package.json | 19 + examples/node/npm/linux-x64-musl/README.md | 3 + examples/node/npm/linux-x64-musl/package.json | 19 + examples/node/npm/win32-arm64-msvc/README.md | 3 + .../node/npm/win32-arm64-msvc/package.json | 16 + examples/node/npm/win32-x64-msvc/README.md | 3 + examples/node/npm/win32-x64-msvc/package.json | 16 + examples/node/package.json | 48 + examples/node/test.js | 32 +- justfile | 3 + memory-testing/assert.ts | 2 +- memory-testing/native.ts | 4 +- package-lock.json | 2107 +++++++++++++++++ package.json | 36 + prek.toml | 2 +- templates/node-addon/.gitignore | 5 + templates/node-addon/build.zig | 36 + templates/node-addon/build.zig.zon | 19 + templates/node-addon/index.js | 60 + templates/node-addon/package.json | 39 + templates/node-addon/src/lib.zig | 17 + templates/node-addon/test.js | 6 + 39 files changed, 2958 insertions(+), 36 deletions(-) create mode 100644 .oxlintrc.json create mode 100755 bin/zig-napi.js create mode 100644 examples/node/index.d.ts create mode 100644 examples/node/index.js create mode 100644 examples/node/npm/darwin-arm64/README.md create mode 100644 examples/node/npm/darwin-arm64/package.json create mode 100644 examples/node/npm/darwin-x64/README.md create mode 100644 examples/node/npm/darwin-x64/package.json create mode 100644 examples/node/npm/linux-arm64-gnu/README.md create mode 100644 examples/node/npm/linux-arm64-gnu/package.json create mode 100644 examples/node/npm/linux-arm64-musl/README.md create mode 100644 examples/node/npm/linux-arm64-musl/package.json create mode 100644 examples/node/npm/linux-x64-gnu/README.md create mode 100644 examples/node/npm/linux-x64-gnu/package.json create mode 100644 examples/node/npm/linux-x64-musl/README.md create mode 100644 examples/node/npm/linux-x64-musl/package.json create mode 100644 examples/node/npm/win32-arm64-msvc/README.md create mode 100644 examples/node/npm/win32-arm64-msvc/package.json create mode 100644 examples/node/npm/win32-x64-msvc/README.md create mode 100644 examples/node/npm/win32-x64-msvc/package.json create mode 100644 examples/node/package.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 templates/node-addon/.gitignore create mode 100644 templates/node-addon/build.zig create mode 100644 templates/node-addon/build.zig.zon create mode 100644 templates/node-addon/index.js create mode 100644 templates/node-addon/package.json create mode 100644 templates/node-addon/src/lib.zig create mode 100644 templates/node-addon/test.js diff --git a/.gitignore b/.gitignore index ec28151..fa12934 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ zig-out node_modules website/.void website/dist +examples/node/*.node +examples/node/npm/*/*.node node-test/*.node .tmp_arkvm_runner .tmp_arkvm_memory_runner diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000..4afce31 --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "ignorePatterns": [ + "node_modules/**", + "website/dist/**", + "website/.void/**", + "**/*.d.ts", + "examples/node/npm/**" + ] +} diff --git a/README.md b/README.md index cdfee6e..e4dc619 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,31 @@ node test.js It installs the addon as `zig-out/node/hello..node`, for example `hello.darwin-arm64.node`, `hello.linux-x64-gnu.node`, or `hello.win32-x64-msvc.node`. +The package also provides a `zig-napi` CLI for Node.js addons. Zig-specific commands such as `new` and `build` are implemented by this project. Packaging commands reuse the community `@napi-rs/cli` API for npm package directory creation, artifact collection, and pre-publish processing. + +Create a new Node addon project: + +```bash +npm install +npm run zig-napi -- new ./my-addon --name my-addon --addon my_addon +cd my-addon +npm install +npm run package +npm test +``` + +Run the bundled Node example: + +```bash +npm install +npm run node-example:package +cd examples/node && node test.js +``` + +`zig-napi create-npm-dirs` calls `@napi-rs/cli`'s `createNpmDirs` API and creates `npm/` packages from the `napi` field in `package.json`. `zig-napi artifacts --output-dir zig-out/node` calls the community `artifacts` API and copies Zig's `..node` outputs into those packages and into the root package. `zig-napi pre-publish` calls the community `prePublish` API to update optional dependencies and handle publish preparation. + +Upstream `napi build` and `napi new` are not used directly for Zig addons because they currently expect Cargo projects and napi-rs' Rust templates. + Node.js matrix tests live in `node-test`. It mirrors the NAPI-RS example split with two independent demos: - `node-test/napi-compat-mode` covers compat-mode style APIs and runtime-gated N-API v4/v5/v6/v7/v8 scenarios. diff --git a/bin/zig-napi.js b/bin/zig-napi.js new file mode 100755 index 0000000..6f8a718 --- /dev/null +++ b/bin/zig-napi.js @@ -0,0 +1,307 @@ +#!/usr/bin/env node + +const childProcess = require("node:child_process"); +const fs = require("node:fs"); +const path = require("node:path"); +const { NapiCli } = require("@napi-rs/cli"); + +const rootDir = path.resolve(__dirname, ".."); +const templateDir = path.join(rootDir, "templates", "node-addon"); +const napiCli = new NapiCli(); + +function printHelp() { + console.log(`zig-napi + +Usage: + zig-napi new [--name ] [--addon ] [--zig-napi ] [--force] + zig-napi build [--cwd ] [--release] [--target ] [-- ] + zig-napi dts [--cwd ] [-- ] + zig-napi create-npm-dirs [--cwd ] [--config-path ] [--package-json-path ] [--npm-dir ] [--dry-run] + zig-napi artifacts [--cwd ] [--config-path ] [--package-json-path ] [--output-dir ] [--npm-dir ] + zig-napi pre-publish [--cwd ] [--config-path ] [--package-json-path ] [--npm-dir ] [--no-gh-release] [--skip-optional-publish] [--dry-run] + zig-napi package [--cwd ] [--release] [--target ] [--npm-dir ] [--output-dir ] + +Commands: + new Create a Zig Node-API addon project. + build Run zig build for a Zig addon project. + dts Run zig build so template projects emit index.d.ts. + create-npm-dirs Call @napi-rs/cli createNpmDirs API. + artifacts Call @napi-rs/cli artifacts API. + pre-publish Call @napi-rs/cli prePublish API. + package Run create-npm-dirs, build, and artifacts. +`); +} + +function parseArgs(argv) { + const args = []; + const flags = {}; + let passthrough = []; + + for (let i = 0; i < argv.length; i += 1) { + const item = argv[i]; + if (item === "--") { + passthrough = argv.slice(i + 1); + break; + } + if (!item.startsWith("--")) { + args.push(item); + continue; + } + + const eq = item.indexOf("="); + if (eq !== -1) { + flags[item.slice(2, eq)] = item.slice(eq + 1); + continue; + } + + const key = item.startsWith("--no-") ? item.slice(5) : item.slice(2); + if (item.startsWith("--no-")) { + flags[key] = false; + } else if (i + 1 < argv.length && !argv[i + 1].startsWith("--")) { + flags[key] = argv[i + 1]; + i += 1; + } else { + flags[key] = true; + } + } + + return { args, flags, passthrough }; +} + +function fail(message) { + console.error(`zig-napi: ${message}`); + process.exit(1); +} + +function run(command, args, options = {}) { + const result = childProcess.spawnSync(command, args, { + cwd: options.cwd || process.cwd(), + stdio: "inherit", + shell: process.platform === "win32", + }); + if (result.error) fail(result.error.message); + if (result.status !== 0) process.exit(result.status || 1); +} + +function normalizePathForZig(value) { + return value.split(path.sep).join("/"); +} + +function sanitizePackageName(input) { + return input + .replace(/[^a-zA-Z0-9@/_-]+/g, "-") + .replace(/^-+|-+$/g, "") + .toLowerCase(); +} + +function packageLeafName(input) { + return input.startsWith("@") ? input.split("/").pop() : input; +} + +function sanitizeZigName(input) { + const value = packageLeafName(sanitizePackageName(input)).replace(/-/g, "_"); + return /^[a-zA-Z_]/.test(value) ? value : `addon_${value}`; +} + +function copyTemplate(from, to, replacements) { + const stat = fs.statSync(from); + if (stat.isDirectory()) { + fs.mkdirSync(to, { recursive: true }); + for (const entry of fs.readdirSync(from)) { + copyTemplate(path.join(from, entry), path.join(to, entry), replacements); + } + return; + } + + let outputPath = to; + for (const [key, value] of Object.entries(replacements)) { + outputPath = outputPath.replaceAll(key, value); + } + + let text = fs.readFileSync(from, "utf8"); + for (const [key, value] of Object.entries(replacements)) { + text = text.replaceAll(key, value); + } + fs.writeFileSync(outputPath, text); +} + +function repairZigFingerprint(projectDir) { + const zonPath = path.join(projectDir, "build.zig.zon"); + const result = childProcess.spawnSync("zig", ["build"], { + cwd: projectDir, + encoding: "utf8", + stdio: "pipe", + shell: process.platform === "win32", + }); + const output = `${result.stdout || ""}\n${result.stderr || ""}`; + const match = output.match(/use this value:\s*(0x[0-9a-fA-F]+)/); + if (!match) { + if (result.error) { + console.warn( + `zig-napi: unable to calculate build.zig.zon fingerprint: ${result.error.message}`, + ); + } + return; + } + const zon = fs.readFileSync(zonPath, "utf8"); + fs.writeFileSync( + zonPath, + zon.replace(/\.fingerprint = 0x[0-9a-fA-F]+,/, `.fingerprint = ${match[1]},`), + ); +} + +function napiOptions(flags) { + return { + cwd: path.resolve(process.cwd(), flags.cwd || "."), + configPath: flags["config-path"], + packageJsonPath: flags["package-json-path"], + npmDir: flags["npm-dir"], + outputDir: flags["output-dir"], + buildOutputDir: flags["build-output-dir"], + tagStyle: flags["tag-style"], + ghRelease: flags["gh-release"], + ghReleaseName: flags["gh-release-name"], + ghReleaseId: flags["gh-release-id"], + skipOptionalPublish: flags["skip-optional-publish"], + dryRun: flags["dry-run"], + }; +} + +function cleanOptions(options) { + return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== undefined)); +} + +function commandNew(argv) { + const { args, flags } = parseArgs(argv); + const projectDir = args[0]; + if (!projectDir) fail("missing project directory"); + + const targetDir = path.resolve(process.cwd(), projectDir); + if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length && !flags.force) { + fail(`${targetDir} is not empty; pass --force to write into it`); + } + + const packageName = flags.name || sanitizePackageName(path.basename(targetDir)); + const addonName = flags.addon || sanitizeZigName(packageName); + const zigNapiPath = flags["zig-napi"] || path.relative(targetDir, rootDir) || "."; + + fs.mkdirSync(targetDir, { recursive: true }); + copyTemplate(templateDir, targetDir, { + __PACKAGE_NAME__: packageName, + __ADDON_NAME__: addonName, + __ZIG_PACKAGE_NAME__: sanitizeZigName(packageName), + __ZIG_NAPI_PATH__: normalizePathForZig(zigNapiPath), + __FINGERPRINT__: "0x0", + }); + repairZigFingerprint(targetDir); + + console.log(`Created ${packageName} in ${targetDir}`); +} + +function commandBuild(argv) { + const { flags, passthrough } = parseArgs(argv); + const cwd = path.resolve(process.cwd(), flags.cwd || "."); + const args = ["build"]; + if (flags.release) args.push("-Doptimize=ReleaseFast"); + if (flags.target) args.push(`-Dtarget=${flags.target}`); + args.push(...passthrough); + run("zig", args, { cwd }); +} + +function commandDts(argv) { + const { flags, passthrough } = parseArgs(argv); + const cwd = path.resolve(process.cwd(), flags.cwd || "."); + run("zig", ["build", ...passthrough], { cwd }); +} + +async function commandCreateNpmDirs(argv) { + const { flags } = parseArgs(argv); + await napiCli.createNpmDirs( + cleanOptions({ + cwd: path.resolve(process.cwd(), flags.cwd || "."), + configPath: flags["config-path"], + packageJsonPath: flags["package-json-path"], + npmDir: flags["npm-dir"], + dryRun: flags["dry-run"], + }), + ); +} + +async function commandArtifacts(argv) { + const { flags } = parseArgs(argv); + await napiCli.artifacts(cleanOptions(napiOptions(flags))); +} + +async function commandPrePublish(argv) { + const { flags } = parseArgs(argv); + await napiCli.prePublish(cleanOptions(napiOptions(flags))); +} + +async function commandPackage(argv) { + const { flags } = parseArgs(argv); + const cwd = path.resolve(process.cwd(), flags.cwd || "."); + await napiCli.createNpmDirs( + cleanOptions({ + cwd, + configPath: flags["config-path"], + packageJsonPath: flags["package-json-path"], + npmDir: flags["npm-dir"], + dryRun: flags["dry-run"], + }), + ); + commandBuild([ + "--cwd", + cwd, + ...(flags.release ? ["--release"] : []), + ...(flags.target ? ["--target", flags.target] : []), + ]); + await napiCli.artifacts( + cleanOptions({ + cwd, + configPath: flags["config-path"], + packageJsonPath: flags["package-json-path"], + outputDir: flags["output-dir"] || "zig-out/node", + npmDir: flags["npm-dir"], + buildOutputDir: flags["build-output-dir"], + }), + ); +} + +async function main() { + const [command, ...argv] = process.argv.slice(2); + if (!command || command === "-h" || command === "--help" || command === "help") { + printHelp(); + return; + } + + switch (command) { + case "new": + commandNew(argv); + break; + case "build": + commandBuild(argv); + break; + case "dts": + commandDts(argv); + break; + case "create-npm-dirs": + await commandCreateNpmDirs(argv); + break; + case "artifacts": + await commandArtifacts(argv); + break; + case "pre-publish": + await commandPrePublish(argv); + break; + case "package": + await commandPackage(argv); + break; + default: + fail(`unknown command: ${command}`); + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/examples/node/build.zig b/examples/node/build.zig index c2d3fa3..161de2f 100644 --- a/examples/node/build.zig +++ b/examples/node/build.zig @@ -22,4 +22,15 @@ pub fn build(b: *std.Build) !void { }, }); _ = addon; + + const dts = try napi_build.generateTypeDefinition(b, .{ + .root_source_file = b.path("src/hello.zig"), + .output = b.path("index.d.ts"), + .napi_module = napi, + .node_api = .{ + .version = .v8, + .experimental = false, + }, + }); + b.getInstallStep().dependOn(&dts.step); } diff --git a/examples/node/build.zig.zon b/examples/node/build.zig.zon index fad8760..a2321eb 100644 --- a/examples/node/build.zig.zon +++ b/examples/node/build.zig.zon @@ -4,5 +4,5 @@ .minimum_zig_version = "0.16.0", .fingerprint = 0xc8e4deed2741664f, .dependencies = .{ .@"zig-napi" = .{ .path = "../.." } }, - .paths = .{ "build.zig", "build.zig.zon", "src", "test.js" }, + .paths = .{ "build.zig", "build.zig.zon", "src", "index.js", "test.js", "package.json" }, } diff --git a/examples/node/index.d.ts b/examples/node/index.d.ts new file mode 100644 index 0000000..2c8153f --- /dev/null +++ b/examples/node/index.d.ts @@ -0,0 +1,5 @@ +/* auto-generated by zig-addon */ +/* eslint-disable */ +export declare function add(left: number, right: number): number +export declare function hello(): string +export declare function requestedNapiVersion(): number diff --git a/examples/node/index.js b/examples/node/index.js new file mode 100644 index 0000000..b1cbd2c --- /dev/null +++ b/examples/node/index.js @@ -0,0 +1,52 @@ +const fs = require("fs"); +const path = require("path"); + +const packageName = "zig-napi-node-example"; +const binaryName = "hello"; + +function loadAddon() { + const platformArchABI = detectPlatformArchABI(); + const optionalPackage = `${packageName}-${platformArchABI}`; + const candidates = [ + () => require(optionalPackage), + () => require(path.join(__dirname, `${binaryName}.${platformArchABI}.node`)), + () => require(path.join(__dirname, "zig-out", "node", `${binaryName}.${platformArchABI}.node`)), + ]; + + const errors = []; + for (const candidate of candidates) { + try { + return candidate(); + } catch (error) { + errors.push(error); + } + } + + throw new Error( + `Unable to load ${binaryName}.${platformArchABI}.node\n` + + errors.map((error) => `- ${error.message}`).join("\n"), + ); +} + +function detectPlatformArchABI() { + if (process.platform === "linux") { + return `${process.platform}-${process.arch}-${isMusl() ? "musl" : "gnu"}`; + } + if (process.platform === "win32") { + return `${process.platform}-${process.arch}-msvc`; + } + return `${process.platform}-${process.arch}`; +} + +function isMusl() { + if (process.report && typeof process.report.getReport === "function") { + return !process.report.getReport().header.glibcVersionRuntime; + } + try { + return fs.readFileSync("/usr/bin/ldd", "utf8").includes("musl"); + } catch { + return false; + } +} + +module.exports = loadAddon(); diff --git a/examples/node/npm/darwin-arm64/README.md b/examples/node/npm/darwin-arm64/README.md new file mode 100644 index 0000000..95d7f5d --- /dev/null +++ b/examples/node/npm/darwin-arm64/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-darwin-arm64` + +This is the **aarch64-apple-darwin** binary for `zig-napi-node-example` diff --git a/examples/node/npm/darwin-arm64/package.json b/examples/node/npm/darwin-arm64/package.json new file mode 100644 index 0000000..9561f44 --- /dev/null +++ b/examples/node/npm/darwin-arm64/package.json @@ -0,0 +1,16 @@ +{ + "name": "zig-napi-node-example-darwin-arm64", + "version": "0.1.0", + "cpu": [ + "arm64" + ], + "main": "hello.darwin-arm64.node", + "files": [ + "hello.darwin-arm64.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "darwin" + ] +} diff --git a/examples/node/npm/darwin-x64/README.md b/examples/node/npm/darwin-x64/README.md new file mode 100644 index 0000000..755e0e8 --- /dev/null +++ b/examples/node/npm/darwin-x64/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-darwin-x64` + +This is the **x86_64-apple-darwin** binary for `zig-napi-node-example` diff --git a/examples/node/npm/darwin-x64/package.json b/examples/node/npm/darwin-x64/package.json new file mode 100644 index 0000000..683d945 --- /dev/null +++ b/examples/node/npm/darwin-x64/package.json @@ -0,0 +1,16 @@ +{ + "name": "zig-napi-node-example-darwin-x64", + "version": "0.1.0", + "cpu": [ + "x64" + ], + "main": "hello.darwin-x64.node", + "files": [ + "hello.darwin-x64.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "darwin" + ] +} diff --git a/examples/node/npm/linux-arm64-gnu/README.md b/examples/node/npm/linux-arm64-gnu/README.md new file mode 100644 index 0000000..88ba6d3 --- /dev/null +++ b/examples/node/npm/linux-arm64-gnu/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-linux-arm64-gnu` + +This is the **aarch64-unknown-linux-gnu** binary for `zig-napi-node-example` diff --git a/examples/node/npm/linux-arm64-gnu/package.json b/examples/node/npm/linux-arm64-gnu/package.json new file mode 100644 index 0000000..20acceb --- /dev/null +++ b/examples/node/npm/linux-arm64-gnu/package.json @@ -0,0 +1,19 @@ +{ + "name": "zig-napi-node-example-linux-arm64-gnu", + "version": "0.1.0", + "cpu": [ + "arm64" + ], + "main": "hello.linux-arm64-gnu.node", + "files": [ + "hello.linux-arm64-gnu.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "linux" + ], + "libc": [ + "glibc" + ] +} diff --git a/examples/node/npm/linux-arm64-musl/README.md b/examples/node/npm/linux-arm64-musl/README.md new file mode 100644 index 0000000..5f4afbf --- /dev/null +++ b/examples/node/npm/linux-arm64-musl/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-linux-arm64-musl` + +This is the **aarch64-unknown-linux-musl** binary for `zig-napi-node-example` diff --git a/examples/node/npm/linux-arm64-musl/package.json b/examples/node/npm/linux-arm64-musl/package.json new file mode 100644 index 0000000..113ba9c --- /dev/null +++ b/examples/node/npm/linux-arm64-musl/package.json @@ -0,0 +1,19 @@ +{ + "name": "zig-napi-node-example-linux-arm64-musl", + "version": "0.1.0", + "cpu": [ + "arm64" + ], + "main": "hello.linux-arm64-musl.node", + "files": [ + "hello.linux-arm64-musl.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "linux" + ], + "libc": [ + "musl" + ] +} diff --git a/examples/node/npm/linux-x64-gnu/README.md b/examples/node/npm/linux-x64-gnu/README.md new file mode 100644 index 0000000..60b0e1c --- /dev/null +++ b/examples/node/npm/linux-x64-gnu/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-linux-x64-gnu` + +This is the **x86_64-unknown-linux-gnu** binary for `zig-napi-node-example` diff --git a/examples/node/npm/linux-x64-gnu/package.json b/examples/node/npm/linux-x64-gnu/package.json new file mode 100644 index 0000000..f6b0022 --- /dev/null +++ b/examples/node/npm/linux-x64-gnu/package.json @@ -0,0 +1,19 @@ +{ + "name": "zig-napi-node-example-linux-x64-gnu", + "version": "0.1.0", + "cpu": [ + "x64" + ], + "main": "hello.linux-x64-gnu.node", + "files": [ + "hello.linux-x64-gnu.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "linux" + ], + "libc": [ + "glibc" + ] +} diff --git a/examples/node/npm/linux-x64-musl/README.md b/examples/node/npm/linux-x64-musl/README.md new file mode 100644 index 0000000..0e4d3d0 --- /dev/null +++ b/examples/node/npm/linux-x64-musl/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-linux-x64-musl` + +This is the **x86_64-unknown-linux-musl** binary for `zig-napi-node-example` diff --git a/examples/node/npm/linux-x64-musl/package.json b/examples/node/npm/linux-x64-musl/package.json new file mode 100644 index 0000000..28d38cd --- /dev/null +++ b/examples/node/npm/linux-x64-musl/package.json @@ -0,0 +1,19 @@ +{ + "name": "zig-napi-node-example-linux-x64-musl", + "version": "0.1.0", + "cpu": [ + "x64" + ], + "main": "hello.linux-x64-musl.node", + "files": [ + "hello.linux-x64-musl.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "linux" + ], + "libc": [ + "musl" + ] +} diff --git a/examples/node/npm/win32-arm64-msvc/README.md b/examples/node/npm/win32-arm64-msvc/README.md new file mode 100644 index 0000000..62c26b2 --- /dev/null +++ b/examples/node/npm/win32-arm64-msvc/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-win32-arm64-msvc` + +This is the **aarch64-pc-windows-msvc** binary for `zig-napi-node-example` diff --git a/examples/node/npm/win32-arm64-msvc/package.json b/examples/node/npm/win32-arm64-msvc/package.json new file mode 100644 index 0000000..062f58e --- /dev/null +++ b/examples/node/npm/win32-arm64-msvc/package.json @@ -0,0 +1,16 @@ +{ + "name": "zig-napi-node-example-win32-arm64-msvc", + "version": "0.1.0", + "cpu": [ + "arm64" + ], + "main": "hello.win32-arm64-msvc.node", + "files": [ + "hello.win32-arm64-msvc.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "win32" + ] +} diff --git a/examples/node/npm/win32-x64-msvc/README.md b/examples/node/npm/win32-x64-msvc/README.md new file mode 100644 index 0000000..847f600 --- /dev/null +++ b/examples/node/npm/win32-x64-msvc/README.md @@ -0,0 +1,3 @@ +# `zig-napi-node-example-win32-x64-msvc` + +This is the **x86_64-pc-windows-msvc** binary for `zig-napi-node-example` diff --git a/examples/node/npm/win32-x64-msvc/package.json b/examples/node/npm/win32-x64-msvc/package.json new file mode 100644 index 0000000..aff185d --- /dev/null +++ b/examples/node/npm/win32-x64-msvc/package.json @@ -0,0 +1,16 @@ +{ + "name": "zig-napi-node-example-win32-x64-msvc", + "version": "0.1.0", + "cpu": [ + "x64" + ], + "main": "hello.win32-x64-msvc.node", + "files": [ + "hello.win32-x64-msvc.node" + ], + "description": "Node.js addon example built with zig-napi.", + "license": "MIT", + "os": [ + "win32" + ] +} diff --git a/examples/node/package.json b/examples/node/package.json new file mode 100644 index 0000000..b43a878 --- /dev/null +++ b/examples/node/package.json @@ -0,0 +1,48 @@ +{ + "name": "zig-napi-node-example", + "version": "0.1.0", + "private": true, + "description": "Node.js addon example built with zig-napi.", + "main": "index.js", + "files": [ + "index.js", + "index.d.ts", + "*.node" + ], + "scripts": { + "build": "zig-napi build -- --summary all", + "create-npm-dirs": "zig-napi create-npm-dirs", + "artifacts": "zig-napi artifacts --output-dir zig-out/node", + "pre-publish": "zig-napi pre-publish --no-gh-release --skip-optional-publish", + "package": "zig-napi package", + "test": "node test.js" + }, + "devDependencies": { + "zig-napi": "file:../.." + }, + "napi": { + "binaryName": "hello", + "packageName": "zig-napi-node-example", + "targets": [ + "x86_64-apple-darwin", + "aarch64-apple-darwin", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "x86_64-pc-windows-msvc", + "aarch64-pc-windows-msvc" + ] + }, + "license": "MIT", + "optionalDependencies": { + "zig-napi-node-example-darwin-x64": "0.1.0", + "zig-napi-node-example-darwin-arm64": "0.1.0", + "zig-napi-node-example-linux-x64-gnu": "0.1.0", + "zig-napi-node-example-linux-x64-musl": "0.1.0", + "zig-napi-node-example-linux-arm64-gnu": "0.1.0", + "zig-napi-node-example-linux-arm64-musl": "0.1.0", + "zig-napi-node-example-win32-x64-msvc": "0.1.0", + "zig-napi-node-example-win32-arm64-msvc": "0.1.0" + } +} diff --git a/examples/node/test.js b/examples/node/test.js index ac9232c..cfc91c4 100644 --- a/examples/node/test.js +++ b/examples/node/test.js @@ -1,35 +1,5 @@ const assert = require("assert").strict; -const fs = require("fs"); -const path = require("path"); - -function loadAddon() { - return loadAddonVariant("hello"); -} - -function addonCandidates(name) { - const nodeOut = path.join(__dirname, "zig-out", "node"); - return fs - .readdirSync(nodeOut, { withFileTypes: true }) - .filter((entry) => entry.isDirectory()) - .map((entry) => path.join(nodeOut, entry.name, `${name}.node`)) - .filter((candidate) => fs.existsSync(candidate)); -} - -function loadAddonVariant(name) { - for (const candidate of addonCandidates(name)) { - try { - return require(candidate); - } catch (error) { - if (error && error.code !== "ERR_DLOPEN_FAILED") { - throw error; - } - } - } - - throw new Error(`Unable to load a host-compatible ${name}.node`); -} - -const addon = loadAddon(); +const addon = require("./index"); assert.equal(addon.add(20, 22), 42); assert.equal(addon.hello(), "hello from node"); diff --git a/justfile b/justfile index eb34371..b9c88d2 100644 --- a/justfile +++ b/justfile @@ -53,6 +53,9 @@ format: zig fmt $(git ls-files '*.zig' '*.zon') oxk format $(git ls-files '*.js' '*.jsx' '*.ts' '*.tsx' '*.ets') +lint: + npm run lint + website-dev: cd website && npm run dev diff --git a/memory-testing/assert.ts b/memory-testing/assert.ts index 8173238..c65d979 100644 --- a/memory-testing/assert.ts +++ b/memory-testing/assert.ts @@ -28,7 +28,7 @@ export function assertArrayEqual( export function assertThrows(run: () => void, message: string) { try { run(); - } catch (_) { + } catch { return; } fail(`${message}: expected throw`); diff --git a/memory-testing/native.ts b/memory-testing/native.ts index 10efec6..8be382c 100644 --- a/memory-testing/native.ts +++ b/memory-testing/native.ts @@ -4,7 +4,7 @@ declare function requireNapiPreview(name: string, isApp: boolean): ESObject; declare function print(message: string): void; declare function setInterval(callback: () => void, delay: number): number; declare function clearInterval(id: number): void; -declare const globalThis: ESObject; +const arkGlobal = globalThis as ESObject; type NativeAddon = ESObject; @@ -37,7 +37,7 @@ export function delay(ms: number) { } function forceGc() { - const tools = globalThis.ArkTools; + const tools = arkGlobal.ArkTools; if (!tools) { return; } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..575bcaa --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2107 @@ +{ + "name": "zig-napi", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "zig-napi", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@napi-rs/cli": "^3.7.2" + }, + "bin": { + "zig-napi": "bin/zig-napi.js" + }, + "devDependencies": { + "oxlint": "^1.71.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@inquirer/ansi": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.7.tgz", + "integrity": "sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.1.tgz", + "integrity": "sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", + "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", + "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.7", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.2.2.tgz", + "integrity": "sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/external-editor": "^3.0.3", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.1.tgz", + "integrity": "sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.2" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.7.tgz", + "integrity": "sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + } + }, + "node_modules/@inquirer/input": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.2.tgz", + "integrity": "sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.1.1.tgz", + "integrity": "sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.1.1.tgz", + "integrity": "sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.5.2.tgz", + "integrity": "sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^5.2.1", + "@inquirer/confirm": "^6.1.1", + "@inquirer/editor": "^5.2.2", + "@inquirer/expand": "^5.1.1", + "@inquirer/input": "^5.1.2", + "@inquirer/number": "^4.1.1", + "@inquirer/password": "^5.1.1", + "@inquirer/rawlist": "^5.3.1", + "@inquirer/search": "^4.2.1", + "@inquirer/select": "^5.2.1" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.1.tgz", + "integrity": "sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.2.1.tgz", + "integrity": "sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", + "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.7.tgz", + "integrity": "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@napi-rs/cli": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.7.2.tgz", + "integrity": "sha512-shDW0Td/XZQpP04Yy+OsMt1ILMKGGkoLcy1zVAsSAK0fLfWm0Upgkmfs/NOV2ZhMQwkgpR3ZEdyHmTwgrUDQuA==", + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^8.5.2", + "@napi-rs/cross-toolchain": "^1.0.3", + "@napi-rs/wasm-tools": "^1.0.1", + "@octokit/rest": "^22.0.1", + "clipanion": "^4.0.0-rc.4", + "colorette": "^2.0.20", + "emnapi": "^1.11.1", + "es-toolkit": "^1.47.0", + "js-yaml": "^4.2.0", + "obug": "^2.1.2", + "semver": "^7.8.2", + "typanion": "^3.14.0" + }, + "bin": { + "napi": "dist/cli.js", + "napi-raw": "cli.mjs" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/runtime": "^1.7.1" + }, + "peerDependenciesMeta": { + "@emnapi/runtime": { + "optional": true + } + } + }, + "node_modules/@napi-rs/cross-toolchain": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@napi-rs/cross-toolchain/-/cross-toolchain-1.0.3.tgz", + "integrity": "sha512-ENPfLe4937bsKVTDA6zdABx4pq9w0tHqRrJHyaGxgaPq03a2Bd1unD5XSKjXJjebsABJ+MjAv1A2OvCgK9yehg==", + "license": "MIT", + "workspaces": [ + ".", + "arm64/*", + "x64/*" + ], + "dependencies": { + "@napi-rs/lzma": "^1.4.5", + "@napi-rs/tar": "^1.1.0", + "debug": "^4.4.1" + }, + "peerDependencies": { + "@napi-rs/cross-toolchain-arm64-target-aarch64": "^1.0.3", + "@napi-rs/cross-toolchain-arm64-target-armv7": "^1.0.3", + "@napi-rs/cross-toolchain-arm64-target-ppc64le": "^1.0.3", + "@napi-rs/cross-toolchain-arm64-target-s390x": "^1.0.3", + "@napi-rs/cross-toolchain-arm64-target-x86_64": "^1.0.3", + "@napi-rs/cross-toolchain-x64-target-aarch64": "^1.0.3", + "@napi-rs/cross-toolchain-x64-target-armv7": "^1.0.3", + "@napi-rs/cross-toolchain-x64-target-ppc64le": "^1.0.3", + "@napi-rs/cross-toolchain-x64-target-s390x": "^1.0.3", + "@napi-rs/cross-toolchain-x64-target-x86_64": "^1.0.3" + }, + "peerDependenciesMeta": { + "@napi-rs/cross-toolchain-arm64-target-aarch64": { + "optional": true + }, + "@napi-rs/cross-toolchain-arm64-target-armv7": { + "optional": true + }, + "@napi-rs/cross-toolchain-arm64-target-ppc64le": { + "optional": true + }, + "@napi-rs/cross-toolchain-arm64-target-s390x": { + "optional": true + }, + "@napi-rs/cross-toolchain-arm64-target-x86_64": { + "optional": true + }, + "@napi-rs/cross-toolchain-x64-target-aarch64": { + "optional": true + }, + "@napi-rs/cross-toolchain-x64-target-armv7": { + "optional": true + }, + "@napi-rs/cross-toolchain-x64-target-ppc64le": { + "optional": true + }, + "@napi-rs/cross-toolchain-x64-target-s390x": { + "optional": true + }, + "@napi-rs/cross-toolchain-x64-target-x86_64": { + "optional": true + } + } + }, + "node_modules/@napi-rs/lzma": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma/-/lzma-1.4.5.tgz", + "integrity": "sha512-zS5LuN1OBPAyZpda2ZZgYOEDC+xecUdAGnrvbYzjnLXkrq/OBC3B9qcRvlxbDR3k5H/gVfvef1/jyUqPknqjbg==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/lzma-android-arm-eabi": "1.4.5", + "@napi-rs/lzma-android-arm64": "1.4.5", + "@napi-rs/lzma-darwin-arm64": "1.4.5", + "@napi-rs/lzma-darwin-x64": "1.4.5", + "@napi-rs/lzma-freebsd-x64": "1.4.5", + "@napi-rs/lzma-linux-arm-gnueabihf": "1.4.5", + "@napi-rs/lzma-linux-arm64-gnu": "1.4.5", + "@napi-rs/lzma-linux-arm64-musl": "1.4.5", + "@napi-rs/lzma-linux-ppc64-gnu": "1.4.5", + "@napi-rs/lzma-linux-riscv64-gnu": "1.4.5", + "@napi-rs/lzma-linux-s390x-gnu": "1.4.5", + "@napi-rs/lzma-linux-x64-gnu": "1.4.5", + "@napi-rs/lzma-linux-x64-musl": "1.4.5", + "@napi-rs/lzma-wasm32-wasi": "1.4.5", + "@napi-rs/lzma-win32-arm64-msvc": "1.4.5", + "@napi-rs/lzma-win32-ia32-msvc": "1.4.5", + "@napi-rs/lzma-win32-x64-msvc": "1.4.5" + } + }, + "node_modules/@napi-rs/lzma-android-arm-eabi": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-android-arm-eabi/-/lzma-android-arm-eabi-1.4.5.tgz", + "integrity": "sha512-Up4gpyw2SacmyKWWEib06GhiDdF+H+CCU0LAV8pnM4aJIDqKKd5LHSlBht83Jut6frkB0vwEPmAkv4NjQ5u//Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-android-arm64": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-android-arm64/-/lzma-android-arm64-1.4.5.tgz", + "integrity": "sha512-uwa8sLlWEzkAM0MWyoZJg0JTD3BkPknvejAFG2acUA1raXM8jLrqujWCdOStisXhqQjZ2nDMp3FV6cs//zjfuQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-darwin-arm64": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-darwin-arm64/-/lzma-darwin-arm64-1.4.5.tgz", + "integrity": "sha512-0Y0TQLQ2xAjVabrMDem1NhIssOZzF/y/dqetc6OT8mD3xMTDtF8u5BqZoX3MyPc9FzpsZw4ksol+w7DsxHrpMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-darwin-x64": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-darwin-x64/-/lzma-darwin-x64-1.4.5.tgz", + "integrity": "sha512-vR2IUyJY3En+V1wJkwmbGWcYiT8pHloTAWdW4pG24+51GIq+intst6Uf6D/r46citObGZrlX0QvMarOkQeHWpw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-freebsd-x64": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-freebsd-x64/-/lzma-freebsd-x64-1.4.5.tgz", + "integrity": "sha512-XpnYQC5SVovO35tF0xGkbHYjsS6kqyNCjuaLQ2dbEblFRr5cAZVvsJ/9h7zj/5FluJPJRDojVNxGyRhTp4z2lw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-arm-gnueabihf": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-arm-gnueabihf/-/lzma-linux-arm-gnueabihf-1.4.5.tgz", + "integrity": "sha512-ic1ZZMoRfRMwtSwxkyw4zIlbDZGC6davC9r+2oX6x9QiF247BRqqT94qGeL5ZP4Vtz0Hyy7TEViWhx5j6Bpzvw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-arm64-gnu": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-arm64-gnu/-/lzma-linux-arm64-gnu-1.4.5.tgz", + "integrity": "sha512-asEp7FPd7C1Yi6DQb45a3KPHKOFBSfGuJWXcAd4/bL2Fjetb2n/KK2z14yfW8YC/Fv6x3rBM0VAZKmJuz4tysg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-arm64-musl": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-arm64-musl/-/lzma-linux-arm64-musl-1.4.5.tgz", + "integrity": "sha512-yWjcPDgJ2nIL3KNvi4536dlT/CcCWO0DUyEOlBs/SacG7BeD6IjGh6yYzd3/X1Y3JItCbZoDoLUH8iB1lTXo3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-ppc64-gnu": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-ppc64-gnu/-/lzma-linux-ppc64-gnu-1.4.5.tgz", + "integrity": "sha512-0XRhKuIU/9ZjT4WDIG/qnX7Xz7mSQHYZo9Gb3MP2gcvBgr6BA4zywQ9k3gmQaPn9ECE+CZg2V7DV7kT+x2pUMQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-riscv64-gnu": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-riscv64-gnu/-/lzma-linux-riscv64-gnu-1.4.5.tgz", + "integrity": "sha512-QrqDIPEUUB23GCpyQj/QFyMlr8SGxxyExeZz9OWFnHfb70kXdTLWrHS/hEI1Ru+lSbQ/6xRqeoGyQ4Aqdg+/RA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-s390x-gnu": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-s390x-gnu/-/lzma-linux-s390x-gnu-1.4.5.tgz", + "integrity": "sha512-k8RVM5aMhW86E9H0QXdquwojew4H3SwPxbRVbl49/COJQWCUjGi79X6mYruMnMPEznZinUiT1jgKbFo2A00NdA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.4.5.tgz", + "integrity": "sha512-6rMtBgnIq2Wcl1rQdZsnM+rtCcVCbws1nF8S2NzaUsVaZv8bjrPiAa0lwg4Eqnn1d9lgwqT+cZgm5m+//K08Kw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-musl": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-musl/-/lzma-linux-x64-musl-1.4.5.tgz", + "integrity": "sha512-eiadGBKi7Vd0bCArBUOO/qqRYPHt/VQVvGyYvDFt6C2ZSIjlD+HuOl+2oS1sjf4CFjK4eDIog6EdXnL0NE6iyQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-wasm32-wasi": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-wasm32-wasi/-/lzma-wasm32-wasi-1.4.5.tgz", + "integrity": "sha512-+VyHHlr68dvey6fXc2hehw9gHVFIW3TtGF1XkcbAu65qVXsA9D/T+uuoRVqhE+JCyFHFrO0ixRbZDRK1XJt1sA==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@napi-rs/lzma-win32-arm64-msvc": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-win32-arm64-msvc/-/lzma-win32-arm64-msvc-1.4.5.tgz", + "integrity": "sha512-eewnqvIyyhHi3KaZtBOJXohLvwwN27gfS2G/YDWdfHlbz1jrmfeHAmzMsP5qv8vGB+T80TMHNkro4kYjeh6Deg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-win32-ia32-msvc": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-win32-ia32-msvc/-/lzma-win32-ia32-msvc-1.4.5.tgz", + "integrity": "sha512-OeacFVRCJOKNU/a0ephUfYZ2Yt+NvaHze/4TgOwJ0J0P4P7X1mHzN+ig9Iyd74aQDXYqc7kaCXA2dpAOcH87Cg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/lzma-win32-x64-msvc": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-win32-x64-msvc/-/lzma-win32-x64-msvc-1.4.5.tgz", + "integrity": "sha512-T4I1SamdSmtyZgDXGAGP+y5LEK5vxHUFwe8mz6D4R7Sa5/WCxTcCIgPJ9BD7RkpO17lzhlaM2vmVvMy96Lvk9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar/-/tar-1.1.0.tgz", + "integrity": "sha512-7cmzIu+Vbupriudo7UudoMRH2OA3cTw67vva8MxeoAe5S7vPFI7z0vp0pMXiA25S8IUJefImQ90FeJjl8fjEaQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/tar-android-arm-eabi": "1.1.0", + "@napi-rs/tar-android-arm64": "1.1.0", + "@napi-rs/tar-darwin-arm64": "1.1.0", + "@napi-rs/tar-darwin-x64": "1.1.0", + "@napi-rs/tar-freebsd-x64": "1.1.0", + "@napi-rs/tar-linux-arm-gnueabihf": "1.1.0", + "@napi-rs/tar-linux-arm64-gnu": "1.1.0", + "@napi-rs/tar-linux-arm64-musl": "1.1.0", + "@napi-rs/tar-linux-ppc64-gnu": "1.1.0", + "@napi-rs/tar-linux-s390x-gnu": "1.1.0", + "@napi-rs/tar-linux-x64-gnu": "1.1.0", + "@napi-rs/tar-linux-x64-musl": "1.1.0", + "@napi-rs/tar-wasm32-wasi": "1.1.0", + "@napi-rs/tar-win32-arm64-msvc": "1.1.0", + "@napi-rs/tar-win32-ia32-msvc": "1.1.0", + "@napi-rs/tar-win32-x64-msvc": "1.1.0" + } + }, + "node_modules/@napi-rs/tar-android-arm-eabi": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-android-arm-eabi/-/tar-android-arm-eabi-1.1.0.tgz", + "integrity": "sha512-h2Ryndraj/YiKgMV/r5by1cDusluYIRT0CaE0/PekQ4u+Wpy2iUVqvzVU98ZPnhXaNeYxEvVJHNGafpOfaD0TA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-android-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-android-arm64/-/tar-android-arm64-1.1.0.tgz", + "integrity": "sha512-DJFyQHr1ZxNZorm/gzc1qBNLF/FcKzcH0V0Vwan5P+o0aE2keQIGEjJ09FudkF9v6uOuJjHCVDdK6S6uHtShAw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-darwin-arm64/-/tar-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-Zz2sXRzjIX4e532zD6xm2SjXEym6MkvfCvL2RMpG2+UwNVDVscHNcz3d47Pf3sysP2e2af7fBB3TIoK2f6trPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-darwin-x64/-/tar-darwin-x64-1.1.0.tgz", + "integrity": "sha512-EI+CptIMNweT0ms9S3mkP/q+J6FNZ1Q6pvpJOEcWglRfyfQpLqjlC0O+dptruTPE8VamKYuqdjxfqD8hifZDOA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-freebsd-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-freebsd-x64/-/tar-freebsd-x64-1.1.0.tgz", + "integrity": "sha512-J0PIqX+pl6lBIAckL/c87gpodLbjZB1OtIK+RDscKC9NLdpVv6VGOxzUV/fYev/hctcE8EfkLbgFOfpmVQPg2g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-arm-gnueabihf": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-arm-gnueabihf/-/tar-linux-arm-gnueabihf-1.1.0.tgz", + "integrity": "sha512-SLgIQo3f3EjkZ82ZwvrEgFvMdDAhsxCYjyoSuWfHCz0U16qx3SuGCp8+FYOPYCECHN3ZlGjXnoAIt9ERd0dEUg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-arm64-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-arm64-gnu/-/tar-linux-arm64-gnu-1.1.0.tgz", + "integrity": "sha512-d014cdle52EGaH6GpYTQOP9Py7glMO1zz/+ynJPjjzYFSxvdYx0byrjumZk2UQdIyGZiJO2MEFpCkEEKFSgPYA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-arm64-musl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-arm64-musl/-/tar-linux-arm64-musl-1.1.0.tgz", + "integrity": "sha512-L/y1/26q9L/uBqiW/JdOb/Dc94egFvNALUZV2WCGKQXc6UByPBMgdiEyW2dtoYxYYYYc+AKD+jr+wQPcvX2vrQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-ppc64-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-ppc64-gnu/-/tar-linux-ppc64-gnu-1.1.0.tgz", + "integrity": "sha512-EPE1K/80RQvPbLRJDJs1QmCIcH+7WRi0F73+oTe1582y9RtfGRuzAkzeBuAGRXAQEjRQw/RjtNqr6UTJ+8UuWQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-s390x-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-s390x-gnu/-/tar-linux-s390x-gnu-1.1.0.tgz", + "integrity": "sha512-B2jhWiB1ffw1nQBqLUP1h4+J1ovAxBOoe5N2IqDMOc63fsPZKNqF1PvO/dIem8z7LL4U4bsfmhy3gBfu547oNQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-x64-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-x64-gnu/-/tar-linux-x64-gnu-1.1.0.tgz", + "integrity": "sha512-tbZDHnb9617lTnsDMGo/eAMZxnsQFnaRe+MszRqHguKfMwkisc9CCJnks/r1o84u5fECI+J/HOrKXgczq/3Oww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-linux-x64-musl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-x64-musl/-/tar-linux-x64-musl-1.1.0.tgz", + "integrity": "sha512-dV6cODlzbO8u6Anmv2N/ilQHq/AWz0xyltuXoLU3yUyXbZcnWYZuB2rL8OBGPmqNcD+x9NdScBNXh7vWN0naSQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-wasm32-wasi": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-wasm32-wasi/-/tar-wasm32-wasi-1.1.0.tgz", + "integrity": "sha512-jIa9nb2HzOrfH0F8QQ9g3WE4aMH5vSI5/1NYVNm9ysCmNjCCtMXCAhlI3WKCdm/DwHf0zLqdrrtDFXODcNaqMw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@napi-rs/tar-win32-arm64-msvc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-win32-arm64-msvc/-/tar-win32-arm64-msvc-1.1.0.tgz", + "integrity": "sha512-vfpG71OB0ijtjemp3WTdmBKJm9R70KM8vsSExMsIQtV0lVzP07oM1CW6JbNRPXNLhRoue9ofYLiUDk8bE0Hckg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-win32-ia32-msvc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-win32-ia32-msvc/-/tar-win32-ia32-msvc-1.1.0.tgz", + "integrity": "sha512-hGPyPW60YSpOSgzfy68DLBHgi6HxkAM+L59ZZZPMQ0TOXjQg+p2EW87+TjZfJOkSpbYiEkULwa/f4a2hcVjsqQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/tar-win32-x64-msvc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/tar-win32-x64-msvc/-/tar-win32-x64-msvc-1.1.0.tgz", + "integrity": "sha512-L6Ed1DxXK9YSCMyvpR8MiNAyKNkQLjsHsHK9E0qnHa8NzLFqzDKhvs5LfnWxM2kJ+F7m/e5n9zPm24kHb3LsVw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@napi-rs/wasm-tools": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools/-/wasm-tools-1.0.1.tgz", + "integrity": "sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/wasm-tools-android-arm-eabi": "1.0.1", + "@napi-rs/wasm-tools-android-arm64": "1.0.1", + "@napi-rs/wasm-tools-darwin-arm64": "1.0.1", + "@napi-rs/wasm-tools-darwin-x64": "1.0.1", + "@napi-rs/wasm-tools-freebsd-x64": "1.0.1", + "@napi-rs/wasm-tools-linux-arm64-gnu": "1.0.1", + "@napi-rs/wasm-tools-linux-arm64-musl": "1.0.1", + "@napi-rs/wasm-tools-linux-x64-gnu": "1.0.1", + "@napi-rs/wasm-tools-linux-x64-musl": "1.0.1", + "@napi-rs/wasm-tools-wasm32-wasi": "1.0.1", + "@napi-rs/wasm-tools-win32-arm64-msvc": "1.0.1", + "@napi-rs/wasm-tools-win32-ia32-msvc": "1.0.1", + "@napi-rs/wasm-tools-win32-x64-msvc": "1.0.1" + } + }, + "node_modules/@napi-rs/wasm-tools-android-arm-eabi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-android-arm-eabi/-/wasm-tools-android-arm-eabi-1.0.1.tgz", + "integrity": "sha512-lr07E/l571Gft5v4aA1dI8koJEmF1F0UigBbsqg9OWNzg80H3lDPO+auv85y3T/NHE3GirDk7x/D3sLO57vayw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-android-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-android-arm64/-/wasm-tools-android-arm64-1.0.1.tgz", + "integrity": "sha512-WDR7S+aRLV6LtBJAg5fmjKkTZIdrEnnQxgdsb7Cf8pYiMWBHLU+LC49OUVppQ2YSPY0+GeYm9yuZWW3kLjJ7Bg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-darwin-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-darwin-arm64/-/wasm-tools-darwin-arm64-1.0.1.tgz", + "integrity": "sha512-qWTI+EEkiN0oIn/N2gQo7+TVYil+AJ20jjuzD2vATS6uIjVz+Updeqmszi7zq7rdFTLp6Ea3/z4kDKIfZwmR9g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-darwin-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-darwin-x64/-/wasm-tools-darwin-x64-1.0.1.tgz", + "integrity": "sha512-bA6hubqtHROR5UI3tToAF/c6TDmaAgF0SWgo4rADHtQ4wdn0JeogvOk50gs2TYVhKPE2ZD2+qqt7oBKB+sxW3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-freebsd-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-freebsd-x64/-/wasm-tools-freebsd-x64-1.0.1.tgz", + "integrity": "sha512-90+KLBkD9hZEjPQW1MDfwSt5J1L46EUKacpCZWyRuL6iIEO5CgWU0V/JnEgFsDOGyyYtiTvHc5bUdUTWd4I9Vg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-linux-arm64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-arm64-gnu/-/wasm-tools-linux-arm64-gnu-1.0.1.tgz", + "integrity": "sha512-rG0QlS65x9K/u3HrKafDf8cFKj5wV2JHGfl8abWgKew0GVPyp6vfsDweOwHbWAjcHtp2LHi6JHoW80/MTHm52Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-linux-arm64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-arm64-musl/-/wasm-tools-linux-arm64-musl-1.0.1.tgz", + "integrity": "sha512-jAasbIvjZXCgX0TCuEFQr+4D6Lla/3AAVx2LmDuMjgG4xoIXzjKWl7c4chuaD+TI+prWT0X6LJcdzFT+ROKGHQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-linux-x64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-x64-gnu/-/wasm-tools-linux-x64-gnu-1.0.1.tgz", + "integrity": "sha512-Plgk5rPqqK2nocBGajkMVbGm010Z7dnUgq0wtnYRZbzWWxwWcXfZMPa8EYxrK4eE8SzpI7VlZP1tdVsdjgGwMw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-linux-x64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-x64-musl/-/wasm-tools-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-GW7AzGuWxtQkyHknHWYFdR0CHmW6is8rG2Rf4V6GNmMpmwtXt/ItWYWtBe4zqJWycMNazpfZKSw/BpT7/MVCXQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-wasm32-wasi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-wasm32-wasi/-/wasm-tools-wasm32-wasi-1.0.1.tgz", + "integrity": "sha512-/nQVSTrqSsn7YdAc2R7Ips/tnw5SPUcl3D7QrXCNGPqjbatIspnaexvaOYNyKMU6xPu+pc0BTnKVmqhlJJCPLA==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@napi-rs/wasm-tools-win32-arm64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-win32-arm64-msvc/-/wasm-tools-win32-arm64-msvc-1.0.1.tgz", + "integrity": "sha512-PFi7oJIBu5w7Qzh3dwFea3sHRO3pojMsaEnUIy22QvsW+UJfNQwJCryVrpoUt8m4QyZXI+saEq/0r4GwdoHYFQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-win32-ia32-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-win32-ia32-msvc/-/wasm-tools-win32-ia32-msvc-1.0.1.tgz", + "integrity": "sha512-gXkuYzxQsgkj05Zaq+KQTkHIN83dFAwMcTKa2aQcpYPRImFm2AQzEyLtpXmyCWzJ0F9ZYAOmbSyrNew8/us6bw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-tools-win32-x64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-win32-x64-msvc/-/wasm-tools-win32-x64-msvc-1.0.1.tgz", + "integrity": "sha512-rEAf05nol3e3eei2sRButmgXP+6ATgm0/38MKhz9Isne82T4rPIMYsCIFj0kOisaGeVwoi2fnm7O9oWp5YVnYQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@octokit/auth-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/core": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/endpoint": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/graphql": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", + "license": "MIT", + "dependencies": { + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", + "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/request": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.10.tgz", + "integrity": "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w==", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^11.0.3", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "content-type": "^2.0.0", + "json-with-bigint": "^3.5.3", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/request-error": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/rest": { + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz", + "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==", + "license": "MIT", + "dependencies": { + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-request-log": "^6.0.0", + "@octokit/plugin-rest-endpoint-methods": "^17.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^27.0.0" + } + }, + "node_modules/@oxlint/binding-android-arm-eabi": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.71.0.tgz", + "integrity": "sha512-ImGmd1njEg4FEJH03jhRnveEegtO3czCtfptvaHivKAZQIYATbVFBrrzbaYMYv0oJioTnxZAZVSyV+oL7W8S2g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-android-arm64": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.71.0.tgz", + "integrity": "sha512-4A5BEexBrwY1YFF8Kiq/lp/wQPRG79G3BWIE1FuWaM5MvmpYSd+7ZySVcKkHdwo0UDzdQGddp6pD9mpctMqLnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-arm64": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.71.0.tgz", + "integrity": "sha512-9wJA9GJulLwS2usU3CEisI/ESDO1n1z9eyTCvApMDrAkbJ1ve0mORgTMjcWWsKxkzkeZ2N/Gpra5IQE7x8tYgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-x64": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.71.0.tgz", + "integrity": "sha512-PlLCjS06V0PeJMAJwzjrExw1sYNW9Gch3JtNlcwwZDXGlTYDuwHNN89zYH8LTXFfgkVtsYvs2nv0FqrzyuFDzg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-freebsd-x64": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.71.0.tgz", + "integrity": "sha512-Lhil7bWre0ncxbUoDoxfS0JzpTz17BRQKW7iwoAUY8GJ66+WwJEfYPCFJ1P0WgVZR5/O/b3Q2pENlHOjeXLOGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.71.0.tgz", + "integrity": "sha512-Oo9/L58PYD3RC0x05d2upAPLllHytTjHQGsnC06P6Ynn7jKkp5mdImQxXdJ3+FnBaKspNpGogzgVsi6g872LiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-musleabihf": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.71.0.tgz", + "integrity": "sha512-mSHfyfgJrEbyIR29ejaeS50BdPk+GoNPlC1dckpDiUZbJAIel68sjSMdOt4WY0/gva+ECC7FNITQkxMJU+vSBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-gnu": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.71.0.tgz", + "integrity": "sha512-n9yY4M2tiy3aij4AqtlnspzpfdpeT5JQfK2/w2d8oyp5W0FRwOb1dIeX99nORNcxGr08iD9bH8N5XFz3I2iy8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-musl": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.71.0.tgz", + "integrity": "sha512-fJZrs5sDZtTaPIOiemRQQmo82Ezy+vOGXemPc4Ok7iVVsYsFa7SlW6Z5XN819VfsqBHRm3NJ3rTdnR8+bJYJdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-ppc64-gnu": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.71.0.tgz", + "integrity": "sha512-cwl7VKGERIy9p+G+AvZdfy/06q0aHXaTt/mMRReC751iuNYJgqKjB7NydXSS30nBT9vtr2tunciOtrR4fD6FUA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-gnu": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.71.0.tgz", + "integrity": "sha512-eZ8ieVXvzGi8jr7+ybQGPK2STw3mldfxZlgA2738iflfB/rzA69sE6m5rDRpQaxC7dpm745Enlh1Tod0QAk9Gg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-musl": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.71.0.tgz", + "integrity": "sha512-puMDbQYe6+NXwfMusojoA7CXGn2b3utukmd23PQqc1E3XhVCwyZ+FueSMzDYeNgDV2dUfIVXAAKZBcFDeCL6sA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-s390x-gnu": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.71.0.tgz", + "integrity": "sha512-4NJLxBs1ujISCt3L/1FcywLs73PWtJuw+piD6feK2V6h6OS6P7xu9/sWt1DTRLibe6QCzmfZzmM/2HPORoV/Lg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-gnu": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.71.0.tgz", + "integrity": "sha512-cFDaiR8L3430qp88tfZnvFlt3KotFhR/DlbIL0nHOMMYiG/9Wy4l+6f7t8G8pTa9bd8Lt8+M0y/qjRQ/xcB74g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-musl": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.71.0.tgz", + "integrity": "sha512-orfixdt76KlpNly9z0PkWBBNfwjKz+JFVLP/7wnVchlKNU9Dpt9InU/ZggeSej6fC7qwHmHNOGlhLnQXcYoGuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-openharmony-arm64": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.71.0.tgz", + "integrity": "sha512-9emQu2lAp6yhPB3XuI+++vR+l/o6JR1X+EpxwcumPdQXBWXEPAsquPGL7l158EqU8SebQMXTUa/S5zN98juyHw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-arm64-msvc": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.71.0.tgz", + "integrity": "sha512-bd5kI8spYwTm3BILDtGhi73zoup5dw8MlPQNT8YB3BD5UIsjNe3K9/4ctrzQMX4SZMoK5HgzVLkLJzacEXB7fA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-ia32-msvc": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.71.0.tgz", + "integrity": "sha512-W4HvOHGzVLHcrmFu+bMrJlho+/yrlX5ZNdJZqGe8MEldkQG+RHYhxxad9P4jvWAYFmIqUA5i9DQ8QsJqSU9GIw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-x64-msvc": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.71.0.tgz", + "integrity": "sha512-D2kyEIPHk/G/wiZLnwTVC/sVst+T/lKldVOjAFpgTIBUAOlry72e5OiapDbDBF4LfJLkN5ypJb/8Eu6yJzkveQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/before-after-hook": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", + "license": "Apache-2.0" + }, + "node_modules/chardet": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz", + "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==", + "license": "MIT" + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/clipanion": { + "version": "4.0.0-rc.4", + "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-4.0.0-rc.4.tgz", + "integrity": "sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==", + "license": "MIT", + "workspaces": [ + "website" + ], + "dependencies": { + "typanion": "^3.8.0" + }, + "peerDependencies": { + "typanion": "*" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/emnapi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/emnapi/-/emnapi-1.11.1.tgz", + "integrity": "sha512-kSRjhIcxjMFsBqk7ORvoc9aA5SBKDmecrtF5RMcmOTao0kD/zamaxsuTxMI8C1//wGUuvE7a+19pCE7AEhGVnA==", + "license": "MIT", + "peerDependencies": { + "node-addon-api": ">= 6.1.0" + }, + "peerDependenciesMeta": { + "node-addon-api": { + "optional": true + } + } + }, + "node_modules/es-toolkit": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz", + "integrity": "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/js-yaml": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-with-bigint": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz", + "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/oxlint": { + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.71.0.tgz", + "integrity": "sha512-U1m1X+C0vDj7DC1e13IoZULzEcPczE7UOMTs8VlZGHUEIUaSTZKo5qkPsQEfzpgnQ29Pea/w3Xntk62UCecxZw==", + "dev": true, + "license": "MIT", + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/binding-android-arm-eabi": "1.71.0", + "@oxlint/binding-android-arm64": "1.71.0", + "@oxlint/binding-darwin-arm64": "1.71.0", + "@oxlint/binding-darwin-x64": "1.71.0", + "@oxlint/binding-freebsd-x64": "1.71.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.71.0", + "@oxlint/binding-linux-arm-musleabihf": "1.71.0", + "@oxlint/binding-linux-arm64-gnu": "1.71.0", + "@oxlint/binding-linux-arm64-musl": "1.71.0", + "@oxlint/binding-linux-ppc64-gnu": "1.71.0", + "@oxlint/binding-linux-riscv64-gnu": "1.71.0", + "@oxlint/binding-linux-riscv64-musl": "1.71.0", + "@oxlint/binding-linux-s390x-gnu": "1.71.0", + "@oxlint/binding-linux-x64-gnu": "1.71.0", + "@oxlint/binding-linux-x64-musl": "1.71.0", + "@oxlint/binding-openharmony-arm64": "1.71.0", + "@oxlint/binding-win32-arm64-msvc": "1.71.0", + "@oxlint/binding-win32-ia32-msvc": "1.71.0", + "@oxlint/binding-win32-x64-msvc": "1.71.0" + }, + "peerDependencies": { + "oxlint-tsgolint": ">=0.22.1", + "vite-plus": "*" + }, + "peerDependenciesMeta": { + "oxlint-tsgolint": { + "optional": true + }, + "vite-plus": { + "optional": true + } + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/typanion": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.14.0.tgz", + "integrity": "sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==", + "license": "MIT", + "workspaces": [ + "website" + ] + }, + "node_modules/universal-user-agent": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ab4a19c --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "zig-napi", + "version": "0.1.0", + "private": true, + "description": "CLI tools and Zig helpers for building Node.js addons with zig-napi.", + "bin": { + "zig-napi": "bin/zig-napi.js" + }, + "files": [ + "bin", + "templates", + "src", + "build.zig", + "build.zig.zon", + "README.md", + "LICENSE" + ], + "scripts": { + "format": "oxk format $(git ls-files '*.js' '*.jsx' '*.ts' '*.tsx' '*.ets')", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", + "zig-napi": "node bin/zig-napi.js", + "node-example:build": "node bin/zig-napi.js build --cwd examples/node -- --summary all", + "node-example:create-npm-dirs": "node bin/zig-napi.js create-npm-dirs --cwd examples/node", + "node-example:artifacts": "node bin/zig-napi.js artifacts --cwd examples/node --output-dir zig-out/node", + "node-example:pre-publish": "node bin/zig-napi.js pre-publish --cwd examples/node --no-gh-release --skip-optional-publish", + "node-example:package": "node bin/zig-napi.js package --cwd examples/node" + }, + "dependencies": { + "@napi-rs/cli": "^3.7.2" + }, + "devDependencies": { + "oxlint": "^1.71.0" + }, + "license": "MIT" +} diff --git a/prek.toml b/prek.toml index a36ff5c..d3517e9 100644 --- a/prek.toml +++ b/prek.toml @@ -9,7 +9,7 @@ repo = "local" id = "build-and-format" name = "build and format" language = "system" -entry = "sh -c 'just build-example && just format'" +entry = "sh -c 'just build-example && just format && just lint'" pass_filenames = false always_run = true fail_fast = true diff --git a/templates/node-addon/.gitignore b/templates/node-addon/.gitignore new file mode 100644 index 0000000..e54ab9e --- /dev/null +++ b/templates/node-addon/.gitignore @@ -0,0 +1,5 @@ +node_modules +zig-cache +zig-out +*.node +npm/*/*.node diff --git a/templates/node-addon/build.zig b/templates/node-addon/build.zig new file mode 100644 index 0000000..311cc5e --- /dev/null +++ b/templates/node-addon/build.zig @@ -0,0 +1,36 @@ +const std = @import("std"); +const napi_build = @import("zig-napi").napi_build; + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const zig_napi = b.dependency("zig-napi", .{}); + const napi = zig_napi.module("napi"); + + const addon = try napi_build.nodeAddonBuild(b, .{ + .name = "__ADDON_NAME__", + .napi_module = napi, + .node_api = .{ + .version = .v8, + .experimental = false, + }, + .root_module_options = .{ + .root_source_file = b.path("src/lib.zig"), + .target = target, + .optimize = optimize, + }, + }); + _ = addon; + + const dts = try napi_build.generateTypeDefinition(b, .{ + .root_source_file = b.path("src/lib.zig"), + .output = b.path("index.d.ts"), + .napi_module = napi, + .node_api = .{ + .version = .v8, + .experimental = false, + }, + }); + b.getInstallStep().dependOn(&dts.step); +} diff --git a/templates/node-addon/build.zig.zon b/templates/node-addon/build.zig.zon new file mode 100644 index 0000000..c000e64 --- /dev/null +++ b/templates/node-addon/build.zig.zon @@ -0,0 +1,19 @@ +.{ + .name = .__ZIG_PACKAGE_NAME__, + .version = "0.1.0", + .minimum_zig_version = "0.16.0", + .fingerprint = __FINGERPRINT__, + .dependencies = .{ + .@"zig-napi" = .{ + .path = "__ZIG_NAPI_PATH__", + }, + }, + .paths = .{ + "build.zig", + "build.zig.zon", + "src", + "index.js", + "test.js", + "package.json", + }, +} diff --git a/templates/node-addon/index.js b/templates/node-addon/index.js new file mode 100644 index 0000000..6ac8b8f --- /dev/null +++ b/templates/node-addon/index.js @@ -0,0 +1,60 @@ +const fs = require("fs"); +const path = require("path"); + +const packageName = "__PACKAGE_NAME__"; +const binaryName = "__ADDON_NAME__"; + +function loadAddon() { + const platformArchABI = detectPlatformArchABI(); + const optionalPackage = optionalPackageName(packageName, platformArchABI); + const candidates = [ + () => require(optionalPackage), + () => require(path.join(__dirname, `${binaryName}.${platformArchABI}.node`)), + () => require(path.join(__dirname, "zig-out", "node", `${binaryName}.${platformArchABI}.node`)), + ]; + + const errors = []; + for (const candidate of candidates) { + try { + return candidate(); + } catch (error) { + errors.push(error); + } + } + + throw new Error( + `Unable to load ${binaryName}.${platformArchABI}.node\n` + + errors.map((error) => `- ${error.message}`).join("\n"), + ); +} + +function optionalPackageName(name, platformArchABI) { + if (name.startsWith("@")) { + const slash = name.indexOf("/"); + return `${name.slice(0, slash + 1)}${name.slice(slash + 1)}-${platformArchABI}`; + } + return `${name}-${platformArchABI}`; +} + +function detectPlatformArchABI() { + if (process.platform === "linux") { + return `${process.platform}-${process.arch}-${isMusl() ? "musl" : "gnu"}`; + } + if (process.platform === "win32") { + return `${process.platform}-${process.arch}-msvc`; + } + return `${process.platform}-${process.arch}`; +} + +function isMusl() { + if (process.report && typeof process.report.getReport === "function") { + return !process.report.getReport().header.glibcVersionRuntime; + } + try { + return fs.readFileSync("/usr/bin/ldd", "utf8").includes("musl"); + } catch { + return false; + } +} + +module.exports = loadAddon(); diff --git a/templates/node-addon/package.json b/templates/node-addon/package.json new file mode 100644 index 0000000..572c394 --- /dev/null +++ b/templates/node-addon/package.json @@ -0,0 +1,39 @@ +{ + "name": "__PACKAGE_NAME__", + "version": "0.1.0", + "description": "A Node.js native addon built with zig-napi.", + "main": "index.js", + "types": "index.d.ts", + "files": [ + "index.js", + "index.d.ts", + "*.node" + ], + "scripts": { + "build": "zig-napi build", + "build:release": "zig-napi build --release", + "create-npm-dirs": "zig-napi create-npm-dirs", + "artifacts": "zig-napi artifacts --output-dir zig-out/node", + "pre-publish": "zig-napi pre-publish --no-gh-release --skip-optional-publish", + "package": "zig-napi package", + "test": "node test.js" + }, + "devDependencies": { + "zig-napi": "file:__ZIG_NAPI_PATH__" + }, + "napi": { + "binaryName": "__ADDON_NAME__", + "packageName": "__PACKAGE_NAME__", + "targets": [ + "x86_64-apple-darwin", + "aarch64-apple-darwin", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "x86_64-pc-windows-msvc", + "aarch64-pc-windows-msvc" + ] + }, + "license": "MIT" +} diff --git a/templates/node-addon/src/lib.zig b/templates/node-addon/src/lib.zig new file mode 100644 index 0000000..dd593fb --- /dev/null +++ b/templates/node-addon/src/lib.zig @@ -0,0 +1,17 @@ +const napi = @import("napi"); + +pub fn add(left: i32, right: i32) i32 { + return left + right; +} + +pub fn hello() []const u8 { + return "hello from __PACKAGE_NAME__"; +} + +pub fn requestedNapiVersion() i32 { + return @intFromEnum(napi.selectedNapiVersion()); +} + +comptime { + napi.NODE_API_MODULE("__ADDON_NAME__", @This()); +} diff --git a/templates/node-addon/test.js b/templates/node-addon/test.js new file mode 100644 index 0000000..2c74569 --- /dev/null +++ b/templates/node-addon/test.js @@ -0,0 +1,6 @@ +const assert = require("assert").strict; +const addon = require("./index"); + +assert.equal(addon.add(20, 22), 42); +assert.equal(addon.hello(), "hello from __PACKAGE_NAME__"); +assert.equal(addon.requestedNapiVersion(), 8); From 17412ac1226b1449cb87ef8d98f9b6069dc25349 Mon Sep 17 00:00:00 2001 From: richerfu Date: Sun, 28 Jun 2026 16:47:23 +0800 Subject: [PATCH 3/8] feat: migrate cli package to pnpm workspace --- .github/workflows/lint-format.yml | 39 +- .github/workflows/node-addon.yml | 46 +- .gitignore | 1 + README.md | 28 +- bin/zig-napi.js | 307 - docs/napi-conversion-refactor-plan.md | 2 +- examples/node/package.json | 7 +- justfile | 66 - node-test/package.json | 5 +- package-lock.json | 2107 ----- package.json | 82 +- packages/zig-napi/bin/zig-napi.js | 393 + packages/zig-napi/package.json | 23 + .../zig-napi/templates}/node-addon/.gitignore | 0 .../node-addon/__test__/index.spec.js | 8 + .../zig-napi/templates}/node-addon/build.zig | 0 .../templates}/node-addon/build.zig.zon | 4 +- .../zig-napi/templates/node-addon/index.js | 102 + .../templates/node-addon/package.json | 46 + .../templates}/node-addon/src/lib.zig | 0 pnpm-lock.yaml | 7611 +++++++++++++++++ pnpm-workspace.yaml | 5 + prek.toml | 2 +- templates/node-addon/index.js | 60 - templates/node-addon/package.json | 39 - templates/node-addon/test.js | 6 - website/package-lock.json | 5657 ------------ 27 files changed, 8327 insertions(+), 8319 deletions(-) delete mode 100755 bin/zig-napi.js delete mode 100644 justfile delete mode 100644 package-lock.json create mode 100755 packages/zig-napi/bin/zig-napi.js create mode 100644 packages/zig-napi/package.json rename {templates => packages/zig-napi/templates}/node-addon/.gitignore (100%) create mode 100644 packages/zig-napi/templates/node-addon/__test__/index.spec.js rename {templates => packages/zig-napi/templates}/node-addon/build.zig (100%) rename {templates => packages/zig-napi/templates}/node-addon/build.zig.zon (83%) create mode 100644 packages/zig-napi/templates/node-addon/index.js create mode 100644 packages/zig-napi/templates/node-addon/package.json rename {templates => packages/zig-napi/templates}/node-addon/src/lib.zig (100%) create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100644 templates/node-addon/index.js delete mode 100644 templates/node-addon/package.json delete mode 100644 templates/node-addon/test.js delete mode 100644 website/package-lock.json diff --git a/.github/workflows/lint-format.yml b/.github/workflows/lint-format.yml index 68d6789..bc093cb 100644 --- a/.github/workflows/lint-format.yml +++ b/.github/workflows/lint-format.yml @@ -25,21 +25,22 @@ jobs: with: node-version: 22 + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10.24.0 + + - name: Install workspace dependencies + run: pnpm install --frozen-lockfile + - name: Validate prek config - run: npm exec --yes --package @j178/prek -- prek validate-config prek.toml + run: pnpm exec prek validate-config prek.toml - name: Check Zig syntax - run: | - set -euo pipefail - while IFS= read -r -d '' file; do - zig ast-check "$file" - done < <(git ls-files -z '*.zig') - while IFS= read -r -d '' file; do - zig ast-check --zon "$file" - done < <(git ls-files -z '*.zon') + run: pnpm run check:zig - name: Build root package - run: zig build --summary all + run: pnpm run build format: runs-on: ubuntu-latest @@ -59,10 +60,16 @@ jobs: with: node-version: 22 + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10.24.0 + + - name: Install workspace dependencies + run: pnpm install --frozen-lockfile + + - name: Format + run: pnpm run format + - name: Check formatting - run: | - set -euo pipefail - git ls-files -z '*.zig' '*.zon' | xargs -0 zig fmt - git ls-files -z '*.js' '*.jsx' '*.ts' '*.tsx' '*.ets' \ - | xargs -0 npm exec --yes --package @ohos-rs/oxk -- oxk format - git diff --exit-code + run: git diff --exit-code diff --git a/.github/workflows/node-addon.yml b/.github/workflows/node-addon.yml index 8505cb0..6fba630 100644 --- a/.github/workflows/node-addon.yml +++ b/.github/workflows/node-addon.yml @@ -39,26 +39,42 @@ jobs: - name: Verify Zig run: zig version - - name: Setup Node.js + - name: Setup Node.js for install + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10.24.0 + + - name: Install workspace dependencies + run: pnpm install --frozen-lockfile + + - name: Setup Node.js for test uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - - name: Build and test Node addon matrix + - name: Build Node addon matrix if: runner.os != 'Windows' - run: | - cd node-test - npm install --no-package-lock - zig build --summary all - find . -maxdepth 2 -name '*.node' -print - npm test + working-directory: node-test + run: npm run build:test + + - name: Test Node addon matrix + if: runner.os != 'Windows' + working-directory: node-test + run: npm run test:run + + - name: Build Windows Node addon matrix + if: runner.os == 'Windows' + shell: pwsh + working-directory: node-test + run: npm run build:test:windows - - name: Build and test Node addon matrix + - name: Test Windows Node addon matrix if: runner.os == 'Windows' shell: pwsh - run: | - cd node-test - npm install --no-package-lock - zig build -Dtarget=x86_64-windows-msvc --summary all - Get-ChildItem -Recurse -Filter *.node | ForEach-Object { $_.FullName } - npm test + working-directory: node-test + run: npm run test:run diff --git a/.gitignore b/.gitignore index fa12934..af74db9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ website/dist examples/node/*.node examples/node/npm/*/*.node node-test/*.node +node-test/*.wasm .tmp_arkvm_runner .tmp_arkvm_memory_runner diff --git a/README.md b/README.md index e4dc619..053a959 100644 --- a/README.md +++ b/README.md @@ -142,8 +142,8 @@ The Node.js example is in `examples/node`: ```bash cd examples/node -zig build -node test.js +pnpm build +pnpm test ``` It installs the addon as `zig-out/node/hello..node`, for example `hello.darwin-arm64.node`, `hello.linux-x64-gnu.node`, or `hello.win32-x64-msvc.node`. @@ -153,20 +153,22 @@ The package also provides a `zig-napi` CLI for Node.js addons. Zig-specific comm Create a new Node addon project: ```bash -npm install -npm run zig-napi -- new ./my-addon --name my-addon --addon my_addon +pnpm install +pnpm --filter zig-napi cli new ../../my-addon --name my-addon --addon my_addon cd my-addon -npm install -npm run package -npm test +pnpm install +pnpm build +pnpm test ``` +`zig-napi new` uses the same default target behavior as napi-rs. Pass `--targets ` repeatedly or as a comma-separated list to choose the generated package targets manually, or pass `--enable-all-targets` to enable every napi-rs target known to the CLI. + Run the bundled Node example: ```bash -npm install -npm run node-example:package -cd examples/node && node test.js +pnpm install +pnpm run node-example:package +pnpm --filter zig-napi-node-example run test ``` `zig-napi create-npm-dirs` calls `@napi-rs/cli`'s `createNpmDirs` API and creates `npm/` packages from the `napi` field in `package.json`. `zig-napi artifacts --output-dir zig-out/node` calls the community `artifacts` API and copies Zig's `..node` outputs into those packages and into the root package. `zig-napi pre-publish` calls the community `prePublish` API to update optional dependencies and handle publish preparation. @@ -186,9 +188,9 @@ The documentation website lives in `website` and builds as a standalone Vite sit ```bash cd website -npm install -npm run dev -npm run build +pnpm install +pnpm dev +pnpm build ``` ## Credits diff --git a/bin/zig-napi.js b/bin/zig-napi.js deleted file mode 100755 index 6f8a718..0000000 --- a/bin/zig-napi.js +++ /dev/null @@ -1,307 +0,0 @@ -#!/usr/bin/env node - -const childProcess = require("node:child_process"); -const fs = require("node:fs"); -const path = require("node:path"); -const { NapiCli } = require("@napi-rs/cli"); - -const rootDir = path.resolve(__dirname, ".."); -const templateDir = path.join(rootDir, "templates", "node-addon"); -const napiCli = new NapiCli(); - -function printHelp() { - console.log(`zig-napi - -Usage: - zig-napi new [--name ] [--addon ] [--zig-napi ] [--force] - zig-napi build [--cwd ] [--release] [--target ] [-- ] - zig-napi dts [--cwd ] [-- ] - zig-napi create-npm-dirs [--cwd ] [--config-path ] [--package-json-path ] [--npm-dir ] [--dry-run] - zig-napi artifacts [--cwd ] [--config-path ] [--package-json-path ] [--output-dir ] [--npm-dir ] - zig-napi pre-publish [--cwd ] [--config-path ] [--package-json-path ] [--npm-dir ] [--no-gh-release] [--skip-optional-publish] [--dry-run] - zig-napi package [--cwd ] [--release] [--target ] [--npm-dir ] [--output-dir ] - -Commands: - new Create a Zig Node-API addon project. - build Run zig build for a Zig addon project. - dts Run zig build so template projects emit index.d.ts. - create-npm-dirs Call @napi-rs/cli createNpmDirs API. - artifacts Call @napi-rs/cli artifacts API. - pre-publish Call @napi-rs/cli prePublish API. - package Run create-npm-dirs, build, and artifacts. -`); -} - -function parseArgs(argv) { - const args = []; - const flags = {}; - let passthrough = []; - - for (let i = 0; i < argv.length; i += 1) { - const item = argv[i]; - if (item === "--") { - passthrough = argv.slice(i + 1); - break; - } - if (!item.startsWith("--")) { - args.push(item); - continue; - } - - const eq = item.indexOf("="); - if (eq !== -1) { - flags[item.slice(2, eq)] = item.slice(eq + 1); - continue; - } - - const key = item.startsWith("--no-") ? item.slice(5) : item.slice(2); - if (item.startsWith("--no-")) { - flags[key] = false; - } else if (i + 1 < argv.length && !argv[i + 1].startsWith("--")) { - flags[key] = argv[i + 1]; - i += 1; - } else { - flags[key] = true; - } - } - - return { args, flags, passthrough }; -} - -function fail(message) { - console.error(`zig-napi: ${message}`); - process.exit(1); -} - -function run(command, args, options = {}) { - const result = childProcess.spawnSync(command, args, { - cwd: options.cwd || process.cwd(), - stdio: "inherit", - shell: process.platform === "win32", - }); - if (result.error) fail(result.error.message); - if (result.status !== 0) process.exit(result.status || 1); -} - -function normalizePathForZig(value) { - return value.split(path.sep).join("/"); -} - -function sanitizePackageName(input) { - return input - .replace(/[^a-zA-Z0-9@/_-]+/g, "-") - .replace(/^-+|-+$/g, "") - .toLowerCase(); -} - -function packageLeafName(input) { - return input.startsWith("@") ? input.split("/").pop() : input; -} - -function sanitizeZigName(input) { - const value = packageLeafName(sanitizePackageName(input)).replace(/-/g, "_"); - return /^[a-zA-Z_]/.test(value) ? value : `addon_${value}`; -} - -function copyTemplate(from, to, replacements) { - const stat = fs.statSync(from); - if (stat.isDirectory()) { - fs.mkdirSync(to, { recursive: true }); - for (const entry of fs.readdirSync(from)) { - copyTemplate(path.join(from, entry), path.join(to, entry), replacements); - } - return; - } - - let outputPath = to; - for (const [key, value] of Object.entries(replacements)) { - outputPath = outputPath.replaceAll(key, value); - } - - let text = fs.readFileSync(from, "utf8"); - for (const [key, value] of Object.entries(replacements)) { - text = text.replaceAll(key, value); - } - fs.writeFileSync(outputPath, text); -} - -function repairZigFingerprint(projectDir) { - const zonPath = path.join(projectDir, "build.zig.zon"); - const result = childProcess.spawnSync("zig", ["build"], { - cwd: projectDir, - encoding: "utf8", - stdio: "pipe", - shell: process.platform === "win32", - }); - const output = `${result.stdout || ""}\n${result.stderr || ""}`; - const match = output.match(/use this value:\s*(0x[0-9a-fA-F]+)/); - if (!match) { - if (result.error) { - console.warn( - `zig-napi: unable to calculate build.zig.zon fingerprint: ${result.error.message}`, - ); - } - return; - } - const zon = fs.readFileSync(zonPath, "utf8"); - fs.writeFileSync( - zonPath, - zon.replace(/\.fingerprint = 0x[0-9a-fA-F]+,/, `.fingerprint = ${match[1]},`), - ); -} - -function napiOptions(flags) { - return { - cwd: path.resolve(process.cwd(), flags.cwd || "."), - configPath: flags["config-path"], - packageJsonPath: flags["package-json-path"], - npmDir: flags["npm-dir"], - outputDir: flags["output-dir"], - buildOutputDir: flags["build-output-dir"], - tagStyle: flags["tag-style"], - ghRelease: flags["gh-release"], - ghReleaseName: flags["gh-release-name"], - ghReleaseId: flags["gh-release-id"], - skipOptionalPublish: flags["skip-optional-publish"], - dryRun: flags["dry-run"], - }; -} - -function cleanOptions(options) { - return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== undefined)); -} - -function commandNew(argv) { - const { args, flags } = parseArgs(argv); - const projectDir = args[0]; - if (!projectDir) fail("missing project directory"); - - const targetDir = path.resolve(process.cwd(), projectDir); - if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length && !flags.force) { - fail(`${targetDir} is not empty; pass --force to write into it`); - } - - const packageName = flags.name || sanitizePackageName(path.basename(targetDir)); - const addonName = flags.addon || sanitizeZigName(packageName); - const zigNapiPath = flags["zig-napi"] || path.relative(targetDir, rootDir) || "."; - - fs.mkdirSync(targetDir, { recursive: true }); - copyTemplate(templateDir, targetDir, { - __PACKAGE_NAME__: packageName, - __ADDON_NAME__: addonName, - __ZIG_PACKAGE_NAME__: sanitizeZigName(packageName), - __ZIG_NAPI_PATH__: normalizePathForZig(zigNapiPath), - __FINGERPRINT__: "0x0", - }); - repairZigFingerprint(targetDir); - - console.log(`Created ${packageName} in ${targetDir}`); -} - -function commandBuild(argv) { - const { flags, passthrough } = parseArgs(argv); - const cwd = path.resolve(process.cwd(), flags.cwd || "."); - const args = ["build"]; - if (flags.release) args.push("-Doptimize=ReleaseFast"); - if (flags.target) args.push(`-Dtarget=${flags.target}`); - args.push(...passthrough); - run("zig", args, { cwd }); -} - -function commandDts(argv) { - const { flags, passthrough } = parseArgs(argv); - const cwd = path.resolve(process.cwd(), flags.cwd || "."); - run("zig", ["build", ...passthrough], { cwd }); -} - -async function commandCreateNpmDirs(argv) { - const { flags } = parseArgs(argv); - await napiCli.createNpmDirs( - cleanOptions({ - cwd: path.resolve(process.cwd(), flags.cwd || "."), - configPath: flags["config-path"], - packageJsonPath: flags["package-json-path"], - npmDir: flags["npm-dir"], - dryRun: flags["dry-run"], - }), - ); -} - -async function commandArtifacts(argv) { - const { flags } = parseArgs(argv); - await napiCli.artifacts(cleanOptions(napiOptions(flags))); -} - -async function commandPrePublish(argv) { - const { flags } = parseArgs(argv); - await napiCli.prePublish(cleanOptions(napiOptions(flags))); -} - -async function commandPackage(argv) { - const { flags } = parseArgs(argv); - const cwd = path.resolve(process.cwd(), flags.cwd || "."); - await napiCli.createNpmDirs( - cleanOptions({ - cwd, - configPath: flags["config-path"], - packageJsonPath: flags["package-json-path"], - npmDir: flags["npm-dir"], - dryRun: flags["dry-run"], - }), - ); - commandBuild([ - "--cwd", - cwd, - ...(flags.release ? ["--release"] : []), - ...(flags.target ? ["--target", flags.target] : []), - ]); - await napiCli.artifacts( - cleanOptions({ - cwd, - configPath: flags["config-path"], - packageJsonPath: flags["package-json-path"], - outputDir: flags["output-dir"] || "zig-out/node", - npmDir: flags["npm-dir"], - buildOutputDir: flags["build-output-dir"], - }), - ); -} - -async function main() { - const [command, ...argv] = process.argv.slice(2); - if (!command || command === "-h" || command === "--help" || command === "help") { - printHelp(); - return; - } - - switch (command) { - case "new": - commandNew(argv); - break; - case "build": - commandBuild(argv); - break; - case "dts": - commandDts(argv); - break; - case "create-npm-dirs": - await commandCreateNpmDirs(argv); - break; - case "artifacts": - await commandArtifacts(argv); - break; - case "pre-publish": - await commandPrePublish(argv); - break; - case "package": - await commandPackage(argv); - break; - default: - fail(`unknown command: ${command}`); - } -} - -main().catch((error) => { - console.error(error); - process.exit(1); -}); diff --git a/docs/napi-conversion-refactor-plan.md b/docs/napi-conversion-refactor-plan.md index 2915ac7..b4125da 100644 --- a/docs/napi-conversion-refactor-plan.md +++ b/docs/napi-conversion-refactor-plan.md @@ -54,7 +54,7 @@ Goal: make failed conversion impossible to accidentally use by changing conversi - Run: - `zig build --summary failures` - `zig build --summary failures` in `node-test` - - `just test-node-matrix` + - `pnpm run test:node-matrix` - `git diff --check` ### Estimate diff --git a/examples/node/package.json b/examples/node/package.json index b43a878..2d9dc42 100644 --- a/examples/node/package.json +++ b/examples/node/package.json @@ -15,10 +15,13 @@ "artifacts": "zig-napi artifacts --output-dir zig-out/node", "pre-publish": "zig-napi pre-publish --no-gh-release --skip-optional-publish", "package": "zig-napi package", - "test": "node test.js" + "test": "npm run build:test && npm run test:run", + "build:test": "npm run build", + "test:run": "node test.js", + "clean": "rm -rf .zig-cache zig-out *.node npm/*/*.node" }, "devDependencies": { - "zig-napi": "file:../.." + "zig-napi": "workspace:*" }, "napi": { "binaryName": "hello", diff --git a/justfile b/justfile deleted file mode 100644 index b9c88d2..0000000 --- a/justfile +++ /dev/null @@ -1,66 +0,0 @@ -set shell := ["bash", "-euo", "pipefail", "-c"] - -default: - @just --list - -init: - npm install --global @ohos-rs/oxk @j178/prek - prek validate-config prek.toml - prek install --config prek.toml --hook-type pre-commit --prepare-hooks --overwrite - -build-example: - #!/usr/bin/env bash - set -euo pipefail - - targets=( - aarch64-linux-ohos - arm-linux-ohoseabi - x86_64-linux-ohos - ) - - for example in examples/*; do - [[ -f "$example/build.zig" ]] || continue - [[ "$(basename "$example")" == "node" ]] && continue - - for target in "${targets[@]}"; do - echo "==> $example ($target)" - (cd "$example" && zig build -Dtarget="$target") - done - done - -build-node-example: - #!/usr/bin/env bash - set -euo pipefail - - cd examples/node - zig build - node test.js - -test-node-matrix: - #!/usr/bin/env bash - set -euo pipefail - - cd node-test - npm install --no-package-lock - target_args="" - case "$(uname -s)" in - MINGW*|MSYS*|CYGWIN*) target_args="-Dtarget=x86_64-windows-msvc" ;; - esac - zig build $target_args - npm test - -format: - zig fmt $(git ls-files '*.zig' '*.zon') - oxk format $(git ls-files '*.js' '*.jsx' '*.ts' '*.tsx' '*.ets') - -lint: - npm run lint - -website-dev: - cd website && npm run dev - -website-build: - cd website && npm run build - -website-preview: - cd website && npm run preview diff --git a/node-test/package.json b/node-test/package.json index 8148b40..55caf78 100644 --- a/node-test/package.json +++ b/node-test/package.json @@ -4,7 +4,10 @@ "private": true, "scripts": { "build": "zig build --summary all", - "test": "ava --serial", + "test": "npm run build:test && npm run test:run", + "build:test": "npm run build", + "build:test:windows": "zig build -Dtarget=x86_64-windows-msvc --summary all", + "test:run": "ava --serial", "test:compat": "ava --serial \"napi-compat-mode/__tests__/**/*.spec.js\"", "test:napi": "ava --serial \"napi/__tests__/**/*.spec.js\"" }, diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 575bcaa..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2107 +0,0 @@ -{ - "name": "zig-napi", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "zig-napi", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@napi-rs/cli": "^3.7.2" - }, - "bin": { - "zig-napi": "bin/zig-napi.js" - }, - "devDependencies": { - "oxlint": "^1.71.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@inquirer/ansi": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.7.tgz", - "integrity": "sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==", - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.1.tgz", - "integrity": "sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==", - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.7", - "@inquirer/core": "^11.2.1", - "@inquirer/figures": "^2.0.7", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", - "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", - "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.7", - "@inquirer/figures": "^2.0.7", - "@inquirer/type": "^4.0.7", - "cli-width": "^4.1.0", - "fast-wrap-ansi": "^0.2.0", - "mute-stream": "^3.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.2.2.tgz", - "integrity": "sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/external-editor": "^3.0.3", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.1.tgz", - "integrity": "sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==", - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.2" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.7.tgz", - "integrity": "sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==", - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - } - }, - "node_modules/@inquirer/input": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.2.tgz", - "integrity": "sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.1.1.tgz", - "integrity": "sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.1.1.tgz", - "integrity": "sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==", - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.7", - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.5.2.tgz", - "integrity": "sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==", - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^5.2.1", - "@inquirer/confirm": "^6.1.1", - "@inquirer/editor": "^5.2.2", - "@inquirer/expand": "^5.1.1", - "@inquirer/input": "^5.1.2", - "@inquirer/number": "^4.1.1", - "@inquirer/password": "^5.1.1", - "@inquirer/rawlist": "^5.3.1", - "@inquirer/search": "^4.2.1", - "@inquirer/select": "^5.2.1" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.1.tgz", - "integrity": "sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.2.1.tgz", - "integrity": "sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/figures": "^2.0.7", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", - "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.7", - "@inquirer/core": "^11.2.1", - "@inquirer/figures": "^2.0.7", - "@inquirer/type": "^4.0.7" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.7.tgz", - "integrity": "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==", - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@napi-rs/cli": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.7.2.tgz", - "integrity": "sha512-shDW0Td/XZQpP04Yy+OsMt1ILMKGGkoLcy1zVAsSAK0fLfWm0Upgkmfs/NOV2ZhMQwkgpR3ZEdyHmTwgrUDQuA==", - "license": "MIT", - "dependencies": { - "@inquirer/prompts": "^8.5.2", - "@napi-rs/cross-toolchain": "^1.0.3", - "@napi-rs/wasm-tools": "^1.0.1", - "@octokit/rest": "^22.0.1", - "clipanion": "^4.0.0-rc.4", - "colorette": "^2.0.20", - "emnapi": "^1.11.1", - "es-toolkit": "^1.47.0", - "js-yaml": "^4.2.0", - "obug": "^2.1.2", - "semver": "^7.8.2", - "typanion": "^3.14.0" - }, - "bin": { - "napi": "dist/cli.js", - "napi-raw": "cli.mjs" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/runtime": "^1.7.1" - }, - "peerDependenciesMeta": { - "@emnapi/runtime": { - "optional": true - } - } - }, - "node_modules/@napi-rs/cross-toolchain": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@napi-rs/cross-toolchain/-/cross-toolchain-1.0.3.tgz", - "integrity": "sha512-ENPfLe4937bsKVTDA6zdABx4pq9w0tHqRrJHyaGxgaPq03a2Bd1unD5XSKjXJjebsABJ+MjAv1A2OvCgK9yehg==", - "license": "MIT", - "workspaces": [ - ".", - "arm64/*", - "x64/*" - ], - "dependencies": { - "@napi-rs/lzma": "^1.4.5", - "@napi-rs/tar": "^1.1.0", - "debug": "^4.4.1" - }, - "peerDependencies": { - "@napi-rs/cross-toolchain-arm64-target-aarch64": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-armv7": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-ppc64le": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-s390x": "^1.0.3", - "@napi-rs/cross-toolchain-arm64-target-x86_64": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-aarch64": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-armv7": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-ppc64le": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-s390x": "^1.0.3", - "@napi-rs/cross-toolchain-x64-target-x86_64": "^1.0.3" - }, - "peerDependenciesMeta": { - "@napi-rs/cross-toolchain-arm64-target-aarch64": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-armv7": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-ppc64le": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-s390x": { - "optional": true - }, - "@napi-rs/cross-toolchain-arm64-target-x86_64": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-aarch64": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-armv7": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-ppc64le": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-s390x": { - "optional": true - }, - "@napi-rs/cross-toolchain-x64-target-x86_64": { - "optional": true - } - } - }, - "node_modules/@napi-rs/lzma": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma/-/lzma-1.4.5.tgz", - "integrity": "sha512-zS5LuN1OBPAyZpda2ZZgYOEDC+xecUdAGnrvbYzjnLXkrq/OBC3B9qcRvlxbDR3k5H/gVfvef1/jyUqPknqjbg==", - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/lzma-android-arm-eabi": "1.4.5", - "@napi-rs/lzma-android-arm64": "1.4.5", - "@napi-rs/lzma-darwin-arm64": "1.4.5", - "@napi-rs/lzma-darwin-x64": "1.4.5", - "@napi-rs/lzma-freebsd-x64": "1.4.5", - "@napi-rs/lzma-linux-arm-gnueabihf": "1.4.5", - "@napi-rs/lzma-linux-arm64-gnu": "1.4.5", - "@napi-rs/lzma-linux-arm64-musl": "1.4.5", - "@napi-rs/lzma-linux-ppc64-gnu": "1.4.5", - "@napi-rs/lzma-linux-riscv64-gnu": "1.4.5", - "@napi-rs/lzma-linux-s390x-gnu": "1.4.5", - "@napi-rs/lzma-linux-x64-gnu": "1.4.5", - "@napi-rs/lzma-linux-x64-musl": "1.4.5", - "@napi-rs/lzma-wasm32-wasi": "1.4.5", - "@napi-rs/lzma-win32-arm64-msvc": "1.4.5", - "@napi-rs/lzma-win32-ia32-msvc": "1.4.5", - "@napi-rs/lzma-win32-x64-msvc": "1.4.5" - } - }, - "node_modules/@napi-rs/lzma-android-arm-eabi": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-android-arm-eabi/-/lzma-android-arm-eabi-1.4.5.tgz", - "integrity": "sha512-Up4gpyw2SacmyKWWEib06GhiDdF+H+CCU0LAV8pnM4aJIDqKKd5LHSlBht83Jut6frkB0vwEPmAkv4NjQ5u//Q==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-android-arm64": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-android-arm64/-/lzma-android-arm64-1.4.5.tgz", - "integrity": "sha512-uwa8sLlWEzkAM0MWyoZJg0JTD3BkPknvejAFG2acUA1raXM8jLrqujWCdOStisXhqQjZ2nDMp3FV6cs//zjfuQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-darwin-arm64": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-darwin-arm64/-/lzma-darwin-arm64-1.4.5.tgz", - "integrity": "sha512-0Y0TQLQ2xAjVabrMDem1NhIssOZzF/y/dqetc6OT8mD3xMTDtF8u5BqZoX3MyPc9FzpsZw4ksol+w7DsxHrpMA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-darwin-x64": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-darwin-x64/-/lzma-darwin-x64-1.4.5.tgz", - "integrity": "sha512-vR2IUyJY3En+V1wJkwmbGWcYiT8pHloTAWdW4pG24+51GIq+intst6Uf6D/r46citObGZrlX0QvMarOkQeHWpw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-freebsd-x64": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-freebsd-x64/-/lzma-freebsd-x64-1.4.5.tgz", - "integrity": "sha512-XpnYQC5SVovO35tF0xGkbHYjsS6kqyNCjuaLQ2dbEblFRr5cAZVvsJ/9h7zj/5FluJPJRDojVNxGyRhTp4z2lw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-arm-gnueabihf": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-arm-gnueabihf/-/lzma-linux-arm-gnueabihf-1.4.5.tgz", - "integrity": "sha512-ic1ZZMoRfRMwtSwxkyw4zIlbDZGC6davC9r+2oX6x9QiF247BRqqT94qGeL5ZP4Vtz0Hyy7TEViWhx5j6Bpzvw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-arm64-gnu": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-arm64-gnu/-/lzma-linux-arm64-gnu-1.4.5.tgz", - "integrity": "sha512-asEp7FPd7C1Yi6DQb45a3KPHKOFBSfGuJWXcAd4/bL2Fjetb2n/KK2z14yfW8YC/Fv6x3rBM0VAZKmJuz4tysg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-arm64-musl": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-arm64-musl/-/lzma-linux-arm64-musl-1.4.5.tgz", - "integrity": "sha512-yWjcPDgJ2nIL3KNvi4536dlT/CcCWO0DUyEOlBs/SacG7BeD6IjGh6yYzd3/X1Y3JItCbZoDoLUH8iB1lTXo3w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-ppc64-gnu": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-ppc64-gnu/-/lzma-linux-ppc64-gnu-1.4.5.tgz", - "integrity": "sha512-0XRhKuIU/9ZjT4WDIG/qnX7Xz7mSQHYZo9Gb3MP2gcvBgr6BA4zywQ9k3gmQaPn9ECE+CZg2V7DV7kT+x2pUMQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-riscv64-gnu": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-riscv64-gnu/-/lzma-linux-riscv64-gnu-1.4.5.tgz", - "integrity": "sha512-QrqDIPEUUB23GCpyQj/QFyMlr8SGxxyExeZz9OWFnHfb70kXdTLWrHS/hEI1Ru+lSbQ/6xRqeoGyQ4Aqdg+/RA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-s390x-gnu": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-s390x-gnu/-/lzma-linux-s390x-gnu-1.4.5.tgz", - "integrity": "sha512-k8RVM5aMhW86E9H0QXdquwojew4H3SwPxbRVbl49/COJQWCUjGi79X6mYruMnMPEznZinUiT1jgKbFo2A00NdA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-x64-gnu": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.4.5.tgz", - "integrity": "sha512-6rMtBgnIq2Wcl1rQdZsnM+rtCcVCbws1nF8S2NzaUsVaZv8bjrPiAa0lwg4Eqnn1d9lgwqT+cZgm5m+//K08Kw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-linux-x64-musl": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-musl/-/lzma-linux-x64-musl-1.4.5.tgz", - "integrity": "sha512-eiadGBKi7Vd0bCArBUOO/qqRYPHt/VQVvGyYvDFt6C2ZSIjlD+HuOl+2oS1sjf4CFjK4eDIog6EdXnL0NE6iyQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-wasm32-wasi": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-wasm32-wasi/-/lzma-wasm32-wasi-1.4.5.tgz", - "integrity": "sha512-+VyHHlr68dvey6fXc2hehw9gHVFIW3TtGF1XkcbAu65qVXsA9D/T+uuoRVqhE+JCyFHFrO0ixRbZDRK1XJt1sA==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@napi-rs/lzma-win32-arm64-msvc": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-win32-arm64-msvc/-/lzma-win32-arm64-msvc-1.4.5.tgz", - "integrity": "sha512-eewnqvIyyhHi3KaZtBOJXohLvwwN27gfS2G/YDWdfHlbz1jrmfeHAmzMsP5qv8vGB+T80TMHNkro4kYjeh6Deg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-win32-ia32-msvc": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-win32-ia32-msvc/-/lzma-win32-ia32-msvc-1.4.5.tgz", - "integrity": "sha512-OeacFVRCJOKNU/a0ephUfYZ2Yt+NvaHze/4TgOwJ0J0P4P7X1mHzN+ig9Iyd74aQDXYqc7kaCXA2dpAOcH87Cg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/lzma-win32-x64-msvc": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-win32-x64-msvc/-/lzma-win32-x64-msvc-1.4.5.tgz", - "integrity": "sha512-T4I1SamdSmtyZgDXGAGP+y5LEK5vxHUFwe8mz6D4R7Sa5/WCxTcCIgPJ9BD7RkpO17lzhlaM2vmVvMy96Lvk9Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar/-/tar-1.1.0.tgz", - "integrity": "sha512-7cmzIu+Vbupriudo7UudoMRH2OA3cTw67vva8MxeoAe5S7vPFI7z0vp0pMXiA25S8IUJefImQ90FeJjl8fjEaQ==", - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/tar-android-arm-eabi": "1.1.0", - "@napi-rs/tar-android-arm64": "1.1.0", - "@napi-rs/tar-darwin-arm64": "1.1.0", - "@napi-rs/tar-darwin-x64": "1.1.0", - "@napi-rs/tar-freebsd-x64": "1.1.0", - "@napi-rs/tar-linux-arm-gnueabihf": "1.1.0", - "@napi-rs/tar-linux-arm64-gnu": "1.1.0", - "@napi-rs/tar-linux-arm64-musl": "1.1.0", - "@napi-rs/tar-linux-ppc64-gnu": "1.1.0", - "@napi-rs/tar-linux-s390x-gnu": "1.1.0", - "@napi-rs/tar-linux-x64-gnu": "1.1.0", - "@napi-rs/tar-linux-x64-musl": "1.1.0", - "@napi-rs/tar-wasm32-wasi": "1.1.0", - "@napi-rs/tar-win32-arm64-msvc": "1.1.0", - "@napi-rs/tar-win32-ia32-msvc": "1.1.0", - "@napi-rs/tar-win32-x64-msvc": "1.1.0" - } - }, - "node_modules/@napi-rs/tar-android-arm-eabi": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-android-arm-eabi/-/tar-android-arm-eabi-1.1.0.tgz", - "integrity": "sha512-h2Ryndraj/YiKgMV/r5by1cDusluYIRT0CaE0/PekQ4u+Wpy2iUVqvzVU98ZPnhXaNeYxEvVJHNGafpOfaD0TA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-android-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-android-arm64/-/tar-android-arm64-1.1.0.tgz", - "integrity": "sha512-DJFyQHr1ZxNZorm/gzc1qBNLF/FcKzcH0V0Vwan5P+o0aE2keQIGEjJ09FudkF9v6uOuJjHCVDdK6S6uHtShAw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-darwin-arm64/-/tar-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-Zz2sXRzjIX4e532zD6xm2SjXEym6MkvfCvL2RMpG2+UwNVDVscHNcz3d47Pf3sysP2e2af7fBB3TIoK2f6trPw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-darwin-x64/-/tar-darwin-x64-1.1.0.tgz", - "integrity": "sha512-EI+CptIMNweT0ms9S3mkP/q+J6FNZ1Q6pvpJOEcWglRfyfQpLqjlC0O+dptruTPE8VamKYuqdjxfqD8hifZDOA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-freebsd-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-freebsd-x64/-/tar-freebsd-x64-1.1.0.tgz", - "integrity": "sha512-J0PIqX+pl6lBIAckL/c87gpodLbjZB1OtIK+RDscKC9NLdpVv6VGOxzUV/fYev/hctcE8EfkLbgFOfpmVQPg2g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-arm-gnueabihf": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-arm-gnueabihf/-/tar-linux-arm-gnueabihf-1.1.0.tgz", - "integrity": "sha512-SLgIQo3f3EjkZ82ZwvrEgFvMdDAhsxCYjyoSuWfHCz0U16qx3SuGCp8+FYOPYCECHN3ZlGjXnoAIt9ERd0dEUg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-arm64-gnu": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-arm64-gnu/-/tar-linux-arm64-gnu-1.1.0.tgz", - "integrity": "sha512-d014cdle52EGaH6GpYTQOP9Py7glMO1zz/+ynJPjjzYFSxvdYx0byrjumZk2UQdIyGZiJO2MEFpCkEEKFSgPYA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-arm64-musl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-arm64-musl/-/tar-linux-arm64-musl-1.1.0.tgz", - "integrity": "sha512-L/y1/26q9L/uBqiW/JdOb/Dc94egFvNALUZV2WCGKQXc6UByPBMgdiEyW2dtoYxYYYYc+AKD+jr+wQPcvX2vrQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-ppc64-gnu": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-ppc64-gnu/-/tar-linux-ppc64-gnu-1.1.0.tgz", - "integrity": "sha512-EPE1K/80RQvPbLRJDJs1QmCIcH+7WRi0F73+oTe1582y9RtfGRuzAkzeBuAGRXAQEjRQw/RjtNqr6UTJ+8UuWQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-s390x-gnu": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-s390x-gnu/-/tar-linux-s390x-gnu-1.1.0.tgz", - "integrity": "sha512-B2jhWiB1ffw1nQBqLUP1h4+J1ovAxBOoe5N2IqDMOc63fsPZKNqF1PvO/dIem8z7LL4U4bsfmhy3gBfu547oNQ==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-x64-gnu": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-x64-gnu/-/tar-linux-x64-gnu-1.1.0.tgz", - "integrity": "sha512-tbZDHnb9617lTnsDMGo/eAMZxnsQFnaRe+MszRqHguKfMwkisc9CCJnks/r1o84u5fECI+J/HOrKXgczq/3Oww==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-linux-x64-musl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-linux-x64-musl/-/tar-linux-x64-musl-1.1.0.tgz", - "integrity": "sha512-dV6cODlzbO8u6Anmv2N/ilQHq/AWz0xyltuXoLU3yUyXbZcnWYZuB2rL8OBGPmqNcD+x9NdScBNXh7vWN0naSQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-wasm32-wasi": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-wasm32-wasi/-/tar-wasm32-wasi-1.1.0.tgz", - "integrity": "sha512-jIa9nb2HzOrfH0F8QQ9g3WE4aMH5vSI5/1NYVNm9ysCmNjCCtMXCAhlI3WKCdm/DwHf0zLqdrrtDFXODcNaqMw==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@napi-rs/tar-win32-arm64-msvc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-win32-arm64-msvc/-/tar-win32-arm64-msvc-1.1.0.tgz", - "integrity": "sha512-vfpG71OB0ijtjemp3WTdmBKJm9R70KM8vsSExMsIQtV0lVzP07oM1CW6JbNRPXNLhRoue9ofYLiUDk8bE0Hckg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-win32-ia32-msvc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-win32-ia32-msvc/-/tar-win32-ia32-msvc-1.1.0.tgz", - "integrity": "sha512-hGPyPW60YSpOSgzfy68DLBHgi6HxkAM+L59ZZZPMQ0TOXjQg+p2EW87+TjZfJOkSpbYiEkULwa/f4a2hcVjsqQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/tar-win32-x64-msvc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/tar-win32-x64-msvc/-/tar-win32-x64-msvc-1.1.0.tgz", - "integrity": "sha512-L6Ed1DxXK9YSCMyvpR8MiNAyKNkQLjsHsHK9E0qnHa8NzLFqzDKhvs5LfnWxM2kJ+F7m/e5n9zPm24kHb3LsVw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@napi-rs/wasm-tools": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools/-/wasm-tools-1.0.1.tgz", - "integrity": "sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==", - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/wasm-tools-android-arm-eabi": "1.0.1", - "@napi-rs/wasm-tools-android-arm64": "1.0.1", - "@napi-rs/wasm-tools-darwin-arm64": "1.0.1", - "@napi-rs/wasm-tools-darwin-x64": "1.0.1", - "@napi-rs/wasm-tools-freebsd-x64": "1.0.1", - "@napi-rs/wasm-tools-linux-arm64-gnu": "1.0.1", - "@napi-rs/wasm-tools-linux-arm64-musl": "1.0.1", - "@napi-rs/wasm-tools-linux-x64-gnu": "1.0.1", - "@napi-rs/wasm-tools-linux-x64-musl": "1.0.1", - "@napi-rs/wasm-tools-wasm32-wasi": "1.0.1", - "@napi-rs/wasm-tools-win32-arm64-msvc": "1.0.1", - "@napi-rs/wasm-tools-win32-ia32-msvc": "1.0.1", - "@napi-rs/wasm-tools-win32-x64-msvc": "1.0.1" - } - }, - "node_modules/@napi-rs/wasm-tools-android-arm-eabi": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-android-arm-eabi/-/wasm-tools-android-arm-eabi-1.0.1.tgz", - "integrity": "sha512-lr07E/l571Gft5v4aA1dI8koJEmF1F0UigBbsqg9OWNzg80H3lDPO+auv85y3T/NHE3GirDk7x/D3sLO57vayw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-android-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-android-arm64/-/wasm-tools-android-arm64-1.0.1.tgz", - "integrity": "sha512-WDR7S+aRLV6LtBJAg5fmjKkTZIdrEnnQxgdsb7Cf8pYiMWBHLU+LC49OUVppQ2YSPY0+GeYm9yuZWW3kLjJ7Bg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-darwin-arm64/-/wasm-tools-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-qWTI+EEkiN0oIn/N2gQo7+TVYil+AJ20jjuzD2vATS6uIjVz+Updeqmszi7zq7rdFTLp6Ea3/z4kDKIfZwmR9g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-darwin-x64/-/wasm-tools-darwin-x64-1.0.1.tgz", - "integrity": "sha512-bA6hubqtHROR5UI3tToAF/c6TDmaAgF0SWgo4rADHtQ4wdn0JeogvOk50gs2TYVhKPE2ZD2+qqt7oBKB+sxW3A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-freebsd-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-freebsd-x64/-/wasm-tools-freebsd-x64-1.0.1.tgz", - "integrity": "sha512-90+KLBkD9hZEjPQW1MDfwSt5J1L46EUKacpCZWyRuL6iIEO5CgWU0V/JnEgFsDOGyyYtiTvHc5bUdUTWd4I9Vg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-linux-arm64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-arm64-gnu/-/wasm-tools-linux-arm64-gnu-1.0.1.tgz", - "integrity": "sha512-rG0QlS65x9K/u3HrKafDf8cFKj5wV2JHGfl8abWgKew0GVPyp6vfsDweOwHbWAjcHtp2LHi6JHoW80/MTHm52Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-linux-arm64-musl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-arm64-musl/-/wasm-tools-linux-arm64-musl-1.0.1.tgz", - "integrity": "sha512-jAasbIvjZXCgX0TCuEFQr+4D6Lla/3AAVx2LmDuMjgG4xoIXzjKWl7c4chuaD+TI+prWT0X6LJcdzFT+ROKGHQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-linux-x64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-x64-gnu/-/wasm-tools-linux-x64-gnu-1.0.1.tgz", - "integrity": "sha512-Plgk5rPqqK2nocBGajkMVbGm010Z7dnUgq0wtnYRZbzWWxwWcXfZMPa8EYxrK4eE8SzpI7VlZP1tdVsdjgGwMw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-linux-x64-musl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-linux-x64-musl/-/wasm-tools-linux-x64-musl-1.0.1.tgz", - "integrity": "sha512-GW7AzGuWxtQkyHknHWYFdR0CHmW6is8rG2Rf4V6GNmMpmwtXt/ItWYWtBe4zqJWycMNazpfZKSw/BpT7/MVCXQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-wasm32-wasi": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-wasm32-wasi/-/wasm-tools-wasm32-wasi-1.0.1.tgz", - "integrity": "sha512-/nQVSTrqSsn7YdAc2R7Ips/tnw5SPUcl3D7QrXCNGPqjbatIspnaexvaOYNyKMU6xPu+pc0BTnKVmqhlJJCPLA==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@napi-rs/wasm-tools-win32-arm64-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-win32-arm64-msvc/-/wasm-tools-win32-arm64-msvc-1.0.1.tgz", - "integrity": "sha512-PFi7oJIBu5w7Qzh3dwFea3sHRO3pojMsaEnUIy22QvsW+UJfNQwJCryVrpoUt8m4QyZXI+saEq/0r4GwdoHYFQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-win32-ia32-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-win32-ia32-msvc/-/wasm-tools-win32-ia32-msvc-1.0.1.tgz", - "integrity": "sha512-gXkuYzxQsgkj05Zaq+KQTkHIN83dFAwMcTKa2aQcpYPRImFm2AQzEyLtpXmyCWzJ0F9ZYAOmbSyrNew8/us6bw==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-tools-win32-x64-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-tools-win32-x64-msvc/-/wasm-tools-win32-x64-msvc-1.0.1.tgz", - "integrity": "sha512-rEAf05nol3e3eei2sRButmgXP+6ATgm0/38MKhz9Isne82T4rPIMYsCIFj0kOisaGeVwoi2fnm7O9oWp5YVnYQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@octokit/auth-token": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", - "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/core": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", - "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.3", - "@octokit/request": "^10.0.6", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "before-after-hook": "^4.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/endpoint": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", - "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/graphql": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", - "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", - "license": "MIT", - "dependencies": { - "@octokit/request": "^10.0.6", - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", - "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", - "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", - "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==", - "license": "MIT", - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", - "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/request": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.10.tgz", - "integrity": "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^11.0.3", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "content-type": "^2.0.0", - "json-with-bigint": "^3.5.3", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/request-error": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", - "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/rest": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz", - "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==", - "license": "MIT", - "dependencies": { - "@octokit/core": "^7.0.6", - "@octokit/plugin-paginate-rest": "^14.0.0", - "@octokit/plugin-request-log": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^17.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", - "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^27.0.0" - } - }, - "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.71.0.tgz", - "integrity": "sha512-ImGmd1njEg4FEJH03jhRnveEegtO3czCtfptvaHivKAZQIYATbVFBrrzbaYMYv0oJioTnxZAZVSyV+oL7W8S2g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-android-arm64": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.71.0.tgz", - "integrity": "sha512-4A5BEexBrwY1YFF8Kiq/lp/wQPRG79G3BWIE1FuWaM5MvmpYSd+7ZySVcKkHdwo0UDzdQGddp6pD9mpctMqLnw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.71.0.tgz", - "integrity": "sha512-9wJA9GJulLwS2usU3CEisI/ESDO1n1z9eyTCvApMDrAkbJ1ve0mORgTMjcWWsKxkzkeZ2N/Gpra5IQE7x8tYgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.71.0.tgz", - "integrity": "sha512-PlLCjS06V0PeJMAJwzjrExw1sYNW9Gch3JtNlcwwZDXGlTYDuwHNN89zYH8LTXFfgkVtsYvs2nv0FqrzyuFDzg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.71.0.tgz", - "integrity": "sha512-Lhil7bWre0ncxbUoDoxfS0JzpTz17BRQKW7iwoAUY8GJ66+WwJEfYPCFJ1P0WgVZR5/O/b3Q2pENlHOjeXLOGQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.71.0.tgz", - "integrity": "sha512-Oo9/L58PYD3RC0x05d2upAPLllHytTjHQGsnC06P6Ynn7jKkp5mdImQxXdJ3+FnBaKspNpGogzgVsi6g872LiA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.71.0.tgz", - "integrity": "sha512-mSHfyfgJrEbyIR29ejaeS50BdPk+GoNPlC1dckpDiUZbJAIel68sjSMdOt4WY0/gva+ECC7FNITQkxMJU+vSBw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.71.0.tgz", - "integrity": "sha512-n9yY4M2tiy3aij4AqtlnspzpfdpeT5JQfK2/w2d8oyp5W0FRwOb1dIeX99nORNcxGr08iD9bH8N5XFz3I2iy8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.71.0.tgz", - "integrity": "sha512-fJZrs5sDZtTaPIOiemRQQmo82Ezy+vOGXemPc4Ok7iVVsYsFa7SlW6Z5XN819VfsqBHRm3NJ3rTdnR8+bJYJdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.71.0.tgz", - "integrity": "sha512-cwl7VKGERIy9p+G+AvZdfy/06q0aHXaTt/mMRReC751iuNYJgqKjB7NydXSS30nBT9vtr2tunciOtrR4fD6FUA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.71.0.tgz", - "integrity": "sha512-eZ8ieVXvzGi8jr7+ybQGPK2STw3mldfxZlgA2738iflfB/rzA69sE6m5rDRpQaxC7dpm745Enlh1Tod0QAk9Gg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.71.0.tgz", - "integrity": "sha512-puMDbQYe6+NXwfMusojoA7CXGn2b3utukmd23PQqc1E3XhVCwyZ+FueSMzDYeNgDV2dUfIVXAAKZBcFDeCL6sA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.71.0.tgz", - "integrity": "sha512-4NJLxBs1ujISCt3L/1FcywLs73PWtJuw+piD6feK2V6h6OS6P7xu9/sWt1DTRLibe6QCzmfZzmM/2HPORoV/Lg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.71.0.tgz", - "integrity": "sha512-cFDaiR8L3430qp88tfZnvFlt3KotFhR/DlbIL0nHOMMYiG/9Wy4l+6f7t8G8pTa9bd8Lt8+M0y/qjRQ/xcB74g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.71.0.tgz", - "integrity": "sha512-orfixdt76KlpNly9z0PkWBBNfwjKz+JFVLP/7wnVchlKNU9Dpt9InU/ZggeSej6fC7qwHmHNOGlhLnQXcYoGuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.71.0.tgz", - "integrity": "sha512-9emQu2lAp6yhPB3XuI+++vR+l/o6JR1X+EpxwcumPdQXBWXEPAsquPGL7l158EqU8SebQMXTUa/S5zN98juyHw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.71.0.tgz", - "integrity": "sha512-bd5kI8spYwTm3BILDtGhi73zoup5dw8MlPQNT8YB3BD5UIsjNe3K9/4ctrzQMX4SZMoK5HgzVLkLJzacEXB7fA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.71.0.tgz", - "integrity": "sha512-W4HvOHGzVLHcrmFu+bMrJlho+/yrlX5ZNdJZqGe8MEldkQG+RHYhxxad9P4jvWAYFmIqUA5i9DQ8QsJqSU9GIw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.71.0.tgz", - "integrity": "sha512-D2kyEIPHk/G/wiZLnwTVC/sVst+T/lKldVOjAFpgTIBUAOlry72e5OiapDbDBF4LfJLkN5ypJb/8Eu6yJzkveQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/before-after-hook": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", - "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", - "license": "Apache-2.0" - }, - "node_modules/chardet": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz", - "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==", - "license": "MIT" - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/clipanion": { - "version": "4.0.0-rc.4", - "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-4.0.0-rc.4.tgz", - "integrity": "sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==", - "license": "MIT", - "workspaces": [ - "website" - ], - "dependencies": { - "typanion": "^3.8.0" - }, - "peerDependencies": { - "typanion": "*" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, - "node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/emnapi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/emnapi/-/emnapi-1.11.1.tgz", - "integrity": "sha512-kSRjhIcxjMFsBqk7ORvoc9aA5SBKDmecrtF5RMcmOTao0kD/zamaxsuTxMI8C1//wGUuvE7a+19pCE7AEhGVnA==", - "license": "MIT", - "peerDependencies": { - "node-addon-api": ">= 6.1.0" - }, - "peerDependenciesMeta": { - "node-addon-api": { - "optional": true - } - } - }, - "node_modules/es-toolkit": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz", - "integrity": "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, - "node_modules/fast-string-truncated-width": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", - "license": "MIT" - }, - "node_modules/fast-string-width": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", - "license": "MIT", - "dependencies": { - "fast-string-truncated-width": "^3.0.2" - } - }, - "node_modules/fast-wrap-ansi": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", - "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", - "license": "MIT", - "dependencies": { - "fast-string-width": "^3.0.2" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/js-yaml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", - "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-with-bigint": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz", - "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==", - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", - "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/obug": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", - "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT", - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/oxlint": { - "version": "1.71.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.71.0.tgz", - "integrity": "sha512-U1m1X+C0vDj7DC1e13IoZULzEcPczE7UOMTs8VlZGHUEIUaSTZKo5qkPsQEfzpgnQ29Pea/w3Xntk62UCecxZw==", - "dev": true, - "license": "MIT", - "bin": { - "oxlint": "bin/oxlint" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/sponsors/Boshen" - }, - "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.71.0", - "@oxlint/binding-android-arm64": "1.71.0", - "@oxlint/binding-darwin-arm64": "1.71.0", - "@oxlint/binding-darwin-x64": "1.71.0", - "@oxlint/binding-freebsd-x64": "1.71.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.71.0", - "@oxlint/binding-linux-arm-musleabihf": "1.71.0", - "@oxlint/binding-linux-arm64-gnu": "1.71.0", - "@oxlint/binding-linux-arm64-musl": "1.71.0", - "@oxlint/binding-linux-ppc64-gnu": "1.71.0", - "@oxlint/binding-linux-riscv64-gnu": "1.71.0", - "@oxlint/binding-linux-riscv64-musl": "1.71.0", - "@oxlint/binding-linux-s390x-gnu": "1.71.0", - "@oxlint/binding-linux-x64-gnu": "1.71.0", - "@oxlint/binding-linux-x64-musl": "1.71.0", - "@oxlint/binding-openharmony-arm64": "1.71.0", - "@oxlint/binding-win32-arm64-msvc": "1.71.0", - "@oxlint/binding-win32-ia32-msvc": "1.71.0", - "@oxlint/binding-win32-x64-msvc": "1.71.0" - }, - "peerDependencies": { - "oxlint-tsgolint": ">=0.22.1", - "vite-plus": "*" - }, - "peerDependenciesMeta": { - "oxlint-tsgolint": { - "optional": true - }, - "vite-plus": { - "optional": true - } - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true - }, - "node_modules/typanion": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.14.0.tgz", - "integrity": "sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==", - "license": "MIT", - "workspaces": [ - "website" - ] - }, - "node_modules/universal-user-agent": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", - "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", - "license": "ISC" - } - } -} diff --git a/package.json b/package.json index ab4a19c..7457b47 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,65 @@ { - "name": "zig-napi", + "name": "zig-napi-workspace", "version": "0.1.0", "private": true, - "description": "CLI tools and Zig helpers for building Node.js addons with zig-napi.", - "bin": { - "zig-napi": "bin/zig-napi.js" - }, - "files": [ - "bin", - "templates", - "src", - "build.zig", - "build.zig.zon", - "README.md", - "LICENSE" - ], + "packageManager": "pnpm@10.24.0", "scripts": { - "format": "oxk format $(git ls-files '*.js' '*.jsx' '*.ts' '*.tsx' '*.ets')", - "lint": "oxlint . --deny-warnings", - "lint:fix": "oxlint . --fix", - "zig-napi": "node bin/zig-napi.js", - "node-example:build": "node bin/zig-napi.js build --cwd examples/node -- --summary all", - "node-example:create-npm-dirs": "node bin/zig-napi.js create-npm-dirs --cwd examples/node", - "node-example:artifacts": "node bin/zig-napi.js artifacts --cwd examples/node --output-dir zig-out/node", - "node-example:pre-publish": "node bin/zig-napi.js pre-publish --cwd examples/node --no-gh-release --skip-optional-publish", - "node-example:package": "node bin/zig-napi.js package --cwd examples/node" - }, - "dependencies": { - "@napi-rs/cli": "^3.7.2" + "init": "pnpm run init:check && pnpm run init:hooks", + "init:check": "pnpm exec prek validate-config prek.toml", + "init:hooks": "pnpm exec prek install --config prek.toml --hook-type pre-commit --prepare-hooks --overwrite", + "build": "zig build --summary all", + "check:zig": "pnpm run build", + "build:examples": "pnpm run build:example:allocator-builtin && pnpm run build:example:allocator-custom && pnpm run build:example:basic && pnpm run build:example:benchmark && pnpm run build:example:init && pnpm run build:example:memory", + "build:example:allocator-builtin": "pnpm run build:example:allocator-builtin:ohos-arm64 && pnpm run build:example:allocator-builtin:ohos-arm && pnpm run build:example:allocator-builtin:ohos-x64", + "build:example:allocator-builtin:ohos-arm64": "zig build --build-file examples/allocator-builtin/build.zig -Dtarget=aarch64-linux-ohos", + "build:example:allocator-builtin:ohos-arm": "zig build --build-file examples/allocator-builtin/build.zig -Dtarget=arm-linux-ohoseabi", + "build:example:allocator-builtin:ohos-x64": "zig build --build-file examples/allocator-builtin/build.zig -Dtarget=x86_64-linux-ohos", + "build:example:allocator-custom": "pnpm run build:example:allocator-custom:ohos-arm64 && pnpm run build:example:allocator-custom:ohos-arm && pnpm run build:example:allocator-custom:ohos-x64", + "build:example:allocator-custom:ohos-arm64": "zig build --build-file examples/allocator-custom/build.zig -Dtarget=aarch64-linux-ohos", + "build:example:allocator-custom:ohos-arm": "zig build --build-file examples/allocator-custom/build.zig -Dtarget=arm-linux-ohoseabi", + "build:example:allocator-custom:ohos-x64": "zig build --build-file examples/allocator-custom/build.zig -Dtarget=x86_64-linux-ohos", + "build:example:basic": "pnpm run build:example:basic:ohos-arm64 && pnpm run build:example:basic:ohos-arm && pnpm run build:example:basic:ohos-x64", + "build:example:basic:ohos-arm64": "zig build --build-file examples/basic/build.zig -Dtarget=aarch64-linux-ohos", + "build:example:basic:ohos-arm": "zig build --build-file examples/basic/build.zig -Dtarget=arm-linux-ohoseabi", + "build:example:basic:ohos-x64": "zig build --build-file examples/basic/build.zig -Dtarget=x86_64-linux-ohos", + "build:example:benchmark": "pnpm run build:example:benchmark:ohos-arm64 && pnpm run build:example:benchmark:ohos-arm && pnpm run build:example:benchmark:ohos-x64", + "build:example:benchmark:ohos-arm64": "zig build --build-file examples/benchmark/build.zig -Dtarget=aarch64-linux-ohos", + "build:example:benchmark:ohos-arm": "zig build --build-file examples/benchmark/build.zig -Dtarget=arm-linux-ohoseabi", + "build:example:benchmark:ohos-x64": "zig build --build-file examples/benchmark/build.zig -Dtarget=x86_64-linux-ohos", + "build:example:init": "pnpm run build:example:init:ohos-arm64 && pnpm run build:example:init:ohos-arm && pnpm run build:example:init:ohos-x64", + "build:example:init:ohos-arm64": "zig build --build-file examples/init/build.zig -Dtarget=aarch64-linux-ohos", + "build:example:init:ohos-arm": "zig build --build-file examples/init/build.zig -Dtarget=arm-linux-ohoseabi", + "build:example:init:ohos-x64": "zig build --build-file examples/init/build.zig -Dtarget=x86_64-linux-ohos", + "build:example:memory": "pnpm run build:example:memory:ohos-arm64 && pnpm run build:example:memory:ohos-arm && pnpm run build:example:memory:ohos-x64", + "build:example:memory:ohos-arm64": "zig build --build-file examples/memory/build.zig -Dtarget=aarch64-linux-ohos", + "build:example:memory:ohos-arm": "zig build --build-file examples/memory/build.zig -Dtarget=arm-linux-ohoseabi", + "build:example:memory:ohos-x64": "zig build --build-file examples/memory/build.zig -Dtarget=x86_64-linux-ohos", + "build:node-example": "pnpm run node-example:build", + "test:node-example": "pnpm run node-example:test", + "node-example:build": "pnpm --filter zig-napi-node-example run build", + "node-example:test": "pnpm --filter zig-napi-node-example run test", + "node-example:create-npm-dirs": "pnpm --filter zig-napi-node-example run create-npm-dirs", + "node-example:artifacts": "pnpm --filter zig-napi-node-example run artifacts", + "node-example:pre-publish": "pnpm --filter zig-napi-node-example run pre-publish", + "node-example:package": "pnpm --filter zig-napi-node-example run package", + "node-example:clean": "pnpm --filter zig-napi-node-example run clean", + "test:node-matrix": "pnpm --filter zig-napi-node-test run test", + "test:node-matrix:build": "pnpm --filter zig-napi-node-test run build:test", + "test:node-matrix:build:windows": "pnpm --filter zig-napi-node-test run build:test:windows", + "test:node-matrix:run": "pnpm --filter zig-napi-node-test run test:run", + "format": "pnpm run format:zig && pnpm run format:js", + "format:zig": "zig fmt build.zig build.zig.zon src benchmark examples node-test test packages/zig-napi", + "format:js": "pnpm exec oxk format benchmark examples memory-testing node-test packages/zig-napi test website/src website/vite.config.ts", + "lint": "pnpm exec oxlint . --deny-warnings", + "lint:fix": "pnpm exec oxlint . --fix", + "precommit": "pnpm run build:examples && pnpm run format && pnpm run lint", + "website:dev": "pnpm --filter zig-napi-website run dev", + "website:build": "pnpm --filter zig-napi-website run build", + "website:preview": "pnpm --filter zig-napi-website run preview" }, "devDependencies": { + "@j178/prek": "^0.4.5", + "@ohos-rs/oxk": "^0.6.0", "oxlint": "^1.71.0" }, "license": "MIT" diff --git a/packages/zig-napi/bin/zig-napi.js b/packages/zig-napi/bin/zig-napi.js new file mode 100755 index 0000000..fa44e36 --- /dev/null +++ b/packages/zig-napi/bin/zig-napi.js @@ -0,0 +1,393 @@ +#!/usr/bin/env node + +const childProcess = require("node:child_process"); +const fs = require("node:fs"); +const path = require("node:path"); +const { NapiCli } = require("@napi-rs/cli"); +const { Command } = require("commander"); + +const packageDir = path.resolve(__dirname, ".."); +const workspaceRoot = path.resolve(packageDir, "..", ".."); +const templateDir = path.join(packageDir, "templates", "node-addon"); +const napiCli = new NapiCli(); + +const availableTargets = [ + "aarch64-apple-darwin", + "aarch64-linux-android", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "aarch64-unknown-linux-ohos", + "aarch64-pc-windows-msvc", + "x86_64-apple-darwin", + "x86_64-pc-windows-msvc", + "x86_64-pc-windows-gnu", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "x86_64-unknown-linux-ohos", + "x86_64-unknown-freebsd", + "i686-pc-windows-msvc", + "armv7-unknown-linux-gnueabihf", + "armv7-unknown-linux-musleabihf", + "armv7-linux-androideabi", + "universal-apple-darwin", + "loongarch64-unknown-linux-gnu", + "riscv64gc-unknown-linux-gnu", + "powerpc64le-unknown-linux-gnu", + "s390x-unknown-linux-gnu", + "wasm32-wasi-preview1-threads", + "wasm32-wasip1-threads", +]; + +const defaultTargets = [ + "x86_64-apple-darwin", + "aarch64-apple-darwin", + "x86_64-pc-windows-msvc", + "x86_64-unknown-linux-gnu", +]; + +function fail(message) { + console.error(`zig-napi: ${message}`); + process.exit(1); +} + +function run(command, args, options = {}) { + const result = childProcess.spawnSync(command, args, { + cwd: options.cwd || process.cwd(), + stdio: "inherit", + shell: process.platform === "win32", + }); + if (result.error) fail(result.error.message); + if (result.status !== 0) process.exit(result.status || 1); +} + +function normalizePathForZig(value) { + return value.split(path.sep).join("/"); +} + +function sanitizePackageName(input) { + return input + .replace(/[^a-zA-Z0-9@/_-]+/g, "-") + .replace(/^-+|-+$/g, "") + .toLowerCase(); +} + +function packageLeafName(input) { + return input.startsWith("@") ? input.split("/").pop() : input; +} + +function sanitizeZigName(input) { + const value = packageLeafName(sanitizePackageName(input)).replace(/-/g, "_"); + return /^[a-zA-Z_]/.test(value) ? value : `addon_${value}`; +} + +function collectTargets(value, previous) { + return previous.concat( + value + .split(",") + .map((target) => target.trim()) + .filter(Boolean), + ); +} + +function resolveNewTargets(flags) { + const targets = flags.enableAllTargets + ? availableTargets + : flags.targets.length + ? flags.targets + : flags.enableDefaultTargets + ? defaultTargets + : []; + + if (!targets.length) { + fail("at least one target must be enabled"); + } + + const seen = new Set(); + for (const target of targets) { + if (!availableTargets.includes(target)) { + fail(`unknown target: ${target}`); + } + if (seen.has(target)) { + fail(`duplicate target: ${target}`); + } + seen.add(target); + } + + return targets; +} + +function formatJsonStringArrayItems(values, indent) { + return values.map((value) => `${indent}${JSON.stringify(value)}`).join(",\n"); +} + +function copyTemplate(from, to, replacements) { + const stat = fs.statSync(from); + if (stat.isDirectory()) { + fs.mkdirSync(to, { recursive: true }); + for (const entry of fs.readdirSync(from)) { + copyTemplate(path.join(from, entry), path.join(to, entry), replacements); + } + return; + } + + let outputPath = to; + for (const [key, value] of Object.entries(replacements)) { + outputPath = outputPath.replaceAll(key, value); + } + + let text = fs.readFileSync(from, "utf8"); + for (const [key, value] of Object.entries(replacements)) { + text = text.replaceAll(key, value); + } + fs.writeFileSync(outputPath, text); +} + +function repairZigFingerprint(projectDir) { + const zonPath = path.join(projectDir, "build.zig.zon"); + const result = childProcess.spawnSync("zig", ["build"], { + cwd: projectDir, + encoding: "utf8", + stdio: "pipe", + shell: process.platform === "win32", + }); + const output = `${result.stdout || ""}\n${result.stderr || ""}`; + const match = output.match(/use this value:\s*(0x[0-9a-fA-F]+)/); + if (!match) { + if (result.error) { + console.warn( + `zig-napi: unable to calculate build.zig.zon fingerprint: ${result.error.message}`, + ); + } + return; + } + const zon = fs.readFileSync(zonPath, "utf8"); + fs.writeFileSync( + zonPath, + zon.replace(/\.fingerprint = 0x[0-9a-fA-F]+,/, `.fingerprint = ${match[1]},`), + ); +} + +function napiOptions(flags) { + return { + cwd: path.resolve(process.cwd(), flags.cwd || "."), + configPath: flags.configPath, + packageJsonPath: flags.packageJsonPath, + npmDir: flags.npmDir, + outputDir: flags.outputDir, + buildOutputDir: flags.buildOutputDir, + tagStyle: flags.tagStyle, + ghRelease: flags.ghRelease, + ghReleaseName: flags.ghReleaseName, + ghReleaseId: flags.ghReleaseId, + skipOptionalPublish: flags.skipOptionalPublish, + dryRun: flags.dryRun, + }; +} + +function cleanOptions(options) { + return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== undefined)); +} + +function commandNew(projectDir, flags) { + const targetDir = path.resolve(process.cwd(), projectDir); + if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length && !flags.force) { + fail(`${targetDir} is not empty; pass --force to write into it`); + } + + const packageName = flags.name || sanitizePackageName(path.basename(targetDir)); + const addonName = flags.addon || sanitizeZigName(packageName); + const zigNapiNpmPath = flags.zigNapi || path.relative(targetDir, packageDir) || "."; + const zigNapiZigPath = flags.zigNapi || path.relative(targetDir, workspaceRoot) || "."; + const targets = resolveNewTargets(flags); + + fs.mkdirSync(targetDir, { recursive: true }); + copyTemplate(templateDir, targetDir, { + __PACKAGE_NAME__: packageName, + __ADDON_NAME__: addonName, + __ZIG_PACKAGE_NAME__: sanitizeZigName(packageName), + __ZIG_NAPI_NPM_PATH__: normalizePathForZig(zigNapiNpmPath), + __ZIG_NAPI_ZIG_PATH__: normalizePathForZig(zigNapiZigPath), + ' "__NAPI_TARGETS__"': formatJsonStringArrayItems(targets, " "), + __FINGERPRINT__: "0x0", + }); + repairZigFingerprint(targetDir); + + console.log(`Created ${packageName} in ${targetDir}`); +} + +function commandBuild(flags, passthrough = []) { + const cwd = path.resolve(process.cwd(), flags.cwd || "."); + const args = ["build"]; + if (flags.release) args.push("-Doptimize=ReleaseFast"); + if (flags.target) args.push(`-Dtarget=${flags.target}`); + args.push(...passthrough); + run("zig", args, { cwd }); +} + +function commandDts(flags, passthrough = []) { + const cwd = path.resolve(process.cwd(), flags.cwd || "."); + run("zig", ["build", ...passthrough], { cwd }); +} + +async function commandCreateNpmDirs(flags) { + await napiCli.createNpmDirs( + cleanOptions({ + cwd: path.resolve(process.cwd(), flags.cwd || "."), + configPath: flags.configPath, + packageJsonPath: flags.packageJsonPath, + npmDir: flags.npmDir, + dryRun: flags.dryRun, + }), + ); +} + +async function commandArtifacts(flags) { + await napiCli.artifacts(cleanOptions(napiOptions(flags))); +} + +async function commandPrePublish(flags) { + await napiCli.prePublish(cleanOptions(napiOptions(flags))); +} + +async function commandPackage(flags) { + const cwd = path.resolve(process.cwd(), flags.cwd || "."); + await napiCli.createNpmDirs( + cleanOptions({ + cwd, + configPath: flags.configPath, + packageJsonPath: flags.packageJsonPath, + npmDir: flags.npmDir, + dryRun: flags.dryRun, + }), + ); + commandBuild({ cwd, release: flags.release, target: flags.target }); + await napiCli.artifacts( + cleanOptions({ + cwd, + configPath: flags.configPath, + packageJsonPath: flags.packageJsonPath, + outputDir: flags.outputDir || "zig-out/node", + npmDir: flags.npmDir, + buildOutputDir: flags.buildOutputDir, + }), + ); +} + +function addCwdOption(command) { + return command.option("--cwd ", "project directory", "."); +} + +function addBuildOptions(command) { + return addBuildFlags(addCwdOption(command)); +} + +function addBuildFlags(command) { + return command + .option("--release", "build with ReleaseFast optimization") + .option("--target ", "Zig target triple"); +} + +function addNapiPathOptions(command) { + return addCwdOption(command) + .option("--config-path ", "path to napi config") + .option("--package-json-path ", "path to package.json") + .option("--npm-dir ", "npm package directory"); +} + +function addNapiOptions(command) { + return addNapiPathOptions(command) + .option("--output-dir ", "Zig build output directory") + .option("--build-output-dir ", "build output directory") + .option("--tag-style