diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..dab4648 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,98 @@ +name: Release + +# Release channel is driven by the branch you merge into: +# main -> production (dist-tag: latest) +# dev -> beta (dist-tag: beta) version must be a -beta.x prerelease +# any -> next (dist-tag: next) whenever the version contains -next.x +# A merge only publishes when the version in package.json is NOT already on npm, +# so ordinary merges that don't bump the version are no-ops. +on: + push: + branches: [main, dev] + +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: false + +# No secrets. Publishing uses npm Trusted Publishing (OIDC) — there is no +# NPM_TOKEN in this repo to steal. id-token mints a short-lived identity npm +# verifies against the trusted publisher configured on npmjs.com for this exact +# repo + workflow. contents:write is only for the tag + GitHub release notes. +permissions: {} + +jobs: + release: + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: https://registry.npmjs.org + + # Trusted Publishing needs npm >= 11.5.1; Node 22 ships an older npm. + - run: npm install -g npm@latest + + - run: pnpm install --frozen-lockfile + + # Decide the dist-tag from branch + version, or skip if this channel/version + # combination is not allowed. Enforces: production only from main, beta only + # from dev, next from anywhere. + - name: Resolve release channel + id: channel + working-directory: packages/sveltekit-og + run: | + NAME=$(node -p "require('./package.json').name") + VERSION=$(node -p "require('./package.json').version") + BRANCH="${GITHUB_REF_NAME}" + echo "name=$NAME"; echo "version=$VERSION"; echo "branch=$BRANCH" + + if [[ "$VERSION" == *-next.* ]]; then + TAG=next + elif [[ "$BRANCH" == "dev" && "$VERSION" == *-beta.* ]]; then + TAG=beta + elif [[ "$BRANCH" == "main" && "$VERSION" != *-* ]]; then + TAG=latest + else + echo "No release: version '$VERSION' is not valid for branch '$BRANCH'." >> "$GITHUB_STEP_SUMMARY" + echo "publish=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + # Skip if this exact version is already on npm (merge didn't bump it). + if npm view "$NAME@$VERSION" version >/dev/null 2>&1; then + echo "$NAME@$VERSION already published — skipping." >> "$GITHUB_STEP_SUMMARY" + echo "publish=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "publish=true" >> "$GITHUB_OUTPUT" + echo "tag=$TAG" >> "$GITHUB_OUTPUT" + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + + # Build runs via the package's prepublishOnly. --provenance signs a build attestation. + - name: Publish to npm + if: steps.channel.outputs.publish == 'true' + working-directory: packages/sveltekit-og + run: | + echo "Publishing ${{ steps.channel.outputs.version }} with dist-tag: ${{ steps.channel.outputs.tag }}" + npm publish --provenance --tag "${{ steps.channel.outputs.tag }}" + + # Tag the release commit and generate GitHub release notes from conventional commits. + - name: Tag + GitHub release notes + if: steps.channel.outputs.publish == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + TAG="v${{ steps.channel.outputs.version }}" + git tag "$TAG" + git push origin "$TAG" + npx changelogithub diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 33c4e74..2dabb09 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,10 +25,10 @@ If you have an idea for a new feature or an improvement to an existing one, plea If you would like to contribute code to the project, please follow these steps: -1. Fork the repository and create a `new branch` from `main`. +1. Fork the repository and create a `new branch` from `dev`. 2. Make your changes and commit them with a clear and descriptive commit message. 3. Push your changes to your fork. -4. Open a pull request to the `main` branch of the SvelteKit OG repository. +4. Open a pull request to the `dev` branch of the SvelteKit OG repository. (`main` is the release branch — see [Releasing](#releasing).) Please make sure your pull request includes: @@ -55,6 +55,75 @@ npm run lint npm run format ``` +## Releasing + +> For maintainers. Releases are automated by `.github/workflows/release.yml` and published to npm via **Trusted Publishing (OIDC)** — there is no `NPM_TOKEN` stored in the repo. + +**The version string in `packages/sveltekit-og/package.json` decides the npm dist-tag; the branch decides whether that release is allowed:** + +| Branch | Version | Published to | +| ------ | ----------------- | ---------------- | +| `main` | clean (`4.4.0`) | `latest` (prod) | +| `dev` | `-beta.x` | `beta` | +| any | `-next.x` | `next` | + +Any other branch/version combination does **not** publish. A push/merge only publishes when the version is not already on npm — merges that don't bump the version are no-ops. + +Bump the version with the interactive helper (it commits and pushes to the current branch; the CI creates the git tag): + +```bash +pnpm release +``` + +### Beta + +```bash +git checkout dev +pnpm release # pick a -beta version, e.g. 4.4.0-beta.0 +``` + +Pushing to `dev` publishes `@beta`. Install with `npm i @ethercorps/sveltekit-og@beta`. + +### Next (experimental preview) + +```bash +pnpm release # pick a -next version, e.g. 4.4.0-next.0 +``` + +Publishes `@next` from any branch. Use for throwaway previews you don't want on `@beta`. + +### Production + +Bump to a clean version on `dev` (this is a no-op publish), then merge `dev` → `main`: + +```bash +git checkout dev +pnpm release # pick the clean release, e.g. 4.4.0 +git push origin dev + +git checkout main +git merge --ff-only dev # or merge the dev → main PR +git push origin main +``` + +Pushing the clean version to `main` publishes `@latest`. + +> Do **not** bump the clean version directly on `main` during a beta cycle — bump on `dev` and merge, so `main` always matches what's on `@latest`. + +### Hotfix + +```bash +git checkout -b hotfix main +# fix, then: +pnpm release # e.g. 4.4.1 +git checkout main && git merge --ff-only hotfix && git push origin main +git checkout dev && git merge main && git push origin dev # keep dev in sync +``` + +### One-time setup + +Trusted Publishing must be configured once on npmjs.com → the package → **Settings → Trusted Publishing**: add a GitHub Actions publisher for repo `ethercorps/sveltekit-og`, workflow `release.yml`. Without it, publishing fails (by design — npm only trusts that exact repo + workflow). + ## Code of Conduct This project and everyone participating in it is governed by the [SvelteKit OG Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [ethercorps@gmail.com](mailto:ethercorps@gmail.com). diff --git a/apps/docs/src/content/runtime/deno.md b/apps/docs/src/content/runtime/deno.md index 16717cd..e0380ef 100644 --- a/apps/docs/src/content/runtime/deno.md +++ b/apps/docs/src/content/runtime/deno.md @@ -135,3 +135,21 @@ NotFound: No such file or directory (os error 2): open '_app/immutable/assets/Je ``` + + + +A prerendered image endpoint — a `+server.ts` with `export const prerender = true` that returns an image — is generated at build time and written into the deploy output as a static file (e.g. `static/png/prerendered.png`). On most hosts this just works, because they serve the static directory straight from the filesystem. + +Deno Deploy is different: it serves static assets from an explicit route manifest, not by scanning the filesystem. The current Deno adapter only registers prerendered **pages** in that manifest — prerendered **endpoints** (image/asset routes) are written to disk but never added — so the file is orphaned and requesting the route (e.g. `/png/prerendered.png`) returns a **404**. + +Until this is fixed upstream, either patch the adapter to also register `builder.prerendered.assets` in `staticFiles` (see [the patch used by this repo](https://github.com/etherCorps/sveltekit-og/blob/main/patches/%40deno__svelte-adapter%400.2.1.patch) via [`pnpm patch`](https://pnpm.io/cli/patch)), or **don't prerender image endpoints on Deno** — serve them dynamically by dropping `export const prerender = true`: + +```typescript title="routes/png/og.png/+server.ts" +// export const prerender = true; // ← remove on Deno Deploy + +export const GET = async () => new ImageResponse(template, { width: 1200, height: 630 }); +``` + +Satori and Takumi both generate images fast enough at request time. To avoid regenerating on every hit, cache with a `Cache-Control` header on the response or Deno Deploy's ISR. + + diff --git a/apps/docs/src/content/usage/takumi.md b/apps/docs/src/content/usage/takumi.md index 68da375..28a6b99 100644 --- a/apps/docs/src/content/usage/takumi.md +++ b/apps/docs/src/content/usage/takumi.md @@ -21,7 +21,7 @@ Reach for Takumi when you want: -Takumi support is available from `sveltekit-og@v4.3.0`. While v4.3 is in prerelease, install it from the `next` tag: `@ethercorps/sveltekit-og@next`. +Takumi support is available from `sveltekit-og@v4.3.0`. v4.3 is in beta and ready for test deployments — install it from the `beta` tag: `@ethercorps/sveltekit-og@beta`. @@ -33,6 +33,12 @@ The Takumi engine lives behind a separate entry point and `takumi-js` is an **op pnpm add @ethercorps/sveltekit-og takumi-js ``` + + +`takumi-js` has graduated from beta — install the stable `v2` line (`^2.0.1`), which is what `pnpm add takumi-js` resolves to. + + + Takumi loads its WebAssembly through the same build plugin as Satori. Make sure the Vite/Rollup plugin is configured as shown in [Getting Started](/docs/getting-started). @@ -101,14 +107,14 @@ new ImageResponse(template, { format: 'jpeg', quality: 90 }); new ImageResponse(template, { format: 'svg' }); ``` -| Format | Content-Type | -| ------ | ------------ | -| `png` (default) | `image/png` | -| `jpeg` | `image/jpeg` | -| `webp` | `image/webp` | -| `ico` | `image/x-icon` | -| `svg` | `image/svg+xml` | -| `raw` | `application/octet-stream` | +| Format | Content-Type | +| --------------- | -------------------------- | +| `png` (default) | `image/png` | +| `jpeg` | `image/jpeg` | +| `webp` | `image/webp` | +| `ico` | `image/x-icon` | +| `svg` | `image/svg+xml` | +| `raw` | `application/octet-stream` | ## Fonts @@ -126,17 +132,14 @@ import { read } from '$app/server'; import RegularFont from '$lib/assets/MyFont-Regular.ttf?url'; export const GET = async () => { - return new ImageResponse( - `
Hello World
`, - { - width: 1200, - height: 630, - fonts: [ - new GoogleFont('Inter', { weight: 400 }), - new CustomFont('My Font', () => read(RegularFont).arrayBuffer(), { weight: 700 }) - ] - } - ); + return new ImageResponse(`
Hello World
`, { + width: 1200, + height: 630, + fonts: [ + new GoogleFont('Inter', { weight: 400 }), + new CustomFont('My Font', () => read(RegularFont).arrayBuffer(), { weight: 700 }) + ] + }); }; ``` @@ -166,19 +169,19 @@ new ImageResponse(`
Ship it 🚀
`, { emoji: 'noto Everything the constructor accepts, passed as the second argument. -| Option | Type | Default | Description | -| ------ | ---- | ------- | ----------- | -| `width` | `number` | `1200` | Image width in pixels. | -| `height` | `number` | `630` | Image height in pixels. | -| `format` | `TakumiFormat` | `'png'` | Output format — see [Output Formats](#output-formats). | -| `quality` | `number` | — | `0`–`100`, applies to lossy `jpeg` / `webp`. | -| `fonts` | `TakumiFontInput[]` | built-in font | Fonts to register — see [Fonts](#fonts). | -| `stylesheets` | `string[]` | — | Extra CSS stylesheets applied before rendering. | -| `emoji` | `EmojiType \| 'from-font'` | `'twemoji'` | Emoji provider — see [Emoji](#emoji). | -| `debug` | `boolean` | `false` | Log render timing and diagnostics. | -| `status` | `number` | `200` | HTTP status code of the `Response`. | -| `statusText` | `string` | `'Success'` | HTTP status text of the `Response`. | -| `headers` | `Record` | — | Extra response headers (merged with the `Content-Type`). | +| Option | Type | Default | Description | +| ------------- | -------------------------- | ------------- | -------------------------------------------------------- | +| `width` | `number` | `1200` | Image width in pixels. | +| `height` | `number` | `630` | Image height in pixels. | +| `format` | `TakumiFormat` | `'png'` | Output format — see [Output Formats](#output-formats). | +| `quality` | `number` | — | `0`–`100`, applies to lossy `jpeg` / `webp`. | +| `fonts` | `TakumiFontInput[]` | built-in font | Fonts to register — see [Fonts](#fonts). | +| `stylesheets` | `string[]` | — | Extra CSS stylesheets applied before rendering. | +| `emoji` | `EmojiType \| 'from-font'` | `'twemoji'` | Emoji provider — see [Emoji](#emoji). | +| `debug` | `boolean` | `false` | Log render timing and diagnostics. | +| `status` | `number` | `200` | HTTP status code of the `Response`. | +| `statusText` | `string` | `'Success'` | HTTP status text of the `Response`. | +| `headers` | `Record` | — | Extra response headers (merged with the `Content-Type`). | ## Next Steps diff --git a/apps/docs/wrangler.jsonc b/apps/docs/wrangler.jsonc index d2bda9a..872979c 100644 --- a/apps/docs/wrangler.jsonc +++ b/apps/docs/wrangler.jsonc @@ -2,5 +2,5 @@ "name": "sveltekit-og-docs", "pages_build_output_dir": ".svelte-kit/cloudflare", "compatibility_date": "2025-11-22", - "compatibility_flags": ["nodejs_compat"] + "compatibility_flags": ["nodejs_compat"], } diff --git a/examples/cf-pages-build/package.json b/examples/cf-pages-build/package.json index fdf827e..3e1abb0 100644 --- a/examples/cf-pages-build/package.json +++ b/examples/cf-pages-build/package.json @@ -26,6 +26,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/examples/cf-workers-build/package.json b/examples/cf-workers-build/package.json index 27514e0..851d8a5 100644 --- a/examples/cf-workers-build/package.json +++ b/examples/cf-workers-build/package.json @@ -28,6 +28,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/examples/cf-workers-build/wrangler.jsonc b/examples/cf-workers-build/wrangler.jsonc index 6776861..d7c656d 100644 --- a/examples/cf-workers-build/wrangler.jsonc +++ b/examples/cf-workers-build/wrangler.jsonc @@ -9,7 +9,7 @@ } ], "workers_dev": false, - "compatibility_date": "2025-11-20", + "compatibility_date": "2026-07-01", "build": { "command": "pnpm run build" }, @@ -44,5 +44,15 @@ "globs": ["**/*.ttf"], "fallthrough": true } - ] + ], + "env": { + "dev": { + "routes": [ + { + "pattern": "dev-workers.sveltekit-og.dev", + "custom_domain": true + } + ] + } + } } diff --git a/examples/deno-build/package.json b/examples/deno-build/package.json index cf93e7b..099a431 100644 --- a/examples/deno-build/package.json +++ b/examples/deno-build/package.json @@ -26,6 +26,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/examples/netlify-build/package.json b/examples/netlify-build/package.json index 5401962..5ab6ac4 100644 --- a/examples/netlify-build/package.json +++ b/examples/netlify-build/package.json @@ -26,6 +26,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/examples/node-build/package.json b/examples/node-build/package.json index 34435c0..9cde0f7 100644 --- a/examples/node-build/package.json +++ b/examples/node-build/package.json @@ -26,6 +26,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/examples/shared/package.json b/examples/shared/package.json index 861b5a2..792328f 100644 --- a/examples/shared/package.json +++ b/examples/shared/package.json @@ -24,7 +24,7 @@ }, "peerDependencies": { "svelte": "^5", - "takumi-js": "^2.0.0-beta.14" + "takumi-js": "^2.0.1" }, "peerDependenciesMeta": { "takumi-js": { @@ -37,7 +37,7 @@ "@sveltejs/vite-plugin-svelte": "^6.2.1", "svelte": "^5.53.10", "svelte-check": "^4.4.5", - "takumi-js": "2.0.0-beta.14", + "takumi-js": "2.0.1", "typescript": "^5.9.3" } } diff --git a/examples/takumi-only-build/package.json b/examples/takumi-only-build/package.json index 090b6cd..c7ea154 100644 --- a/examples/takumi-only-build/package.json +++ b/examples/takumi-only-build/package.json @@ -26,6 +26,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/examples/vercel-build/package.json b/examples/vercel-build/package.json index 9cc66c2..a36908f 100644 --- a/examples/vercel-build/package.json +++ b/examples/vercel-build/package.json @@ -26,6 +26,6 @@ "dependencies": { "@ethercorps/sveltekit-og": "workspace:*", "@examples/shared": "workspace:*", - "takumi-js": "2.0.0-beta.14" + "takumi-js": "2.0.1" } } diff --git a/package.json b/package.json index 15c008a..c00756d 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "private": true, "type": "module", + "packageManager": "pnpm@10.30.3", "license": "MIT", "repository": "github:ethercorps/sveltekit-og", "scripts": { @@ -15,13 +16,21 @@ "docs:build": "pnpm -F @svecodocs/docs build", "check": "pnpm -r check", "lint": "pnpm -r lint", - "format": "pnpm -r format" + "format": "pnpm -r format", + "release": "bumpp --no-tag packages/sveltekit-og/package.json" + }, + "devDependencies": { + "bumpp": "^10.4.0", + "changelogithub": "^13.16.0" }, "pnpm": { "onlyBuiltDependencies": [ "esbuild", "sharp", "workerd" - ] + ], + "patchedDependencies": { + "@deno/svelte-adapter@0.2.1": "patches/@deno__svelte-adapter@0.2.1.patch" + } } } diff --git a/packages/sveltekit-og/benchmarks/baseline.json b/packages/sveltekit-og/benchmarks/baseline.json index 5ece94a..f859435 100644 --- a/packages/sveltekit-og/benchmarks/baseline.json +++ b/packages/sveltekit-og/benchmarks/baseline.json @@ -1,93 +1,93 @@ { - "files": [ - { - "filepath": "/Users/shivammeena/Projects/ethercorps/sveltekit-og/src/image-response.bench.ts", - "groups": [ - { - "fullName": "src/image-response.bench.ts > ImageResponse: html → png (full, incl. stream drain)", - "benchmarks": [ - { - "id": "1924286189_0_0", - "sampleCount": 368, - "name": "ImageResponse", - "rank": 1, - "rme": 0.30957127632140724, - "totalTime": 5008.753219000003, - "min": 11.746624999999767, - "max": 16.26574999999957, - "hz": 73.47137778799794, - "period": 13.610742442934791, - "mean": 13.610742442934791, - "variance": 0.170067224136426, - "sd": 0.4123920757439769, - "sem": 0.021497423008884037, - "df": 367, - "critical": 1.96, - "moe": 0.042134949097412715, - "p75": 13.843332999999802, - "p99": 14.733458999999584, - "p995": 15.493249999999989, - "p999": 16.26574999999957 - } - ] - }, - { - "fullName": "src/image-response.bench.ts > createPng: html → png (satori + resvg)", - "benchmarks": [ - { - "id": "1924286189_1_0", - "sampleCount": 424, - "name": "createPng", - "rank": 1, - "rme": 0.5652196159655196, - "totalTime": 5012.0603890000075, - "min": 11.08929100000023, - "max": 15.211417000000438, - "hz": 84.5959479918787, - "period": 11.820897143867942, - "mean": 11.820897143867942, - "variance": 0.4927073512958219, - "sd": 0.7019311585161482, - "sem": 0.03408879053073952, - "df": 423, - "critical": 1.96, - "moe": 0.06681402944024946, - "p75": 11.885833000000275, - "p99": 14.533124999999927, - "p995": 14.648417000000336, - "p999": 15.211417000000438 - } - ] - }, - { - "fullName": "src/image-response.bench.ts > createSvg: html → svg (satori only)", - "benchmarks": [ - { - "id": "1924286189_2_0", - "sampleCount": 5982, - "name": "createSvg", - "rank": 1, - "rme": 0.6141181627637844, - "totalTime": 5000.671607999993, - "min": 0.6748749999987922, - "max": 2.944792000000234, - "hz": 1196.239319220661, - "period": 0.8359531273821453, - "mean": 0.8359531273821453, - "variance": 0.041039494585467746, - "sd": 0.2025820687658899, - "sem": 0.002619255095635525, - "df": 5981, - "critical": 1.96, - "moe": 0.005133739987445629, - "p75": 0.7925410000007105, - "p99": 1.4479580000006536, - "p995": 1.9095000000015716, - "p999": 2.4850420000002487 - } - ] - } - ] - } - ] -} \ No newline at end of file + "files": [ + { + "filepath": "/Users/shivammeena/Projects/ethercorps/sveltekit-og/src/image-response.bench.ts", + "groups": [ + { + "fullName": "src/image-response.bench.ts > ImageResponse: html → png (full, incl. stream drain)", + "benchmarks": [ + { + "id": "1924286189_0_0", + "sampleCount": 368, + "name": "ImageResponse", + "rank": 1, + "rme": 0.30957127632140724, + "totalTime": 5008.753219000003, + "min": 11.746624999999767, + "max": 16.26574999999957, + "hz": 73.47137778799794, + "period": 13.610742442934791, + "mean": 13.610742442934791, + "variance": 0.170067224136426, + "sd": 0.4123920757439769, + "sem": 0.021497423008884037, + "df": 367, + "critical": 1.96, + "moe": 0.042134949097412715, + "p75": 13.843332999999802, + "p99": 14.733458999999584, + "p995": 15.493249999999989, + "p999": 16.26574999999957 + } + ] + }, + { + "fullName": "src/image-response.bench.ts > createPng: html → png (satori + resvg)", + "benchmarks": [ + { + "id": "1924286189_1_0", + "sampleCount": 424, + "name": "createPng", + "rank": 1, + "rme": 0.5652196159655196, + "totalTime": 5012.0603890000075, + "min": 11.08929100000023, + "max": 15.211417000000438, + "hz": 84.5959479918787, + "period": 11.820897143867942, + "mean": 11.820897143867942, + "variance": 0.4927073512958219, + "sd": 0.7019311585161482, + "sem": 0.03408879053073952, + "df": 423, + "critical": 1.96, + "moe": 0.06681402944024946, + "p75": 11.885833000000275, + "p99": 14.533124999999927, + "p995": 14.648417000000336, + "p999": 15.211417000000438 + } + ] + }, + { + "fullName": "src/image-response.bench.ts > createSvg: html → svg (satori only)", + "benchmarks": [ + { + "id": "1924286189_2_0", + "sampleCount": 5982, + "name": "createSvg", + "rank": 1, + "rme": 0.6141181627637844, + "totalTime": 5000.671607999993, + "min": 0.6748749999987922, + "max": 2.944792000000234, + "hz": 1196.239319220661, + "period": 0.8359531273821453, + "mean": 0.8359531273821453, + "variance": 0.041039494585467746, + "sd": 0.2025820687658899, + "sem": 0.002619255095635525, + "df": 5981, + "critical": 1.96, + "moe": 0.005133739987445629, + "p75": 0.7925410000007105, + "p99": 1.4479580000006536, + "p995": 1.9095000000015716, + "p999": 2.4850420000002487 + } + ] + } + ] + } + ] +} diff --git a/packages/sveltekit-og/benchmarks/snapshots/2026-06-26T15-11-29.json b/packages/sveltekit-og/benchmarks/snapshots/2026-06-26T15-11-29.json index b962bbe..b385c2f 100644 --- a/packages/sveltekit-og/benchmarks/snapshots/2026-06-26T15-11-29.json +++ b/packages/sveltekit-og/benchmarks/snapshots/2026-06-26T15-11-29.json @@ -1,93 +1,93 @@ { - "files": [ - { - "filepath": "/Users/shivammeena/Projects/ethercorps/sveltekit-og/src/image-response.bench.ts", - "groups": [ - { - "fullName": "src/image-response.bench.ts > ImageResponse: html → png (full, incl. stream drain)", - "benchmarks": [ - { - "id": "1924286189_0_0", - "sampleCount": 367, - "name": "ImageResponse", - "rank": 1, - "rme": 0.3114901305694826, - "totalTime": 5005.398713000009, - "min": 11.61608299999989, - "max": 15.930917000000136, - "hz": 73.3208323738184, - "period": 13.638688591280678, - "mean": 13.638688591280678, - "variance": 0.172420035357901, - "sd": 0.41523491587040345, - "sem": 0.02167508617395169, - "df": 366, - "critical": 1.96, - "moe": 0.04248316890094531, - "p75": 13.8740829999997, - "p99": 14.78704099999959, - "p995": 15.8759170000003, - "p999": 15.930917000000136 - } - ] - }, - { - "fullName": "src/image-response.bench.ts > createPng: html → png (satori + resvg)", - "benchmarks": [ - { - "id": "1924286189_1_0", - "sampleCount": 420, - "name": "createPng", - "rank": 1, - "rme": 0.5107261763707514, - "totalTime": 5002.28296699998, - "min": 11.22387500000059, - "max": 14.531334000001152, - "hz": 83.96166365852083, - "period": 11.910197540476142, - "mean": 11.910197540476142, - "variance": 0.4045305378330453, - "sd": 0.6360271518048938, - "sem": 0.031034947192182184, - "df": 419, - "critical": 1.96, - "moe": 0.06082849649667708, - "p75": 12.074416999999812, - "p99": 14.228499999999258, - "p995": 14.425666999999521, - "p999": 14.531334000001152 - } - ] - }, - { - "fullName": "src/image-response.bench.ts > createSvg: html → svg (satori only)", - "benchmarks": [ - { - "id": "1924286189_2_0", - "sampleCount": 5986, - "name": "createSvg", - "rank": 1, - "rme": 0.637274119656219, - "totalTime": 5000.142297999977, - "min": 0.6694580000003043, - "max": 3.0225420000006125, - "hz": 1197.1659291365286, - "period": 0.8353060972268589, - "mean": 0.8353060972268589, - "variance": 0.044153835591551845, - "sd": 0.21012814088444184, - "sem": 0.0027159130497638705, - "df": 5985, - "critical": 1.96, - "moe": 0.005323189577537186, - "p75": 0.789042000000336, - "p99": 1.4883329999993293, - "p995": 2.059291999999914, - "p999": 2.4301249999989523 - } - ] - } - ] - } - ] -} \ No newline at end of file + "files": [ + { + "filepath": "/Users/shivammeena/Projects/ethercorps/sveltekit-og/src/image-response.bench.ts", + "groups": [ + { + "fullName": "src/image-response.bench.ts > ImageResponse: html → png (full, incl. stream drain)", + "benchmarks": [ + { + "id": "1924286189_0_0", + "sampleCount": 367, + "name": "ImageResponse", + "rank": 1, + "rme": 0.3114901305694826, + "totalTime": 5005.398713000009, + "min": 11.61608299999989, + "max": 15.930917000000136, + "hz": 73.3208323738184, + "period": 13.638688591280678, + "mean": 13.638688591280678, + "variance": 0.172420035357901, + "sd": 0.41523491587040345, + "sem": 0.02167508617395169, + "df": 366, + "critical": 1.96, + "moe": 0.04248316890094531, + "p75": 13.8740829999997, + "p99": 14.78704099999959, + "p995": 15.8759170000003, + "p999": 15.930917000000136 + } + ] + }, + { + "fullName": "src/image-response.bench.ts > createPng: html → png (satori + resvg)", + "benchmarks": [ + { + "id": "1924286189_1_0", + "sampleCount": 420, + "name": "createPng", + "rank": 1, + "rme": 0.5107261763707514, + "totalTime": 5002.28296699998, + "min": 11.22387500000059, + "max": 14.531334000001152, + "hz": 83.96166365852083, + "period": 11.910197540476142, + "mean": 11.910197540476142, + "variance": 0.4045305378330453, + "sd": 0.6360271518048938, + "sem": 0.031034947192182184, + "df": 419, + "critical": 1.96, + "moe": 0.06082849649667708, + "p75": 12.074416999999812, + "p99": 14.228499999999258, + "p995": 14.425666999999521, + "p999": 14.531334000001152 + } + ] + }, + { + "fullName": "src/image-response.bench.ts > createSvg: html → svg (satori only)", + "benchmarks": [ + { + "id": "1924286189_2_0", + "sampleCount": 5986, + "name": "createSvg", + "rank": 1, + "rme": 0.637274119656219, + "totalTime": 5000.142297999977, + "min": 0.6694580000003043, + "max": 3.0225420000006125, + "hz": 1197.1659291365286, + "period": 0.8353060972268589, + "mean": 0.8353060972268589, + "variance": 0.044153835591551845, + "sd": 0.21012814088444184, + "sem": 0.0027159130497638705, + "df": 5985, + "critical": 1.96, + "moe": 0.005323189577537186, + "p75": 0.789042000000336, + "p99": 1.4883329999993293, + "p995": 2.059291999999914, + "p999": 2.4301249999989523 + } + ] + } + ] + } + ] +} diff --git a/packages/sveltekit-og/package.json b/packages/sveltekit-og/package.json index 78ef4bb..dd7aa3c 100644 --- a/packages/sveltekit-og/package.json +++ b/packages/sveltekit-og/package.json @@ -1,6 +1,6 @@ { "name": "@ethercorps/sveltekit-og", - "version": "4.3.0-next.15", + "version": "4.3.0", "license": "MIT", "homepage": "https://sveltekit-og.dev", "repository": "github:ethercorps/sveltekit-og", @@ -105,7 +105,7 @@ "typescript": "^5.9.3", "typescript-eslint": "^8.57.0", "vite": "^5.4.21", - "takumi-js": "2.0.0-beta.14", + "takumi-js": "2.0.1", "vitest": "^1.6.1" }, "main": "./dist/index.js", @@ -121,7 +121,7 @@ }, "peerDependencies": { "@sveltejs/kit": ">=2.0.0", - "takumi-js": "^2.0.0-beta.14" + "takumi-js": "^2.0.1" }, "peerDependenciesMeta": { "takumi-js": { diff --git a/packages/sveltekit-og/src/index.test.ts b/packages/sveltekit-og/src/index.test.ts index 3e42032..c890207 100644 --- a/packages/sveltekit-og/src/index.test.ts +++ b/packages/sveltekit-og/src/index.test.ts @@ -7,7 +7,9 @@ import { createSvg } from "$lib/helpers/create.js"; const fontData = readFileSync( new URL("./routes/(components)/SpaceMono-Regular.ttf", import.meta.url) ); -const fonts = [{ name: "Space Mono", data: fontData, weight: 400 as const, style: "normal" as const }]; +const fonts = [ + { name: "Space Mono", data: fontData, weight: 400 as const, style: "normal" as const }, +]; const html = `
hi
`; describe("satori ImageResponse", () => { diff --git a/packages/sveltekit-og/src/lib/fonts.ts b/packages/sveltekit-og/src/lib/fonts.ts index b7a6c9d..1092455 100644 --- a/packages/sveltekit-og/src/lib/fonts.ts +++ b/packages/sveltekit-og/src/lib/fonts.ts @@ -15,10 +15,7 @@ export class BaseFont { style: FontStyle; weight: FontWeight; - constructor( - name: string, - { weight = 400, style = "normal" }: BaseFontOptions = {} - ) { + constructor(name: string, { weight = 400, style = "normal" }: BaseFontOptions = {}) { this.name = name; this.style = style; this.weight = weight; @@ -33,7 +30,9 @@ export class BaseFont { } export class CustomFont extends BaseFont { - protected input: MayBePromise | (() => MayBePromise); + protected input: + | MayBePromise + | (() => MayBePromise); private promise?: Promise; constructor( @@ -143,7 +142,7 @@ export class GoogleFont extends BaseFont { family: string, options: { name?: string; text?: string; weight?: FontWeight; style?: FontStyle } = {} ) { - super(options.name || family, options); + super(options.name || family, options); this.family = family; this.text = options.text; } diff --git a/packages/sveltekit-og/src/lib/helpers/logger.ts b/packages/sveltekit-og/src/lib/helpers/logger.ts index 0c5508f..b4046f5 100644 --- a/packages/sveltekit-og/src/lib/helpers/logger.ts +++ b/packages/sveltekit-og/src/lib/helpers/logger.ts @@ -1,4 +1,4 @@ -const PREFIX = '[SvelteKit-OG]'; +const PREFIX = "[SvelteKit-OG]"; export type Logger = ReturnType; @@ -15,6 +15,6 @@ export function createLogger(debug: boolean) { }, error: (message: string, ...args: unknown[]) => { if (debug) console.error(`${PREFIX} ❌ ${message}`, ...args); - } + }, }; } diff --git a/packages/sveltekit-og/src/lib/helpers/utils.ts b/packages/sveltekit-og/src/lib/helpers/utils.ts index 00ce315..3a9f3ed 100644 --- a/packages/sveltekit-og/src/lib/helpers/utils.ts +++ b/packages/sveltekit-og/src/lib/helpers/utils.ts @@ -15,10 +15,10 @@ export const formatBytes = (bytes: number, decimals = 2) => { ); }; -export async function importWasm(input: any) { +export async function importWasm(input: unknown) { // may be a nested await for some reason const _input = await input; - const _module = _input.default || _input; + const _module = _input?.default || _input; // this is from rollup/wasm, it does some magic we need to recover from if (typeof _module === "function") { // empty input is to avoid instantiating the wasm module diff --git a/packages/sveltekit-og/src/lib/takumi/image-response.ts b/packages/sveltekit-og/src/lib/takumi/image-response.ts index 97dac67..45adcf0 100644 --- a/packages/sveltekit-og/src/lib/takumi/image-response.ts +++ b/packages/sveltekit-og/src/lib/takumi/image-response.ts @@ -24,17 +24,14 @@ export class ImageResponse> extends Response { ) { const opts = { ...DEFAULT_OPTIONS, ...options }; - const { body, init } = buildImageResponse( - () => createTakumiImage(element, opts, props), - { - label: opts.format.toUpperCase(), - contentType: CONTENT_TYPES[opts.format], - debug: opts.debug, - headers: opts.headers, - status: opts.status, - statusText: opts.statusText, - } - ); + const { body, init } = buildImageResponse(() => createTakumiImage(element, opts, props), { + label: opts.format.toUpperCase(), + contentType: CONTENT_TYPES[opts.format], + debug: opts.debug, + headers: opts.headers, + status: opts.status, + statusText: opts.statusText, + }); super(body, init); } diff --git a/packages/sveltekit-og/src/routes/+server.ts b/packages/sveltekit-og/src/routes/+server.ts index 1634c6b..855eb40 100644 --- a/packages/sveltekit-og/src/routes/+server.ts +++ b/packages/sveltekit-og/src/routes/+server.ts @@ -13,7 +13,7 @@ const customRegular = new CustomFont("Space Mono", () => read(RegularFont).array }); export const GET: RequestHandler = async ({ url }) => { - const format = url.searchParams.get("format") as ImageResponseOptions['format'] || "png"; + const format = (url.searchParams.get("format") as ImageResponseOptions["format"]) || "png"; const html = `
diff --git a/packages/sveltekit-og/src/routes/sc/+server.ts b/packages/sveltekit-og/src/routes/sc/+server.ts index 8d4f0a3..158aca0 100644 --- a/packages/sveltekit-og/src/routes/sc/+server.ts +++ b/packages/sveltekit-og/src/routes/sc/+server.ts @@ -3,7 +3,7 @@ import { ImageResponse, type ImageResponseOptions } from "$lib/index.js"; import OG from "../(components)/OG.svelte"; export const GET: RequestHandler = async ({ url }) => { - const format = url.searchParams.get("format") as ImageResponseOptions['format'] || "png"; + const format = (url.searchParams.get("format") as ImageResponseOptions["format"]) || "png"; return new ImageResponse( OG, { @@ -12,8 +12,8 @@ export const GET: RequestHandler = async ({ url }) => { width: 800, height: 400, headers: { - "Cache-Control": "no-cache, no-store" - } + "Cache-Control": "no-cache, no-store", + }, }, { text: "Ready to try sveltekit-og?", diff --git a/packages/sveltekit-og/src/routes/takumi/+server.ts b/packages/sveltekit-og/src/routes/takumi/+server.ts index 7698408..018a162 100644 --- a/packages/sveltekit-og/src/routes/takumi/+server.ts +++ b/packages/sveltekit-og/src/routes/takumi/+server.ts @@ -3,7 +3,8 @@ import { ImageResponse, type TakumiImageResponseOptions } from "$lib/takumi/inde import OG from "../(components)/OG.svelte"; export const GET: RequestHandler = async ({ url }) => { - const format = (url.searchParams.get("format") as TakumiImageResponseOptions["format"]) || "png"; + const format = + (url.searchParams.get("format") as TakumiImageResponseOptions["format"]) || "png"; return new ImageResponse( OG, { diff --git a/patches/@deno__svelte-adapter@0.2.1.patch b/patches/@deno__svelte-adapter@0.2.1.patch new file mode 100644 index 0000000..fc6d071 --- /dev/null +++ b/patches/@deno__svelte-adapter@0.2.1.patch @@ -0,0 +1,19 @@ +diff --git a/dist/index.js b/dist/index.js +--- a/dist/index.js ++++ b/dist/index.js +@@ -52,6 +52,15 @@ + }); + } + } ++ // Prerendered endpoints (e.g. image routes) are written into the ++ // static dir by writePrerendered() above, but only prerendered ++ // *pages* were registered — so Deno Deploy 404s the assets. ++ for (const pathname of builder.prerendered.assets.keys()) { ++ staticFiles.push({ ++ source: pathname, ++ destination: path.join(dirs.static, pathname), ++ }); ++ } + const svelteData = { + isr: [], + }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5293c3e..95458df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,9 +4,21 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + '@deno/svelte-adapter@0.2.1': + hash: a28e8e1c386834ae41f01ff4b054a70df14ed7404bdb0b5d8ca5f3285ae93cb2 + path: patches/@deno__svelte-adapter@0.2.1.patch + importers: - .: {} + .: + devDependencies: + bumpp: + specifier: ^10.4.0 + version: 10.4.1 + changelogithub: + specifier: ^13.16.0 + version: 13.16.1 apps/docs: dependencies: @@ -111,8 +123,8 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@playwright/test': specifier: ^1.55.0 @@ -154,8 +166,8 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@playwright/test': specifier: ^1.55.0 @@ -203,12 +215,12 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@deno/svelte-adapter': specifier: ^0.2.1 - version: 0.2.1(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.10)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))(svelte@5.53.10)(typescript@5.9.3)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2))) + version: 0.2.1(patch_hash=a28e8e1c386834ae41f01ff4b054a70df14ed7404bdb0b5d8ca5f3285ae93cb2)(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.10)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))(svelte@5.53.10)(typescript@5.9.3)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2))) '@playwright/test': specifier: ^1.55.0 version: 1.58.2 @@ -246,8 +258,8 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@playwright/test': specifier: ^1.55.0 @@ -289,8 +301,8 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@playwright/test': specifier: ^1.55.0 @@ -385,8 +397,8 @@ importers: specifier: ^4.4.5 version: 4.4.5(picomatch@4.0.3)(svelte@5.53.10)(typescript@5.9.3) takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -400,8 +412,8 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@playwright/test': specifier: ^1.55.0 @@ -443,8 +455,8 @@ importers: specifier: workspace:* version: link:../shared takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) devDependencies: '@playwright/test': specifier: ^1.55.0 @@ -565,8 +577,8 @@ importers: specifier: ^4.4.5 version: 4.4.5(picomatch@4.0.3)(svelte@5.53.10)(typescript@5.9.3) takumi-js: - specifier: 2.0.0-beta.14 - version: 2.0.0-beta.14 + specifier: 2.0.1 + version: 2.0.1(csstype@3.2.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -2051,6 +2063,9 @@ packages: cpu: [x64] os: [win32] + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} @@ -2084,6 +2099,10 @@ packages: resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@speed-highlight/core@1.2.14': resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} @@ -2286,64 +2305,69 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@takumi-rs/core-darwin-arm64@2.0.0-beta.14': - resolution: {integrity: sha512-RFnw6WqBl7ec6DAqe2uUjmPMRXhz3Pe+uu0uMQexGTA2JX6zfJsj+HEl1Y+hjnKk5piPA3hDt8fbusGwkkLVyw==} + '@takumi-rs/core-darwin-arm64@2.0.1': + resolution: {integrity: sha512-A/hUaWhlfC3wquGIlZVJpXZn9luGP5faKMKMNj6z1QYZGWECT5yn0h0Ui84HKGiGZkk4ExgwZcLnejDywNbNgg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@takumi-rs/core-darwin-x64@2.0.0-beta.14': - resolution: {integrity: sha512-h5uxEKHbgssj+rt1ir7uGNn+OUhjvm7aOKblh1BDCw+KrzFLgJd69xQh3din1kcXJm2M0WEuf6ryvxeowvBWpA==} + '@takumi-rs/core-darwin-x64@2.0.1': + resolution: {integrity: sha512-+8W5q8aBLMgnFM30iWrjc1FDZyBIqP0/gIi53pQNs1R/9lucxyoR9hhNV7TAIByGU1YPU9xWlVK4T5m0ypMoKQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@takumi-rs/core-linux-arm64-gnu@2.0.0-beta.14': - resolution: {integrity: sha512-XodnNERSfoxTH5Sretb+woOMWXOUff27jBIuvPBaSEdb8wphTAOZH4gdH6WAEIojXhepluja4xeACz9vWbQmcA==} + '@takumi-rs/core-linux-arm64-gnu@2.0.1': + resolution: {integrity: sha512-3nykGv1PxCcRNCwff2/E+w3uzpNH6BN1QkpBMD4Gl55d7tuVVP+9Z94TvrGNQjpvjlsXRHL2bdK7NT+ogGZkYQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] libc: [glibc] - '@takumi-rs/core-linux-arm64-musl@2.0.0-beta.14': - resolution: {integrity: sha512-te31hr9VwhxjochpfwSQrcBbIRZBQ4P+jWKr3peraq9VW4gfW2aR48jfxufa2CcXqcqE+E/7AiUTwg2vtqAocg==} + '@takumi-rs/core-linux-arm64-musl@2.0.1': + resolution: {integrity: sha512-OD7YUud5E81V9iXvgkxKVUPifINYfDzpdf2s1kvcXoZ/Pp5zcGgB1El5NXpksweyqtFcIkz6lpSIEGUJLPnYTg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] libc: [musl] - '@takumi-rs/core-linux-x64-gnu@2.0.0-beta.14': - resolution: {integrity: sha512-L+llt6IEXLuPqKyQZufMHQPCpQHaxTSmUsSQK0JfeF9yzeGoHlttU3gDzy2dUePn5bKkU2CO5/U59oGghg09Og==} + '@takumi-rs/core-linux-x64-gnu@2.0.1': + resolution: {integrity: sha512-1kAZSE36E1Jck1HLvzjtwgotUCf/UB1V/ElIXgXLoXGmvqBC3Wi9mdG6briBSM9jae2BfWUJlg34sz6/oE6xGg==} engines: {node: '>=18'} cpu: [x64] os: [linux] libc: [glibc] - '@takumi-rs/core-linux-x64-musl@2.0.0-beta.14': - resolution: {integrity: sha512-YP3BbPmSka2g+HLW1Jcy+b9cq3r/mHmOT6SO/t/eFAdh4CC5GcAzp0qhHwy7Lxt/UoPEZyizEPl66iDh6FQyIw==} + '@takumi-rs/core-linux-x64-musl@2.0.1': + resolution: {integrity: sha512-6Y3tbatXeEf8U8OD4i6CMYjYGsXODsExBPt0VX/KRj7X9TWa2vzlBRyarfh+OfxqgczNv1GhNKNGZOmmYvkHbg==} engines: {node: '>=18'} cpu: [x64] os: [linux] libc: [musl] - '@takumi-rs/core-win32-arm64-msvc@2.0.0-beta.14': - resolution: {integrity: sha512-EPSDxv6pEFb8uu4unowybLUm9QK1tdrMA12spagr4KKTifRXi1jZbB0pA1QCv/KHZqnaadXUFNK3MuOoSXyE9A==} + '@takumi-rs/core-win32-arm64-msvc@2.0.1': + resolution: {integrity: sha512-Xm1LUrLBwOh+Vbu8Og5kYnP6hRL2lAGsejDnunktwbe+iwt26i/klBYVfin/TZWNjOPiYRhqPcstn8RO0yIf4g==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@takumi-rs/core-win32-x64-msvc@2.0.0-beta.14': - resolution: {integrity: sha512-XA83vd4nSg5sWrLDvNP/Z/64LrauqRQ1S7B57dmvyKmH+CI2h8BT+02FAwb24BbOLQn+mBqD+v/qMpRtdvZI4Q==} + '@takumi-rs/core-win32-x64-msvc@2.0.1': + resolution: {integrity: sha512-Rtr85quL8BGarB0ww5DHDhC6bJSbfIHFWZDcO5nTWhzaOEKyq1oCd4ONxZZ8YYj+OLpKG7Hq/RSHHKzsQ/XasQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@takumi-rs/core@2.0.0-beta.14': - resolution: {integrity: sha512-0IzsA/kBl73FNYtvBnWvDxzxC1h7nuKlX3n7/48vBIGLOENk5mLWcxYoINP6CUXXSVcDAAx95JRKo1OlD9ABGg==} + '@takumi-rs/core@2.0.1': + resolution: {integrity: sha512-VgTsotfo1oB4JJl/v6tj2S0VJC6CM/M1P2Wu+dVSxf7xRJBNNfS1xzzAk8ycuLPUhxj3E5BJ35kZtdhvV9l1Eg==} engines: {node: '>=18'} + peerDependencies: + csstype: '*' + peerDependenciesMeta: + csstype: + optional: true - '@takumi-rs/helpers@2.0.0-beta.14': - resolution: {integrity: sha512-Vlwn0C+sWMXKuleBZgAIy9a35LCi/ikylxKuSUhJbd1ea7V+wiAth8uVI/fGj3XDchB55W+aC5OA/IFMgDOrIA==} + '@takumi-rs/helpers@2.0.1': + resolution: {integrity: sha512-6vlGGE6iKGM4+/s0EB4EVLx2Bjm3vzgP63ITBQ9AHL557wSSjbBXST6OaM1uu4B4XErNct+0IikIit0gfE6MYA==} engines: {node: '>=18'} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -2354,9 +2378,14 @@ packages: react-dom: optional: true - '@takumi-rs/wasm@2.0.0-beta.14': - resolution: {integrity: sha512-Ky+cz+kdVy2JxhtT9kY5MHHrE1YAV9lNk2wjENlPkb+/GBPwAeffHtQ/ZN4VI/kOKQXUEyvTExlvQvxtbFTnpw==} + '@takumi-rs/wasm@2.0.1': + resolution: {integrity: sha512-7dpvjT4k8DSES3dOCduRzlmAYLz+No/V3zWuUnU390c4dABqkPwBiT7IVsjylhaF76w8yf15nBiz+SAELKP2wA==} engines: {node: '>=18'} + peerDependencies: + csstype: '*' + peerDependenciesMeta: + csstype: + optional: true '@types/aws-lambda@8.10.161': resolution: {integrity: sha512-rUYdp+MQwSFocxIOcSsYSF3YYYC/uUpMbCY/mbO21vGqfrEYvNSoPyKYDj6RhXXpPfS0KstW9RwG3qXh9sL7FQ==} @@ -2602,9 +2631,20 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + args-tokenizer@0.3.0: + resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} + aria-query@5.3.1: resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} engines: {node: '>= 0.4'} @@ -2647,6 +2687,10 @@ packages: bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} @@ -2680,6 +2724,31 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bumpp@10.4.1: + resolution: {integrity: sha512-X/bwWs5Gbb/D7rN4aHLB7zdjiA6nGdjckM1sTHhI9oovIbEw2L5pw5S4xzk8ZTeOZ8EnwU/Ze4SoZ6/Vr3pM2Q==} + engines: {node: '>=18'} + hasBin: true + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + c12@1.11.2: + resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==} + peerDependencies: + magicast: ^0.3.4 + peerDependenciesMeta: + magicast: + optional: true + + c12@3.3.3: + resolution: {integrity: sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2702,6 +2771,15 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + changelogen@0.5.7: + resolution: {integrity: sha512-cTZXBcJMl3pudE40WENOakXkcVtrbBpbkmSkM20NdRiUqa4+VYRdXdEsgQ0BNQ6JBE2YymTNWtPKVF7UCTN5+g==} + hasBin: true + + changelogithub@13.16.1: + resolution: {integrity: sha512-h4etOmEM/wtqBWKPbnHoqv2C8moRCCEGTckwwWpvRgr/t1tY0MbyjQbZKy1ETQ7gn1UTQMJkCSRQ4KxiQ+HfSQ==} + engines: {node: '>=12.0.0'} + hasBin: true + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2717,6 +2795,10 @@ packages: check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -2725,10 +2807,20 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2747,6 +2839,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -2769,6 +2864,9 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + convert-gitmoji@0.1.5: + resolution: {integrity: sha512-4wqOafJdk2tqZC++cjcbGcaJ13BZ3kwldf06PTiAQRAB76Z1KJwZNL1SaRZMi2w1FM9RYTgZ6QErS8NUl/GBmQ==} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -2851,14 +2949,32 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -2881,6 +2997,14 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -3094,6 +3218,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} @@ -3131,6 +3259,10 @@ packages: fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3168,6 +3300,10 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3195,6 +3331,18 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + giget@1.2.5: + resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} + hasBin: true + + giget@2.0.0: + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + hasBin: true + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -3330,6 +3478,10 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + ignore-walk@5.0.1: resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3369,6 +3521,10 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -3385,6 +3541,11 @@ packages: engines: {node: '>=8'} hasBin: true + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3400,6 +3561,11 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} @@ -3428,16 +3594,32 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -3811,14 +3993,31 @@ packages: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + minizlib@3.1.0: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -3849,6 +4048,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3867,6 +4069,10 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + npm-bundled@2.0.1: resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3884,6 +4090,20 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nypm@0.5.4: + resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + nypm@0.6.5: + resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==} + engines: {node: '>=18'} + hasBin: true + obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} @@ -3891,6 +4111,15 @@ packages: resolution: {integrity: sha512-4+/OFSqOjoyULo7eN7EA97DE0Xydj/PW5aIckxqQIoFjFwqXKuFCvXUJObyJfBF9Khu4RL/jlDRI9FPaMGfPnw==} engines: {node: '>= 20'} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@1.1.6: + resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3901,6 +4130,10 @@ packages: oniguruma-to-es@2.3.0: resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -3934,6 +4167,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -3947,6 +4183,10 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} @@ -3995,6 +4235,12 @@ packages: pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + phosphor-svelte@3.1.0: resolution: {integrity: sha512-nldtxx+XCgNREvrb7O5xgDsefytXpSkPTx8Rnu3f2qQCUZLDV1rLxYSd2Jcwckuo9lZB1qKMqGR17P4UDC0PrA==} peerDependencies: @@ -4146,6 +4392,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -4161,9 +4411,16 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -4299,6 +4556,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4434,6 +4695,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-indent@4.1.1: resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} @@ -4526,14 +4791,19 @@ packages: tailwindcss@4.2.4: resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==} - takumi-js@2.0.0-beta.14: - resolution: {integrity: sha512-+MiFoD2Irr3/oAaG27FBhGANktGXpwMQFGvQ5DZiGYN/Dv0NozsViGgN1ICOYCscm6AW8VtRKmZBCJJaSJb9UA==} + takumi-js@2.0.1: + resolution: {integrity: sha512-4Mw5nc8mHM5TBLq7dGLBQ88V+5VrT+xOQVEajwD8PRhC//CGHdjAJvNZdap/iIJMQBx9X6gV7sbNbBsKmjL2XA==} engines: {node: '>=18'} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + tar@7.5.19: resolution: {integrity: sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==} engines: {node: '>=18'} @@ -4552,6 +4822,13 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -4673,6 +4950,10 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -4993,6 +5274,10 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -5004,6 +5289,9 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} @@ -5033,6 +5321,10 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + yoga-layout@3.2.1: resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} @@ -5128,7 +5420,7 @@ snapshots: dependencies: urlpattern-polyfill: 10.1.0 - '@deno/svelte-adapter@0.2.1(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.10)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))(svelte@5.53.10)(typescript@5.9.3)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))': + '@deno/svelte-adapter@0.2.1(patch_hash=a28e8e1c386834ae41f01ff4b054a70df14ed7404bdb0b5d8ca5f3285ae93cb2)(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.10)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))(svelte@5.53.10)(typescript@5.9.3)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))': dependencies: '@deno/experimental-route-config': 0.0.5 '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.53.10)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)))(svelte@5.53.10)(typescript@5.9.3)(vite@6.4.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)) @@ -6128,6 +6420,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true + '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@1.29.2': dependencies: '@shikijs/engine-javascript': 1.29.2 @@ -6172,6 +6466,8 @@ snapshots: '@sindresorhus/is@7.2.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@speed-highlight/core@1.2.14': {} '@standard-schema/spec@1.1.0': {} @@ -6464,52 +6760,53 @@ snapshots: tailwindcss: 4.2.2 vite: 7.3.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2) - '@takumi-rs/core-darwin-arm64@2.0.0-beta.14': + '@takumi-rs/core-darwin-arm64@2.0.1': optional: true - '@takumi-rs/core-darwin-x64@2.0.0-beta.14': + '@takumi-rs/core-darwin-x64@2.0.1': optional: true - '@takumi-rs/core-linux-arm64-gnu@2.0.0-beta.14': + '@takumi-rs/core-linux-arm64-gnu@2.0.1': optional: true - '@takumi-rs/core-linux-arm64-musl@2.0.0-beta.14': + '@takumi-rs/core-linux-arm64-musl@2.0.1': optional: true - '@takumi-rs/core-linux-x64-gnu@2.0.0-beta.14': + '@takumi-rs/core-linux-x64-gnu@2.0.1': optional: true - '@takumi-rs/core-linux-x64-musl@2.0.0-beta.14': + '@takumi-rs/core-linux-x64-musl@2.0.1': optional: true - '@takumi-rs/core-win32-arm64-msvc@2.0.0-beta.14': + '@takumi-rs/core-win32-arm64-msvc@2.0.1': optional: true - '@takumi-rs/core-win32-x64-msvc@2.0.0-beta.14': + '@takumi-rs/core-win32-x64-msvc@2.0.1': optional: true - '@takumi-rs/core@2.0.0-beta.14': + '@takumi-rs/core@2.0.1(csstype@3.2.3)': dependencies: - '@takumi-rs/helpers': 2.0.0-beta.14 - csstype: 3.2.3 + '@takumi-rs/helpers': 2.0.1 optionalDependencies: - '@takumi-rs/core-darwin-arm64': 2.0.0-beta.14 - '@takumi-rs/core-darwin-x64': 2.0.0-beta.14 - '@takumi-rs/core-linux-arm64-gnu': 2.0.0-beta.14 - '@takumi-rs/core-linux-arm64-musl': 2.0.0-beta.14 - '@takumi-rs/core-linux-x64-gnu': 2.0.0-beta.14 - '@takumi-rs/core-linux-x64-musl': 2.0.0-beta.14 - '@takumi-rs/core-win32-arm64-msvc': 2.0.0-beta.14 - '@takumi-rs/core-win32-x64-msvc': 2.0.0-beta.14 + '@takumi-rs/core-darwin-arm64': 2.0.1 + '@takumi-rs/core-darwin-x64': 2.0.1 + '@takumi-rs/core-linux-arm64-gnu': 2.0.1 + '@takumi-rs/core-linux-arm64-musl': 2.0.1 + '@takumi-rs/core-linux-x64-gnu': 2.0.1 + '@takumi-rs/core-linux-x64-musl': 2.0.1 + '@takumi-rs/core-win32-arm64-msvc': 2.0.1 + '@takumi-rs/core-win32-x64-msvc': 2.0.1 + csstype: 3.2.3 transitivePeerDependencies: - react - react-dom - '@takumi-rs/helpers@2.0.0-beta.14': {} + '@takumi-rs/helpers@2.0.1': {} - '@takumi-rs/wasm@2.0.0-beta.14': + '@takumi-rs/wasm@2.0.1(csstype@3.2.3)': dependencies: - '@takumi-rs/helpers': 2.0.0-beta.14 + '@takumi-rs/helpers': 2.0.1 + optionalDependencies: csstype: 3.2.3 transitivePeerDependencies: - react @@ -6827,8 +7124,17 @@ snapshots: ansi-styles@6.2.3: {} + ansis@4.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + argparse@2.0.1: {} + args-tokenizer@0.3.0: {} + aria-query@5.3.1: {} array-union@2.1.0: {} @@ -6855,6 +7161,8 @@ snapshots: dependencies: require-from-string: 2.0.2 + binary-extensions@2.3.0: {} + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 @@ -6895,6 +7203,56 @@ snapshots: buffer-from@1.1.2: {} + bumpp@10.4.1: + dependencies: + ansis: 4.2.0 + args-tokenizer: 0.3.0 + c12: 3.3.3 + cac: 6.7.14 + escalade: 3.2.0 + jsonc-parser: 3.3.1 + package-manager-detector: 1.6.0 + semver: 7.7.4 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + yaml: 2.8.2 + transitivePeerDependencies: + - magicast + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + c12@1.11.2: + dependencies: + chokidar: 3.6.0 + confbox: 0.1.8 + defu: 6.1.7 + dotenv: 16.6.1 + giget: 1.2.5 + jiti: 1.21.7 + mlly: 1.8.2 + ohash: 1.1.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + + c12@3.3.3: + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.3.1 + exsolve: 1.0.8 + giget: 2.0.0 + jiti: 2.6.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + rc9: 2.1.2 + cac@6.7.14: {} callsites@3.1.0: {} @@ -6918,6 +7276,39 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + changelogen@0.5.7: + dependencies: + c12: 1.11.2 + colorette: 2.0.20 + consola: 3.4.2 + convert-gitmoji: 0.1.5 + mri: 1.2.0 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + open: 10.2.0 + pathe: 1.1.2 + pkg-types: 1.3.1 + scule: 1.3.0 + semver: 7.7.4 + std-env: 3.10.0 + yaml: 2.8.2 + transitivePeerDependencies: + - magicast + + changelogithub@13.16.1: + dependencies: + ansis: 4.2.0 + c12: 3.3.3 + cac: 6.7.14 + changelogen: 0.5.7 + convert-gitmoji: 0.1.5 + execa: 9.6.1 + ofetch: 1.5.1 + semver: 7.7.4 + tinyglobby: 0.2.15 + transitivePeerDependencies: + - magicast + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -6930,6 +7321,18 @@ snapshots: dependencies: get-func-name: 2.0.2 + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -6938,8 +7341,16 @@ snapshots: dependencies: readdirp: 5.0.0 + chownr@2.0.0: {} + chownr@3.0.0: {} + citty@0.1.6: + dependencies: + consola: 3.4.2 + + citty@0.2.2: {} + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -6956,6 +7367,8 @@ snapshots: color-name@1.1.4: {} + colorette@2.0.20: {} + comma-separated-tokens@2.0.3: {} commander@2.20.3: {} @@ -6970,6 +7383,8 @@ snapshots: consola@3.4.2: {} + convert-gitmoji@0.1.5: {} + cookie@0.6.0: {} cookie@1.1.1: {} @@ -7013,7 +7428,8 @@ snapshots: css-tree: 3.2.1 lru-cache: 11.2.6 - csstype@3.2.3: {} + csstype@3.2.3: + optional: true data-urls@6.0.1: dependencies: @@ -7040,10 +7456,23 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + + defu@6.1.7: {} + dequal@2.0.3: {} + destr@2.0.5: {} + detect-libc@2.1.2: {} devalue@5.6.4: {} @@ -7062,6 +7491,10 @@ snapshots: dependencies: esutils: 2.0.3 + dotenv@16.6.1: {} + + dotenv@17.3.1: {} + eastasianwidth@0.2.0: {} emoji-regex-xs@1.0.0: {} @@ -7450,6 +7883,21 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + exsolve@1.0.8: {} extend@3.0.2: {} @@ -7480,6 +7928,10 @@ snapshots: fflate@0.7.4: {} + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -7519,6 +7971,10 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -7535,6 +7991,30 @@ snapshots: get-stream@8.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + giget@1.2.5: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.7 + node-fetch-native: 1.6.7 + nypm: 0.5.4 + pathe: 2.0.3 + tar: 6.2.1 + + giget@2.0.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.7 + node-fetch-native: 1.6.7 + nypm: 0.6.5 + pathe: 2.0.3 + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -7784,6 +8264,8 @@ snapshots: human-signals@5.0.0: {} + human-signals@8.0.1: {} + ignore-walk@5.0.1: dependencies: minimatch: 5.1.9 @@ -7817,6 +8299,10 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-buffer@2.0.5: {} is-core-module@2.16.1: @@ -7827,6 +8313,8 @@ snapshots: is-docker@2.2.1: {} + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -7837,6 +8325,10 @@ snapshots: is-hexadecimal@2.0.1: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-module@1.0.0: {} is-number@7.0.0: {} @@ -7857,10 +8349,18 @@ snapshots: is-stream@3.0.0: {} + is-stream@4.0.1: {} + + is-unicode-supported@2.1.0: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + isexe@2.0.0: {} jackspeak@3.4.3: @@ -7869,6 +8369,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jiti@1.21.7: {} + jiti@2.6.1: {} js-tokens@9.0.1: {} @@ -8507,12 +9009,25 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + minipass@7.1.3: {} + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + minizlib@3.1.0: dependencies: minipass: 7.1.3 + mkdirp@1.0.4: {} + mlly@1.8.2: dependencies: acorn: 8.16.0 @@ -8538,6 +9053,8 @@ snapshots: natural-compare@1.4.0: {} + node-fetch-native@1.6.7: {} + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -8548,6 +9065,8 @@ snapshots: dependencies: abbrev: 3.0.1 + normalize-path@3.0.0: {} + npm-bundled@2.0.1: dependencies: npm-normalize-package-bin: 2.0.0 @@ -8565,6 +9084,26 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nypm@0.5.4: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 1.3.1 + tinyexec: 0.3.2 + ufo: 1.6.4 + + nypm@0.6.5: + dependencies: + citty: 0.2.2 + pathe: 2.0.3 + tinyexec: 1.0.4 + obug@2.1.1: {} octokit@5.0.5: @@ -8581,6 +9120,16 @@ snapshots: '@octokit/types': 16.0.0 '@octokit/webhooks': 14.2.0 + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 + + ohash@1.1.6: {} + + ohash@2.0.11: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -8595,6 +9144,13 @@ snapshots: regex: 5.1.1 regex-recursion: 5.1.1 + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -8646,6 +9202,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} + pako@0.2.9: {} parent-module@1.0.1: @@ -8667,6 +9225,8 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-ms@4.0.0: {} + parse-numeric-range@1.3.0: {} parse5@7.3.0: @@ -8702,6 +9262,10 @@ snapshots: pathval@1.1.1: {} + perfect-debounce@1.0.0: {} + + perfect-debounce@2.1.0: {} + phosphor-svelte@3.1.0(svelte@5.53.10)(vite@7.3.2(@types/node@24.11.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.2)): dependencies: estree-walker: 3.0.3 @@ -8785,6 +9349,10 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + property-information@7.1.0: {} publint@0.1.16: @@ -8797,8 +9365,17 @@ snapshots: queue-microtask@1.2.3: {} + rc9@2.1.2: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + react-is@18.3.1: {} + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + readdirp@4.1.2: {} readdirp@5.0.0: {} @@ -9020,6 +9597,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -9196,6 +9775,8 @@ snapshots: strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-indent@4.1.1: {} strip-json-comments@3.1.1: {} @@ -9301,17 +9882,27 @@ snapshots: tailwindcss@4.2.4: {} - takumi-js@2.0.0-beta.14: + takumi-js@2.0.1(csstype@3.2.3): dependencies: - '@takumi-rs/core': 2.0.0-beta.14 - '@takumi-rs/helpers': 2.0.0-beta.14 - '@takumi-rs/wasm': 2.0.0-beta.14 + '@takumi-rs/core': 2.0.1(csstype@3.2.3) + '@takumi-rs/helpers': 2.0.1 + '@takumi-rs/wasm': 2.0.1(csstype@3.2.3) transitivePeerDependencies: + - csstype - react - react-dom tapable@2.3.0: {} + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + tar@7.5.19: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -9333,6 +9924,10 @@ snapshots: tinybench@2.9.0: {} + tinyexec@0.3.2: {} + + tinyexec@1.0.4: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -9434,6 +10029,8 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -9743,12 +10340,18 @@ snapshots: ws@8.20.0: {} + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} y18n@5.0.8: {} + yallist@4.0.0: {} + yallist@5.0.0: {} yaml@1.10.2: {} @@ -9771,6 +10374,8 @@ snapshots: yocto-queue@1.2.2: {} + yoctocolors@2.1.2: {} + yoga-layout@3.2.1: {} yoga-wasm-web@0.3.3: {}