From b002ef593f39f5f38bc4503b689936164d5d655a Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Sat, 11 Apr 2026 15:25:13 +0000 Subject: [PATCH 01/30] Address for improvements skills --- .agents/skills/add-to-fedify-init/SKILL.md | 6 +- .../SKILL.md | 85 ++++++++---- .../example/README.md | 14 +- .../example/src/logging.ts | 5 +- .../create-integration-package/SKILL.md | 129 +++++++++++++++--- mise.toml | 4 + 6 files changed, 188 insertions(+), 55 deletions(-) diff --git a/.agents/skills/add-to-fedify-init/SKILL.md b/.agents/skills/add-to-fedify-init/SKILL.md index 33dcfb0a9..95476899c 100644 --- a/.agents/skills/add-to-fedify-init/SKILL.md +++ b/.agents/skills/add-to-fedify-init/SKILL.md @@ -34,9 +34,9 @@ modifications consistent with the existing code style and context. ### Write the `WebFrameworkDescription` object Create a `packages/init/src/webframeworks/framework.ts` file and write the -`WebFrameworkDescription` object, referring to . Check -the specifications in the comments in `packages/init/src/types.ts` for -details. +`WebFrameworkDescription` object, referring to +[init/framework.ts](./init/framework.ts). Check the specifications in the +comments in `packages/init/src/types.ts` for details. ### Add to the `WEB_FRAMEWORK` array diff --git a/.agents/skills/create-example-app-with-integration/SKILL.md b/.agents/skills/create-example-app-with-integration/SKILL.md index 4ec3a185d..8f23fdcba 100644 --- a/.agents/skills/create-example-app-with-integration/SKILL.md +++ b/.agents/skills/create-example-app-with-integration/SKILL.md @@ -27,7 +27,7 @@ Two reference documents describe what the example must do and how it must look. Both are references only — do not create these files in the actual generated example app. -### +### [ARCHITECTURE.md](./ARCHITECTURE.md) Defines the example's functional behavior. Consult it for: @@ -44,10 +44,11 @@ Defines the example's functional behavior. Consult it for: bridge between the framework routing layer and the federation layer. - **Federation** and **Storing**: Which source files to set up (`src/federation.ts`, `src/store.ts`) and the template files they are - based on (, ). + based on ([example/src/federation.ts](./example/src/federation.ts), + [example/src/store.ts](./example/src/store.ts)). - **Logging**: How to use `@logtape/logtape` and `src/logging.ts`. -### +### [DESIGN.md](./DESIGN.md) Defines the example's visual presentation. Consult it for: @@ -61,7 +62,8 @@ Defines the example's visual presentation. Consult it for: - **Layout principles**: Spacing, containers, grid, and whitespace. - **Responsive behavior**: Single breakpoint at `768px` and mobile adaptations. - - **Static assets**: Files to serve from `public/` (). + - **Static assets**: Files to serve from `public/` + ([example/public/](./example/public/)). - **Page structure**: Detailed layout of the home page, actor profile page, and post detail page. @@ -70,19 +72,42 @@ Set up the example project -------------------------- Create an `examples/framework/` app and write an example for the new -package. Unless the framework itself prevents it, support both Deno and -Node.js environments. If Deno is supported, add a *deno.json* based on -; if Node.js is supported, add *package.json* based on - and *tsdown.config.ts*. Depending on the supported -environments, add the example path to the `workspace` field in -the root *deno.json* and to the `packages` field in -*pnpm-workspace.yaml*. +package. Copy the template files from [example/](./example/) as-is and modify +as needed. + + - [deno.json](./example/deno.jsonc) + - Deno configuration for the example app. + - If the framework does not support Deno, this file can be omitted. + - [package.json](./example/package.jsonc) + - Node.js configuration for the example app. + - If the framework does not support Node.js, this file can be omitted. + - [federation.ts](./example/src/federation.ts): Set up the Federation instance + and configure ActivityPub handling. + - [logging.ts](./example/src/logging.ts): Set up Logtape logging. + - [store.ts](./example/src/store.ts): Set up in-memory stores for actors, + posts, and followers. + - [fedify-logo.svg](./example/public/fedify-logo.svg) + - The Fedify logo. + - Use this file as favicon. + - You can make a custom logo to add the svg of the framework logo. + - [demo-profile.png](./example/public/demo-profile.png): + - Profile image for the demo user. + - You can make this image from the `fedify-logo.svg` rendering to png + - [style.css](./example/public/style.css): The CSS file for the example app. + - [theme.js](./example/public/theme.js): The JavaScript file for theme + toggling dark/light mode in the example app. + +Unless the framework itself prevents it, support both Deno +and Node.js environments. If Deno is supported, add a *deno.json* based on +[example/deno.json](./example/deno.jsonc); if Node.js is supported, add +*package.json* based on [example/package.jsonc](./example/package.jsonc) and +*tsdown.config.ts*. Depending on the supported environments, add the example +path to the `workspace` field in the root *deno.json* and to the `packages` +field in *pnpm-workspace.yaml*. If the framework is backend-only and needs a frontend framework, and there is no natural pairing like solidstart-solid, use Hono. -Copy the template files from as-is and modify as needed. - If the framework does not have a prescribed entry point, use `src/main.ts` as the application entry point. Define and export the framework app in `src/app.ts`, then import and run it from the entry file. Import @@ -90,26 +115,34 @@ as the application entry point. Define and export the framework app in When logging is needed, use the `getLogger` function from `@logtape/logtape` to create a logger. +When configuring the example app server, disable host restrictions and allow +all hosts so tunneled/public domains can access the app during development +and tests. + Implement the example app ------------------------- -Follow the specifications in and to -implement the example. In particular: +Follow the specifications in [ARCHITECTURE.md](./ARCHITECTURE.md) and +[DESIGN.md](./DESIGN.md) to implement the example. In particular: - Register the Fedify middleware in `src/app.ts` per the “Middleware integration” and “Reverse proxy support” sections of - . + [ARCHITECTURE.md](./ARCHITECTURE.md). - Set up federation logic in `src/federation.ts` based on - . Set up in-memory stores in `src/store.ts` - based on . + [example/src/federation.ts](./example/src/federation.ts). Set up in-memory + stores in `src/store.ts` based on + [example/src/store.ts](./example/src/store.ts). - Implement all routes listed in the “Routing” section of - , using `RequestContext` as described in the - “Server-side data access” section. - - Render HTML pages according to . Serve static assets from - the `public/` directory (copy from ). + [ARCHITECTURE.md](./ARCHITECTURE.md), using `RequestContext` as described + in the “Server-side data access” section. + - Render HTML pages according to [DESIGN.md](./DESIGN.md). Serve static assets + from the `public/` directory (copy from + [example/public/](./example/public/)). - Implement the SSE endpoint per the “Server-sent events” section of - . + [ARCHITECTURE.md](./ARCHITECTURE.md). + - Ensure the app can build and run in the supported environments + (Deno, Node.js, or both). Test the example with `mise test:examples` @@ -142,6 +175,11 @@ is broken: mise test:examples ~~~~ +If the `test:examples` can not be run, just run the server and test with curl: + +~~~~ bash +curl -H "Accept: application/activity+json" http://localhost:0000/users/demo + Lint, format, and final checks ------------------------------ @@ -152,3 +190,4 @@ root path. After implementation, run `mise run fmt && mise check`. If there are lint or format errors, fix them and run the command again until there are no errors. +~~~~ diff --git a/.agents/skills/create-example-app-with-integration/example/README.md b/.agents/skills/create-example-app-with-integration/example/README.md index 459617717..ae0210bc1 100644 --- a/.agents/skills/create-example-app-with-integration/example/README.md +++ b/.agents/skills/create-example-app-with-integration/example/README.md @@ -2,17 +2,19 @@ -프레임워크 example application -============================== +Fedify-프레임워크 integration example application +================================================= A comprehensive example of building a federated server application using [Fedify] with [프레임워크]. This example demonstrates how to create an ActivityPub-compatible federated social media server that can interact with -other federated platforms like Mastodon, Pleroma, and other ActivityPub +other federated platforms like [Mastodon], [Misskey], and other ActivityPub implementations using the Fedify and [프레임워크]. [Fedify]: https://fedify.dev [프레임워크]: https://프레임.워크/ +[Mastodon]: https://mastodon.social/ +[Misskey]: https://misskey.io/ Running the example @@ -40,14 +42,14 @@ Communicate with other federated servers 1. Tunnel your local server to the internet using `fedify tunnel` ~~~~ sh - fedify tunnel 0000 + fedify tunnel 0000 ~~~~ 2. Open the tunneled URL in your browser and check that the server is running properly. -3. Search your handle and follow from other federated servers such as Mastodon - or Misskey. +3. Search your handle and follow from other federated servers such as + [Mastodon] or [Misskey]. > [!NOTE] > [ActivityPub Academy] is a great resource to learn how to interact diff --git a/.agents/skills/create-example-app-with-integration/example/src/logging.ts b/.agents/skills/create-example-app-with-integration/example/src/logging.ts index 3b43c28c6..b59e792ee 100644 --- a/.agents/skills/create-example-app-with-integration/example/src/logging.ts +++ b/.agents/skills/create-example-app-with-integration/example/src/logging.ts @@ -1,4 +1,7 @@ -import { configure, getConsoleSink } from "@logtape/logtape"; +import { + configure, // If top-level await is not supported, replace with configureSync + getConsoleSink +} from "@logtape/logtape"; import { AsyncLocalStorage } from "node:async_hooks"; await configure({ diff --git a/.agents/skills/create-integration-package/SKILL.md b/.agents/skills/create-integration-package/SKILL.md index 8aa3cec5e..1cc07d5b8 100644 --- a/.agents/skills/create-integration-package/SKILL.md +++ b/.agents/skills/create-integration-package/SKILL.md @@ -25,7 +25,7 @@ Research the web framework -------------------------- Research the web framework for which the integration package will be -implemented. Fedify operates as middleware via +implemented using web searching. Fedify operates as middleware via [`Federation.fetch`](../../../packages/fedify/src/federation/federation.ts). The critical question is whether the given framework can act as a server framework and supports adding middleware. Search for and investigate @@ -36,6 +36,19 @@ to create the package. Even during package creation, it may turn out to be infeasible. In that case as well, explain the reasons in detail to the user and stop. +### Verify actual installed versions + +Framework documentation and the actual API of the installed version can +differ. For example, hook names or middleware signatures may change +between major versions, or the underlying runtime +may expose different APIs than what the framework docs describe. During +research, **always check the actual installed version** in the workspace: + + - Read the framework's *package.json* (or *node\_modules*) to confirm + the installed version. + - Cross-reference the installed version's API against the framework's + official documentation. + Implement the package --------------------- @@ -47,13 +60,26 @@ experience friction when connecting it. Create the package directory inside the `packages/` directory. For example, if the framework is named “framework”, create the directory `packages/framework/`. +Copy the template files from the [package/](./package/) directory into +the directory you created. Use this commands in the root path: + +~~~~ sh +mkdir -p packages/framework +cp -r .agents/skills/create-integration-package/package/* packages/framework/ +~~~~ + +Then, implement the package according to the framework. Since the comments in +the template are instructions for the developer to follow, please remove them +once the implementation is complete. + Unless there are significant hurdles, please set up the package to publish -on both JSR and NPM. +on both JSR and NPM. This means including both *deno.json* and *package.json* +files, and ensuring the code is compatible with both Deno and Node.js/Bun +environments. -Copy the template files from into the directory you created. Then, -implement the package according to the framework. Since the comments in the -template are instructions for the developer to follow, please remove them once -the implementation is complete. +After writing *deno.json* and *package.json* (or whenever you add or +change dependencies), run `mise run install` to update both *deno.lock* +and *pnpm-lock.yaml*. This ensures all lockfiles stay in sync. Add additional definitions as appropriate based on context. Aside from the main integration function and the `ContextDataFactory` type, keep module @@ -67,6 +93,34 @@ When a request arrives, the integration middleware calls `application/activity+json`, Fedify generates and returns the JSON-LD response directly. Framework-side routing does not execute. +#### Fallthrough on 404 (not found) + +When `federation.fetch()` does not recognize the path, it invokes the +`onNotFound` callback. The integration should delegate to the framework's +next handler so that non-federation routes (HTML pages, API endpoints, +etc.) are served normally. + +#### Deferred 406 (not acceptable) + +When Fedify owns the route but the client does not accept an ActivityPub +media type (e.g., a browser requesting `text/html`), it invokes the +`onNotAcceptable` callback. The correct behavior is **not** to return +406 immediately. Instead, give the framework a chance to serve its own +response (e.g., an HTML page at the same path). Only return 406 if the +framework also has no content for that path (i.e., the framework would +return 404). In Hono this looks like: + +~~~~ typescript +async onNotAcceptable(_req: Request): Promise { + await next(); + if (ctx.res.status !== 404) return ctx.res; + return new Response("Not acceptable", { + status: 406, + headers: { "Content-Type": "text/plain", Vary: "Accept" }, + }); +}, +~~~~ + ### Request conversion Some frameworks define and use their own `Request` type internally instead @@ -131,33 +185,59 @@ perform the required updates. Record the package addition in *CHANGES.md*. ### Tests You can test the integration using `mise test:init`, which will be explained -later, but write unit tests as well if possible. Import the `test` function -from `@fedify/fixture` to write runtime-agnostic tests that work across -Deno, Node.js, and Bun. Name test files with the `*.test.ts` convention -(e.g., `src/mod.test.ts`). +later, but write unit tests as well if possible. Name test files with the +`*.test.ts` convention (e.g., `src/mod.test.ts`). + +#### Test runner + +You can import the `test` function from `@fedify/fixture` for runtime-agnostic +tests that work across Deno, Node.js, and Bun. Validate the values with +`node:assert/strict` assertions. > **Warning**: `@fedify/fixture` is a **private** workspace package and > must never be imported from published (non-test) source files. Only > import it in `*.test.ts` files. +If the framework relies on virtual modules, build-time code generation, +or other mechanisms that make `@fedify/fixture` impractical, you may use the +framework's own test utilities or a compatible test runner (e.g., `vitest`). +Document the choice in the test file so future contributors understand why a +different runner was chosen. + +#### Minimum test coverage + +At a minimum, test the following scenarios (see +*packages/fastify/src/index.test.ts* for a thorough reference): + +1. Fedify handles a federation request successfully (returns JSON-LD). +2. Non-federation requests are delegated to the framework (`onNotFound` + fallthrough). +3. A 406 response is returned when the client does not accept + ActivityPub and no framework route matches + (`onNotAcceptable` + framework 404). +4. The framework serves its own response when a route is shared and + the client prefers HTML (`onNotAcceptable` + framework 200). + ### Implementation checklist 1. Create the *packages/framework/* directory -2. Write *src/mod.ts*: +2. Write source files (typically *src/mod.ts*): - Export the main integration middleware/handler function - Implement `federation.fetch()` invocation with - `onNotFound`/`onNotAcceptable` + `onNotFound`/`onNotAcceptable` (see “Request flow” for the + expected fallthrough behavior) - Export the `ContextDataFactory` type - - Write conversion functions if the framework does not natively support - Web API `Request`/`Response` + - Write conversion functions if the framework does not natively + support Web API `Request`/`Response` 3. Write *README.md* 4. Write *deno.json* (if publishing to JSR is intended) 5. Write *package.json* (if publishing to npm is intended) -6. Write *tsdown.config.ts* (if Node.js and Bun are supported) -7. Write tests if possible -8. Perform remaining updates per the “Adding a new package” section in +6. Run `mise run install` +7. Write *tsdown.config.ts* (if Node.js and Bun are supported) +8. Write tests if possible +9. Perform remaining updates per the “Adding a new package” section in *CONTRIBUTING.md* -9. Record changes in *CHANGES.md* +10. Record changes in *CHANGES.md* Lint, format, and final checks @@ -167,7 +247,7 @@ Add keywords related to the framework in `.hongdown.toml` and `cspell.json` in root path. Especially, the package name `@fedify/framework` should be added to the `.hongdown.toml`. -After implementation, run `mise run fmt && mise check`. +After implementation, run `mise run fmt && mise run check`. If there are lint or format errors, fix them and run the command again until there are no errors. @@ -175,6 +255,11 @@ there are no errors. Next steps ---------- -If there are no particular issues, continue by using the -`add-to-fedify-init` and `create-example-app-with-integration` skills to -complete the remaining implementation. +Unless there are critical blockers (e.g., the package fails to build or +tests do not pass), **strongly consider** proceeding immediately with +the following two skills to complete the full integration: + +1. **`add-to-fedify-init`**: Add the new package to the `fedify init` + command so users can select it when creating a new project. +2. **`create-example-app-with-integration`**: Create an example + application that demonstrates the integration. diff --git a/mise.toml b/mise.toml index d10d48986..c9032ea37 100644 --- a/mise.toml +++ b/mise.toml @@ -227,6 +227,10 @@ run = "deno task -f @fedify/fedify bench" description = "Run the Fedify CLI tool" run = "deno task cli" +[tasks.tunnel] +description = "Tunnel port with the Fedify CLI" +run = "deno task cli tunnel" + [tasks.update-init-deps] description = "Update third-party dependency versions in fedify init templates" run = "deno task -f @fedify/init update-init-deps" From 2456bb8e4a3551a49da0b469ebd0365efe2aa646 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Sun, 12 Apr 2026 15:46:34 +0000 Subject: [PATCH 02/30] Create @fedify/nuxt with GPT-5.3-codex in one-shot --- .hongdown.toml | 1 + AGENTS.md | 4 +- CHANGES.md | 12 + CONTRIBUTING.md | 1 + cspell.json | 2 + deno.json | 1 + deno.lock | 35 + docs/manual/integration.md | 72 + packages/fedify/README.md | 3 + packages/nuxt/README.md | 105 + packages/nuxt/deno.json | 26 + packages/nuxt/package.json | 70 + packages/nuxt/src/mod.test.ts | 89 + packages/nuxt/src/mod.ts | 115 + packages/nuxt/src/runtime/server/logic.ts | 53 + .../nuxt/src/runtime/server/middleware.ts | 46 + packages/nuxt/src/runtime/server/plugin.ts | 47 + packages/nuxt/tsdown.config.ts | 14 + pnpm-lock.yaml | 3764 +++++++++++++++-- pnpm-workspace.yaml | 5 +- 20 files changed, 4047 insertions(+), 418 deletions(-) create mode 100644 packages/nuxt/README.md create mode 100644 packages/nuxt/deno.json create mode 100644 packages/nuxt/package.json create mode 100644 packages/nuxt/src/mod.test.ts create mode 100644 packages/nuxt/src/mod.ts create mode 100644 packages/nuxt/src/runtime/server/logic.ts create mode 100644 packages/nuxt/src/runtime/server/middleware.ts create mode 100644 packages/nuxt/src/runtime/server/plugin.ts create mode 100644 packages/nuxt/tsdown.config.ts diff --git a/.hongdown.toml b/.hongdown.toml index 3357c8eec..42c1d51da 100644 --- a/.hongdown.toml +++ b/.hongdown.toml @@ -28,6 +28,7 @@ proper_nouns = [ "@fedify/koa", "@fedify/mysql", "@fedify/nestjs", + "@fedify/nuxt", "@fedify/postgres", "@fedify/redis", "@fedify/solidstart", diff --git a/AGENTS.md b/AGENTS.md index 583090d51..86531b93d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -89,6 +89,7 @@ for the complete package list. - *packages/init/*: Project initializer (`@fedify/init`) for Fedify. Separated from `@fedify/cli` to enable standalone use. + - *packages/nuxt/*: Nuxt integration (`@fedify/nuxt`) for Fedify. - *packages/create/*: Standalone CLI (`@fedify/create`) for creating new Fedify projects via `npm init @fedify`. - *docs/*: Documentation built with VitePress (see *docs/README.md*) @@ -331,7 +332,8 @@ The monorepo uses different build processes for different packages: 3. **Database adapters and integrations**: Use tsdown for TypeScript compilation: - *packages/amqp/*, *packages/astro/*, *packages/elysia*, *packages/express/*, *packages/h3/*, - *packages/mysql/*, *packages/sqlite/*, *packages/postgres/*, + *packages/mysql/*, *packages/nuxt/*, *packages/sqlite/*, + *packages/postgres/*, *packages/redis/*, *packages/nestjs/* - Built to support Node.js and Bun environments diff --git a/CHANGES.md b/CHANGES.md index 89b9a29fa..893479a76 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -47,6 +47,18 @@ To be released. [#601]: https://github.com/fedify-dev/fedify/pull/601 [#652]: https://github.com/fedify-dev/fedify/pull/652 +### @fedify/nuxt + + - Added `@fedify/nuxt` package for integrating Fedify with [Nuxt]. + It provides a Nuxt module that delegates non-federation requests to Nuxt, + supports shared-route content negotiation, and returns deferred + `406 Not acceptable` when Fedify routes are requested without + ActivityPub-compatible `Accept` headers and Nuxt has no matching page. + [[#149] by ChanHaeng Lee] + +[Nuxt]: https://nuxt.com/ +[#149]: https://github.com/fedify-dev/fedify/issues/149 + ### @fedify/init - Fixed errors when using `fedify init` with certain web framework diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e41f9bbad..33d6c218f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -392,6 +392,7 @@ The repository is organized as a monorepo with the following packages: - *packages/mysql/*: MySQL/MariaDB drivers (@fedify/mysql) for Fedify. - *packages/nestjs/*: NestJS integration (@fedify/nestjs) for Fedify. - *packages/next/*: Next.js integration (@fedify/next) for Fedify. + - *packages/nuxt/*: Nuxt integration (@fedify/nuxt) for Fedify. - *packages/postgres/*: PostgreSQL drivers (@fedify/postgres) for Fedify. - *packages/redis/*: Redis drivers (@fedify/redis) for Fedify. - *packages/relay/*: ActivityPub relay support (@fedify/relay) for Fedify. diff --git a/cspell.json b/cspell.json index 1f22276ec..c7516d114 100644 --- a/cspell.json +++ b/cspell.json @@ -77,6 +77,8 @@ "multitenancy", "Nexkey", "nodeinfo", + "nuxi", + "nuxt", "optique", "phensley", "Pico", diff --git a/deno.json b/deno.json index 869bc2e36..23c5d0181 100644 --- a/deno.json +++ b/deno.json @@ -17,6 +17,7 @@ "./packages/koa", "./packages/lint", "./packages/mysql", + "./packages/nuxt", "./packages/postgres", "./packages/redis", "./packages/relay", diff --git a/deno.lock b/deno.lock index 4949e9240..e9c65714f 100644 --- a/deno.lock +++ b/deno.lock @@ -78,6 +78,7 @@ "npm:@mjackson/node-fetch-server@0.7": "0.7.0", "npm:@multiformats/base-x@^4.0.1": "4.0.1", "npm:@nestjs/common@^11.0.1": "11.1.17_reflect-metadata@0.2.2_rxjs@7.8.2", + "npm:@nuxt/kit@4": "4.4.2", "npm:@opentelemetry/api@^1.9.0": "1.9.1", "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", "npm:@opentelemetry/core@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", @@ -2390,6 +2391,31 @@ "fastq" ] }, + "@nuxt/kit@4.4.2": { + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "dependencies": [ + "c12", + "consola", + "defu", + "destr", + "errx", + "exsolve", + "ignore@7.0.5", + "jiti@2.6.1", + "klona", + "mlly", + "ohash", + "pathe@2.0.3", + "pkg-types@2.3.0", + "rc9", + "scule", + "semver@7.7.4", + "tinyglobby", + "ufo", + "unctx", + "untyped" + ] + }, "@opentelemetry/api@1.9.1": { "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==" }, @@ -4619,6 +4645,9 @@ "stackframe" ] }, + "errx@0.1.0": { + "integrity": "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==" + }, "es-define-property@1.0.1": { "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, @@ -9403,6 +9432,12 @@ ] } }, + "packages/nuxt": { + "dependencies": [ + "npm:@nuxt/kit@4", + "npm:h3@^1.15.0" + ] + }, "packages/relay": { "dependencies": [ "jsr:@std/assert@^1.0.13" diff --git a/docs/manual/integration.md b/docs/manual/integration.md index d9829982d..48696d05c 100644 --- a/docs/manual/integration.md +++ b/docs/manual/integration.md @@ -4,6 +4,8 @@ description: >- explains how to integrate Fedify with web frameworks. --- + + Integration =========== @@ -359,6 +361,76 @@ app.use(router); [TanStack Start]: https://tanstack.com/start +Nuxt +---- + +_This API is available since Fedify 2.2.0._ + +[Nuxt] is a full-stack framework built on [Nitro] and [Vue]. The _@fedify/nuxt_ +package provides a Nuxt module that wires Fedify into Nitro middleware and +performs deferred `406 Not Acceptable` handling for content negotiation: + +::: code-group + +~~~~ sh [Deno] +deno add jsr:@fedify/nuxt +~~~~ + +~~~~ sh [npm] +npm add @fedify/nuxt +~~~~ + +~~~~ sh [pnpm] +pnpm add @fedify/nuxt +~~~~ + +~~~~ sh [Yarn] +yarn add @fedify/nuxt +~~~~ + +~~~~ sh [Bun] +bun add @fedify/nuxt +~~~~ + +::: + +Create your federation instance in _server/federation.ts_: + +~~~~ typescript +import { createFederation, MemoryKvStore } from "@fedify/fedify"; + +const federation = createFederation({ + kv: new MemoryKvStore(), +}); + +export default federation; +~~~~ + +Then enable the module in _nuxt.config.ts_: + +~~~~ typescript +export default defineNuxtConfig({ + modules: ["@fedify/nuxt"], +}); +~~~~ + +By default, _@fedify/nuxt_ loads the federation instance from +`~/server/federation`. You can customize module paths using `fedify` options: + +~~~~ typescript +export default defineNuxtConfig({ + modules: ["@fedify/nuxt"], + fedify: { + federationModule: "~/server/federation", + contextDataFactoryModule: "~/server/fedify-context", + }, +}); +~~~~ + +[Nuxt]: https://nuxt.com/ +[Vue]: https://vuejs.org/ + + SvelteKit --------- diff --git a/packages/fedify/README.md b/packages/fedify/README.md index 53a2d3918..40bb9b4c0 100644 --- a/packages/fedify/README.md +++ b/packages/fedify/README.md @@ -112,6 +112,7 @@ Here is the list of packages: | [@fedify/lint](/packages/lint/) | [JSR][jsr:@fedify/lint] | [npm][npm:@fedify/lint] | Linting utilities | | [@fedify/nestjs](/packages/nestjs/) | | [npm][npm:@fedify/nestjs] | NestJS integration | | [@fedify/next](/packages/next/) | | [npm][npm:@fedify/next] | Next.js integration | +| [@fedify/nuxt](/packages/nuxt/) | [JSR][jsr:@fedify/nuxt] | [npm][npm:@fedify/nuxt] | Nuxt integration | | [@fedify/mysql](/packages/mysql/) | [JSR][jsr:@fedify/mysql] | [npm][npm:@fedify/mysql] | MySQL/MariaDB driver | | [@fedify/postgres](/packages/postgres/) | [JSR][jsr:@fedify/postgres] | [npm][npm:@fedify/postgres] | PostgreSQL driver | | [@fedify/redis](/packages/redis/) | [JSR][jsr:@fedify/redis] | [npm][npm:@fedify/redis] | Redis driver | @@ -155,6 +156,8 @@ Here is the list of packages: [npm:@fedify/lint]: https://www.npmjs.com/package/@fedify/lint [npm:@fedify/nestjs]: https://www.npmjs.com/package/@fedify/nestjs [npm:@fedify/next]: https://www.npmjs.com/package/@fedify/next +[jsr:@fedify/nuxt]: https://jsr.io/@fedify/nuxt +[npm:@fedify/nuxt]: https://www.npmjs.com/package/@fedify/nuxt [jsr:@fedify/mysql]: https://jsr.io/@fedify/mysql [npm:@fedify/mysql]: https://www.npmjs.com/package/@fedify/mysql [jsr:@fedify/postgres]: https://jsr.io/@fedify/postgres diff --git a/packages/nuxt/README.md b/packages/nuxt/README.md new file mode 100644 index 000000000..6c40a5606 --- /dev/null +++ b/packages/nuxt/README.md @@ -0,0 +1,105 @@ + + +@fedify/nuxt: Integrate Fedify with Nuxt +======================================== + +[![JSR][JSR badge]][JSR] +[![npm][npm badge]][npm] +[![Matrix][Matrix badge]][Matrix] +[![Follow @fedify@hollo.social][@fedify@hollo.social badge]][@fedify@hollo.social] + +This package provides a simple way to integrate [Fedify] with [Nuxt]. + +Supported framework versions: + + - Nuxt 4.x + - Nitro 2.x (Nuxt 4 runtime) + +[JSR badge]: https://jsr.io/badges/@fedify/nuxt +[JSR]: https://jsr.io/@fedify/nuxt +[npm badge]: https://img.shields.io/npm/v/@fedify/nuxt?logo=npm +[npm]: https://www.npmjs.com/package/@fedify/nuxt +[Matrix badge]: https://img.shields.io/matrix/fedify%3Amatrix.org +[Matrix]: https://matrix.to/#/#fedify:matrix.org +[@fedify@hollo.social badge]: https://fedi-badge.deno.dev/@fedify@hollo.social/followers.svg +[@fedify@hollo.social]: https://hollo.social/@fedify +[Fedify]: https://fedify.dev/ +[Nuxt]: https://nuxt.com/ + + +Installation +------------ + +~~~~ bash +deno add jsr:@fedify/nuxt +# or +npm add @fedify/nuxt +# or +pnpm add @fedify/nuxt +# or +yarn add @fedify/nuxt +# or +bun add @fedify/nuxt +~~~~ + + +Usage +----- + +Create your `Federation` instance in *server/federation.ts*: + +~~~~ typescript +import { createFederation, MemoryKvStore } from "@fedify/fedify"; + +const federation = createFederation({ + kv: new MemoryKvStore(), +}); + +// ... configure your federation ... + +export default federation; +~~~~ + +Then enable the Nuxt module in *nuxt.config.ts*: + +~~~~ typescript +export default defineNuxtConfig({ + modules: ["@fedify/nuxt"], +}); +~~~~ + +By default, `@fedify/nuxt` loads your Federation instance from +`~/server/federation`. + +If your project uses a different file path or context data factory, +configure the module options: + +~~~~ typescript +export default defineNuxtConfig({ + modules: ["@fedify/nuxt"], + fedify: { + federationModule: "~/server/federation", + contextDataFactoryModule: "~/server/fedify-context", + }, +}); +~~~~ + +The context data factory module should export either: + + - default function, or + - `contextDataFactory` named export + +with this signature: + +~~~~ typescript +import type { ContextDataFactory } from "@fedify/nuxt"; + +const contextDataFactory: ContextDataFactory = async (event, request) => { + return { + ip: event.node.req.socket.remoteAddress, + method: request.method, + }; +}; + +export default contextDataFactory; +~~~~ diff --git a/packages/nuxt/deno.json b/packages/nuxt/deno.json new file mode 100644 index 000000000..56e52c515 --- /dev/null +++ b/packages/nuxt/deno.json @@ -0,0 +1,26 @@ +{ + "name": "@fedify/nuxt", + "version": "2.2.0", + "license": "MIT", + "exports": { + ".": "./src/mod.ts" + }, + "imports": { + "@nuxt/kit": "npm:@nuxt/kit@^4.0.0", + "h3": "npm:h3@^1.15.0" + }, + "exclude": [ + "dist", + "node_modules" + ], + "publish": { + "exclude": [ + "**/*.test.ts", + "tsdown.config.ts" + ] + }, + "tasks": { + "test": "deno test", + "check": "deno fmt --check && deno lint && deno check src/*.ts" + } +} diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json new file mode 100644 index 000000000..44cd82477 --- /dev/null +++ b/packages/nuxt/package.json @@ -0,0 +1,70 @@ +{ + "name": "@fedify/nuxt", + "version": "2.2.0", + "description": "Integrate Fedify with Nuxt", + "keywords": [ + "Fedify", + "ActivityPub", + "Fediverse", + "Nuxt" + ], + "author": { + "name": "ChanHaeng Lee", + "email": "2chanhaeng@gmail.com", + "url": "https://chomu.dev/" + }, + "homepage": "https://fedify.dev/", + "repository": { + "type": "git", + "url": "git+https://github.com/fedify-dev/fedify.git", + "directory": "packages/nuxt" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/fedify-dev/fedify/issues" + }, + "funding": [ + "https://opencollective.com/fedify", + "https://github.com/sponsors/dahlia" + ], + "type": "module", + "main": "./dist/mod.cjs", + "module": "./dist/mod.js", + "types": "./dist/mod.d.ts", + "exports": { + ".": { + "require": { + "types": "./dist/mod.d.cts", + "default": "./dist/mod.cjs" + }, + "import": { + "types": "./dist/mod.d.ts", + "default": "./dist/mod.js" + } + }, + "./package.json": "./package.json" + }, + "files": [ + "dist/", + "src/runtime/", + "package.json" + ], + "peerDependencies": { + "@fedify/fedify": "workspace:^", + "@nuxt/kit": "catalog:", + "h3": "catalog:", + "nuxt": "catalog:" + }, + "devDependencies": { + "@types/node": "catalog:", + "tsdown": "catalog:", + "typescript": "catalog:" + }, + "scripts": { + "build:self": "tsdown", + "build": "pnpm --filter @fedify/nuxt... run build:self", + "prepack": "pnpm build", + "prepublish": "pnpm build", + "test": "node --experimental-transform-types --test" + } +} diff --git a/packages/nuxt/src/mod.test.ts b/packages/nuxt/src/mod.test.ts new file mode 100644 index 000000000..650017d2a --- /dev/null +++ b/packages/nuxt/src/mod.test.ts @@ -0,0 +1,89 @@ +import { strict as assert } from "node:assert"; +import { test } from "node:test"; +import { + fetchWithFedify, + resolveDeferredNotAcceptable, +} from "./runtime/server/logic.ts"; + +test("Fedify handles federation request successfully", async () => { + const response = await fetchWithFedify( + () => + Promise.resolve( + new Response('{"type":"Person"}', { + status: 200, + headers: { "Content-Type": "application/activity+json" }, + }), + ), + new Request("https://example.com/users/alice"), + undefined, + ); + + assert.equal(response.kind, "handled"); + if (response.kind === "handled") { + assert.equal(response.response.status, 200); + assert.equal( + response.response.headers.get("Content-Type"), + "application/activity+json", + ); + } +}); + +test("non-federation request is delegated on notFound", async () => { + const response = await fetchWithFedify( + async (_request, options) => { + return await options.onNotFound!(new Request("https://example.com/")); + }, + new Request("https://example.com/"), + undefined, + ); + + assert.equal(response.kind, "not-found"); +}); + +test( + "returns 406 when client does not accept ActivityPub and framework is 404", + async () => { + const response = await fetchWithFedify( + async (_request, options) => { + return await options.onNotAcceptable!( + new Request("https://example.com/users/alice", { + headers: { Accept: "text/html" }, + }), + ); + }, + new Request("https://example.com/users/alice", { + headers: { Accept: "text/html" }, + }), + undefined, + ); + + assert.equal(response.kind, "not-acceptable"); + + const negotiated = resolveDeferredNotAcceptable(true, 404); + assert.ok(negotiated); + assert.equal(negotiated.status, 406); + assert.equal(negotiated.headers.get("Vary"), "Accept"); + assert.equal(await negotiated.text(), "Not acceptable"); + }, +); + +test("framework response is preserved for shared HTML route", async () => { + const response = await fetchWithFedify( + async (_request, options) => { + return await options.onNotAcceptable!( + new Request("https://example.com/users/alice", { + headers: { Accept: "text/html" }, + }), + ); + }, + new Request("https://example.com/users/alice", { + headers: { Accept: "text/html" }, + }), + undefined, + ); + + assert.equal(response.kind, "not-acceptable"); + + const negotiated = resolveDeferredNotAcceptable(true, 200); + assert.equal(negotiated, undefined); +}); diff --git a/packages/nuxt/src/mod.ts b/packages/nuxt/src/mod.ts new file mode 100644 index 000000000..391bddf55 --- /dev/null +++ b/packages/nuxt/src/mod.ts @@ -0,0 +1,115 @@ +import { + addServerHandler, + addServerPlugin, + addTemplate, + createResolver, + defineNuxtModule, + resolveAlias, +} from "@nuxt/kit"; +import type { H3Event } from "h3"; + +/** + * A factory function that creates context data for the Federation instance. + */ +export type ContextDataFactory = ( + event: H3Event, + request: Request, +) => TContextData | Promise; + +export interface ModuleOptions { + /** + * Path to a module that exports the configured Federation instance. + * + * The module must export either: + * - a default export of `Federation`, or + * - a named export `federation`. + */ + federationModule: string; + + /** + * Optional path to a module that exports context data factory. + * + * The module must export either: + * - a default export function, or + * - a named export `contextDataFactory`. + */ + contextDataFactoryModule?: string; +} + +/** + * Nuxt module to integrate Fedify with Nuxt/Nitro request handling. + */ +const fedifyNuxtModule: ReturnType> = + defineNuxtModule({ + meta: { + name: "@fedify/nuxt", + configKey: "fedify", + }, + defaults: { + federationModule: "~/server/federation", + contextDataFactoryModule: undefined, + }, + setup( + options: ModuleOptions, + nuxt: { options: { alias: Record } }, + ) { + const resolver = createResolver(import.meta.url); + const federationModule = resolveAlias( + options.federationModule, + nuxt.options.alias, + ); + const contextDataFactoryModule = options.contextDataFactoryModule == null + ? undefined + : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); + + const middlewareTemplate = addTemplate({ + filename: "fedify-nuxt-options.mjs", + getContents: () => { + const imports = [ + `import * as federationModule from ${ + JSON.stringify(federationModule) + };`, + `import { createFedifyMiddleware } from ${ + JSON.stringify( + resolver.resolve("../src/runtime/server/middleware.ts"), + ) + };`, + ]; + + if (contextDataFactoryModule != null) { + imports.push( + `import * as contextFactoryModule from ${ + JSON.stringify(contextDataFactoryModule) + };`, + ); + } + + const contextFactoryResolver = contextDataFactoryModule == null + ? "const contextDataFactory = undefined;" + : [ + "const contextDataFactory =", + " contextFactoryModule.default ??", + " contextFactoryModule.contextDataFactory;", + ].join("\n"); + + return [ + ...imports, + "const federation = federationModule.default ?? federationModule.federation;", + contextFactoryResolver, + "export default createFedifyMiddleware(federation, contextDataFactory);", + "", + ].join("\n"); + }, + }); + + addServerHandler({ + route: "", + middleware: true, + handler: middlewareTemplate.dst, + }); + + addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); + }, + }); + +export default fedifyNuxtModule; diff --git a/packages/nuxt/src/runtime/server/logic.ts b/packages/nuxt/src/runtime/server/logic.ts new file mode 100644 index 000000000..8b072197b --- /dev/null +++ b/packages/nuxt/src/runtime/server/logic.ts @@ -0,0 +1,53 @@ +import type { FederationFetchOptions } from "@fedify/fedify/federation"; + +const DUMMY_NOT_FOUND_RESPONSE = new Response("", { status: 404 }); + +const createNotAcceptableResponse = () => + new Response("Not acceptable", { + status: 406, + headers: { + "Content-Type": "text/plain", + Vary: "Accept", + }, + }); + +export const DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY = + "__fedify_deferred_not_acceptable__"; + +export type FetchResult = + | { kind: "handled"; response: Response } + | { kind: "not-found" } + | { kind: "not-acceptable" }; + +export async function fetchWithFedify( + fetcher: ( + request: Request, + options: FederationFetchOptions, + ) => Promise, + request: Request, + contextData: unknown, +): Promise { + const response = await fetcher(request, { + contextData, + onNotFound: () => DUMMY_NOT_FOUND_RESPONSE, + onNotAcceptable: createNotAcceptableResponse, + }); + + if (response === DUMMY_NOT_FOUND_RESPONSE) { + return { kind: "not-found" }; + } + + if (response.status === 406) { + return { kind: "not-acceptable" }; + } + + return { kind: "handled", response }; +} + +export function resolveDeferredNotAcceptable( + isDeferred: boolean, + frameworkStatus: number, +): Response | undefined { + if (!isDeferred || frameworkStatus !== 404) return undefined; + return createNotAcceptableResponse(); +} diff --git a/packages/nuxt/src/runtime/server/middleware.ts b/packages/nuxt/src/runtime/server/middleware.ts new file mode 100644 index 000000000..0d6a8faa3 --- /dev/null +++ b/packages/nuxt/src/runtime/server/middleware.ts @@ -0,0 +1,46 @@ +import type { Federation } from "@fedify/fedify/federation"; +import { defineEventHandler, toWebRequest } from "h3"; +import { + DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, + fetchWithFedify, +} from "./logic.ts"; + +function assertFederation( + federation: unknown, +): asserts federation is Federation { + const candidate = federation as { fetch?: unknown } | null | undefined; + if (candidate == null || typeof candidate.fetch !== "function") { + throw new TypeError( + "@fedify/nuxt: Federation instance is missing. " + + "Export default Federation (or named 'federation') from the configured module.", + ); + } +} + +export function createFedifyMiddleware( + federation: unknown, + contextDataFactory?: (event: unknown, request: Request) => unknown, +) { + assertFederation(federation); + + return defineEventHandler(async (event) => { + const request = toWebRequest(event); + const contextData = typeof contextDataFactory === "function" + ? await contextDataFactory(event, request) + : undefined; + + const result = await fetchWithFedify( + federation.fetch.bind(federation), + request, + contextData, + ); + + if (result.kind === "not-found") return; + if (result.kind === "not-acceptable") { + event.context[DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY] = true; + return; + } + + return result.response; + }); +} diff --git a/packages/nuxt/src/runtime/server/plugin.ts b/packages/nuxt/src/runtime/server/plugin.ts new file mode 100644 index 000000000..a9c5eaebc --- /dev/null +++ b/packages/nuxt/src/runtime/server/plugin.ts @@ -0,0 +1,47 @@ +import { getResponseStatus, setResponseHeader, setResponseStatus } from "h3"; +import type { H3Event } from "h3"; +import { + DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, + resolveDeferredNotAcceptable, +} from "./logic.ts"; + +interface ResponsePayload { + body?: unknown; +} + +interface MinimalNitroApp { + hooks: { + hook( + name: "beforeResponse", + callback: (event: H3Event, payload: ResponsePayload) => void, + ): void; + }; +} + +type NitroAppPlugin = (nitroApp: MinimalNitroApp) => void; + +const fedifyPlugin: NitroAppPlugin = (nitroApp: MinimalNitroApp) => { + nitroApp.hooks.hook( + "beforeResponse", + (event: H3Event, payload: ResponsePayload) => { + const deferred = + event.context[DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY] === true; + delete event.context[DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY]; + + const negotiatedResponse = resolveDeferredNotAcceptable( + deferred, + getResponseStatus(event), + ); + if (negotiatedResponse == null) return; + + setResponseStatus(event, negotiatedResponse.status); + negotiatedResponse.headers.forEach((value: string, key: string) => { + setResponseHeader(event, key, value); + }); + + payload.body = "Not acceptable"; + }, + ); +}; + +export default fedifyPlugin; diff --git a/packages/nuxt/tsdown.config.ts b/packages/nuxt/tsdown.config.ts new file mode 100644 index 000000000..bf33f512d --- /dev/null +++ b/packages/nuxt/tsdown.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: ["src/mod.ts"], + dts: true, + format: ["esm", "cjs"], + platform: "node", + outExtensions({ format }) { + return { + js: format === "cjs" ? ".cjs" : ".js", + dts: format === "cjs" ? ".d.cts" : ".d.ts", + }; + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53107c1d5..09dacd1d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,9 @@ catalogs: '@nestjs/common': specifier: ^11.0.1 version: 11.1.4 + '@nuxt/kit': + specifier: ^4.4.0 + version: 4.4.2 '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -138,6 +141,9 @@ catalogs: next: specifier: ^15.4.6 version: 15.5.0 + nuxt: + specifier: ^4.4.2 + version: 4.4.2 pkijs: specifier: ^3.3.3 version: 3.3.3 @@ -342,16 +348,16 @@ importers: version: 5.9.3 vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3) + version: 1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(fuse.js@7.3.0)(lightningcss@1.30.1)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3) vitepress-plugin-group-icons: specifier: ^1.3.5 - version: 1.6.1(markdown-it@14.1.0)(vite@7.1.3(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.6.1(markdown-it@14.1.0)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) vitepress-plugin-llms: specifier: ^1.1.0 version: 1.6.0 vitepress-plugin-mermaid: specifier: ^2.0.17 - version: 2.0.17(mermaid@11.7.0)(vitepress@1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3)) + version: 2.0.17(mermaid@11.7.0)(vitepress@1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(fuse.js@7.3.0)(lightningcss@1.30.1)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3)) x-forwarded-fetch: specifier: ^0.2.0 version: 0.2.0 @@ -360,10 +366,10 @@ importers: dependencies: '@astrojs/node': specifier: ^10.0.3 - version: 10.0.4(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1)) + version: 10.0.4(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3)) '@deno/astro-adapter': specifier: ^0.3.2 - version: 0.3.2(@opentelemetry/api@1.9.0)(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1)) + version: 0.3.2(@opentelemetry/api@1.9.0)(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3)) '@fedify/astro': specifier: workspace:^ version: link:../../packages/astro @@ -375,7 +381,7 @@ importers: version: link:../../packages/vocab astro: specifier: 'catalog:' - version: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1) + version: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3) examples/cloudflare-workers: dependencies: @@ -665,13 +671,13 @@ importers: version: 0.15.4(solid-js@1.9.11) '@solidjs/start': specifier: ^1.3.2 - version: 1.3.2(solid-js@1.9.11)(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.3.2(solid-js@1.9.11)(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) solid-js: specifier: ^1.9.11 version: 1.9.11 vinxi: specifier: ^0.5.11 - version: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + version: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) devDependencies: typescript: specifier: ^5.5.4 @@ -700,16 +706,16 @@ importers: version: 9.32.0 '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.1.0(@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))) + version: 6.1.0(@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))) '@sveltejs/kit': specifier: ^2.22.0 - version: 2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@sveltejs/vite-plugin-svelte': specifier: ^6.0.0 - version: 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@tailwindcss/vite': specifier: ^4.0.0 - version: 4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) eslint: specifier: ^9.18.0 version: 9.32.0(jiti@2.6.1) @@ -748,7 +754,7 @@ importers: version: 8.41.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2) vite: specifier: ^7.0.4 - version: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + version: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) packages/amqp: dependencies: @@ -791,7 +797,7 @@ importers: version: link:../fedify astro: specifier: 'catalog:' - version: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1) + version: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3) devDependencies: tsdown: specifier: 'catalog:' @@ -811,7 +817,7 @@ importers: devDependencies: '@cloudflare/vitest-pool-workers': specifier: ^0.8.31 - version: 0.8.71(@cloudflare/workers-types@4.20251221.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 0.8.71(@cloudflare/workers-types@4.20251221.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) tsdown: specifier: 'catalog:' version: 0.21.7(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(typescript@5.9.3) @@ -820,7 +826,7 @@ importers: version: 5.9.3 vitest: specifier: ~3.2.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) wrangler: specifier: ^4.21.1 version: 4.22.0(@cloudflare/workers-types@4.20251221.0) @@ -1387,6 +1393,31 @@ importers: specifier: 'catalog:' version: 5.9.3 + packages/nuxt: + dependencies: + '@fedify/fedify': + specifier: workspace:^ + version: link:../fedify + '@nuxt/kit': + specifier: 'catalog:' + version: 4.4.2(magicast@0.5.2) + h3: + specifier: 'catalog:' + version: 1.15.3 + nuxt: + specifier: 'catalog:' + version: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3) + devDependencies: + '@types/node': + specifier: 'catalog:' + version: 22.19.1 + tsdown: + specifier: 'catalog:' + version: 0.21.7(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(typescript@5.9.3) + typescript: + specifier: 'catalog:' + version: 5.9.3 + packages/postgres: dependencies: '@fedify/fedify': @@ -1487,7 +1518,7 @@ importers: version: link:../fedify '@solidjs/start': specifier: ^1.3.0 - version: 1.3.2(solid-js@1.9.11)(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.3.2(solid-js@1.9.11)(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) devDependencies: tsdown: specifier: 'catalog:' @@ -1531,7 +1562,7 @@ importers: version: link:../fedify '@sveltejs/kit': specifier: 'catalog:' - version: 2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) devDependencies: tsdown: specifier: 'catalog:' @@ -1856,14 +1887,28 @@ packages: resolution: {integrity: sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==} engines: {node: ^20.19.0 || >=22.12.0} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.18.6': resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} @@ -1878,10 +1923,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.28.6': resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -1911,6 +1970,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/parser@8.0.0-rc.3': resolution: {integrity: sha512-B20dvP3MfNc/XS5KKCHy/oyWl5IA6Cn9YjXRdDlCjNmUFrjvLXMNUfQq/QUy9fnG2gYkKKcrto2YaF9B32ToOQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1928,6 +1992,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} @@ -1944,6 +2014,21 @@ packages: resolution: {integrity: sha512-mOm5ZrYmphGfqVWoH5YYMTITb3cDXsFgmvFlvkvWDMsR9X8RFnt7a0Wb6yNIdoFsiMO9WjYLq+U/FMtqIYAF8Q==} engines: {node: ^20.19.0 || >=22.12.0} + '@bomb.sh/tab@0.0.14': + resolution: {integrity: sha512-cHMk2LI430MVoX1unTt9oK1iZzQS4CYDz97MSxKLNErW69T43Z2QLFTpdS/3jVOIKrIADWfuxQ+nQNJkNV7E4w==} + hasBin: true + peerDependencies: + cac: ^6.7.14 + citty: ^0.1.6 || ^0.2.0 + commander: ^13.1.0 + peerDependenciesMeta: + cac: + optional: true + citty: + optional: true + commander: + optional: true + '@braintree/sanitize-url@6.0.4': resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} @@ -1975,6 +2060,12 @@ packages: '@chevrotain/utils@11.0.3': resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@clack/core@1.2.0': + resolution: {integrity: sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==} + + '@clack/prompts@1.2.0': + resolution: {integrity: sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==} + '@cloudflare/kv-asset-handler@0.4.0': resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} engines: {node: '>=18.0.0'} @@ -2071,6 +2162,9 @@ packages: '@cloudflare/workers-types@4.20251221.0': resolution: {integrity: sha512-VVTEhY29TtwIwjBjpRrdT51Oqu0JlXijc5TiEKFCjwouUSn+5VhzoTSaz7UBjVOu4vfvcQmjqt/dzwBUR7c95w==} + '@colordx/core@5.0.3': + resolution: {integrity: sha512-xBQ0MYRTNNxW3mS2sJtlQTT7C3Sasqgh1/PsHva7fyDb5uqYY+gv9V0utDdX8X80mqzbGz3u/IDJdn2d/uW09g==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -2151,6 +2245,14 @@ packages: search-insights: optional: true + '@dxup/nuxt@0.4.0': + resolution: {integrity: sha512-28LDotpr9G2knUse3cQYsOo6NJq5yhABv4ByRVRYJUmzf9Q31DI7rpRek4POlKy1aAcYyKgu5J2616pyqLohYg==} + peerDependencies: + typescript: '*' + + '@dxup/unimport@0.1.2': + resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==} + '@emnapi/core@1.4.3': resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} @@ -3449,6 +3551,9 @@ packages: '@jridgewell/trace-mapping@0.3.28': resolution: {integrity: sha512-KNNHHwW3EIp4EDYOvYFGyIFfx36R2dNJYH4knnZlF8T5jdbD5Wx8xmSaQ2gP9URkJ04LGEtlcCtwArKcmFcwKw==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3477,6 +3582,12 @@ packages: '@jsr/std__path@1.1.0': resolution: {integrity: sha512-rnxGg/nJGfDbJO+xIJ9YEzLD7dCzjr3NHShf4dbnlt44WEYNwMjg+TcDO6F2NPHBnn/6iUFwbnNzysrZvyD1Og==, tarball: https://npm.jsr.io/~/11/@jsr/std__path/1.1.0.tgz} + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@logtape/file@2.0.5': resolution: {integrity: sha512-SJ2UZ00IJptilqDMFwPIGmZLMTYNZbP7k4+7aBfP5DoLVifSmQoaxP2HtXMdExXhGP4/JrFepLE86ryPBUKB/Q==} peerDependencies: @@ -3716,6 +3827,86 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@nuxt/cli@3.34.0': + resolution: {integrity: sha512-KVI4xSo96UtUUbmxr9ouWTytbj1LzTw5alsM4vC/gSY/l8kPMRAlq0XpNSAVTDJyALzLY70WhaIMX24LJLpdFw==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@nuxt/schema': ^4.3.1 + peerDependenciesMeta: + '@nuxt/schema': + optional: true + + '@nuxt/devalue@2.0.2': + resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} + + '@nuxt/devtools-kit@3.2.4': + resolution: {integrity: sha512-Yxy2Xgmq5hf3dQy983V0xh0OJV2mYwRZz9eVIGc3EaribdFGPDNGMMbYqX9qCty3Pbxn/bCF3J0UyPaNlHVayQ==} + peerDependencies: + vite: '>=6.0' + + '@nuxt/devtools-wizard@3.2.4': + resolution: {integrity: sha512-5tu2+Quu9XTxwtpzM8CUN0UKn/bzZIfJcoGd+at5Yy1RiUQJ4E52tRK0idW1rMSUDkbkvX3dSnu8Tpj7SAtWdQ==} + hasBin: true + + '@nuxt/devtools@3.2.4': + resolution: {integrity: sha512-VPbFy7hlPzWpEZk4BsuVpNuHq1ZYGV9xezjb7/NGuePuNLqeNn74YZugU+PCtva7OwKhEeTXmMK0Mqo/6+nwNA==} + hasBin: true + peerDependencies: + '@vitejs/devtools': '*' + vite: '>=6.0' + peerDependenciesMeta: + '@vitejs/devtools': + optional: true + + '@nuxt/kit@4.4.2': + resolution: {integrity: sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==} + engines: {node: '>=18.12.0'} + + '@nuxt/nitro-server@4.4.2': + resolution: {integrity: sha512-iMTfraWcpA0MuEnnEI8JFK/4DODY4ss1CfB8m3sBVOqW9jpY1Z6hikxzrtN+CadtepW2aOI5d8TdX5hab+Sb4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@babel/plugin-proposal-decorators': ^7.25.0 + '@rollup/plugin-babel': ^6.0.0 || ^7.0.0 + nuxt: ^4.4.2 + peerDependenciesMeta: + '@babel/plugin-proposal-decorators': + optional: true + '@rollup/plugin-babel': + optional: true + + '@nuxt/schema@4.4.2': + resolution: {integrity: sha512-/q6C7Qhiricgi+PKR7ovBnJlKTL0memCbA1CzRT+itCW/oeYzUfeMdQ35mGntlBoyRPNrMXbzuSUhfDbSCU57w==} + engines: {node: ^14.18.0 || >=16.10.0} + + '@nuxt/telemetry@2.8.0': + resolution: {integrity: sha512-zAwXY24KYvpLTmiV+osagd2EHkfs5IF+7oDZYTQoit5r0kPlwaCNlzHp5I/wUAWT4LBw6lG8gZ6bWidAdv/erQ==} + engines: {node: '>=18.12.0'} + hasBin: true + peerDependencies: + '@nuxt/kit': '>=3.0.0' + + '@nuxt/vite-builder@4.4.2': + resolution: {integrity: sha512-fJaIwMA8ID6BU5EqmoDvnhq4qYDJeWjdHk4jfqy8D3Nm7CoUW0BvX7Ee92XoO05rtUiClGlk/NQ1Ii8hs3ZIbw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@babel/plugin-proposal-decorators': ^7.25.0 + '@babel/plugin-syntax-jsx': ^7.25.0 + nuxt: 4.4.2 + rolldown: ^1.0.0-beta.38 + rollup-plugin-visualizer: ^6.0.0 || ^7.0.1 + vue: ^3.3.4 + peerDependenciesMeta: + '@babel/plugin-proposal-decorators': + optional: true + '@babel/plugin-syntax-jsx': + optional: true + rolldown: + optional: true + rollup-plugin-visualizer: + optional: true + '@opentelemetry/api-logs@0.211.0': resolution: {integrity: sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg==} engines: {node: '>=8.0.0'} @@ -4121,139 +4312,499 @@ packages: '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxc-project/types@0.122.0': - resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@oxc-minify/binding-android-arm-eabi@0.117.0': + resolution: {integrity: sha512-5Hf2KsGRjxp3HnPU/mse7cQJa5tWfMFUPZQcgSMVsv2JZnGFFOIDzA0Oja2KDD+VPJqMpEJKc2dCHAGZgJxsGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - '@parcel/watcher-android-arm64@2.5.6': - resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-android-arm64@0.117.0': + resolution: {integrity: sha512-uuxGwxA5J4Sap+gz4nxyM/rer6q2A4X1Oe8HpE0CZQyb5cSBULQ15btZiVG3xOBctI5O+c2dwR1aZAP4oGKcLw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.6': - resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-darwin-arm64@0.117.0': + resolution: {integrity: sha512-lLBf75cxUSLydumToKtGTwbLqO/1urScblJ33Vx0uF38M2ZbL2x51AybBV5vlfLjYNrxvQ8ov0Bj/OhsVO/biA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.6': - resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-darwin-x64@0.117.0': + resolution: {integrity: sha512-wBWwP1voLZMuN4hpe1HRtkPBd4/o/1qan5XssmmI/hewBvGHEHkyvVLS0zu+cKqXDxYzYvb/p+EqU+xSXhEl4A==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.6': - resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-freebsd-x64@0.117.0': + resolution: {integrity: sha512-pYSacHw698oH2vb70iP1cHk6x0zhvAuOvdskvNtEqvfziu8MSjKXa699vA9Cx72+DH5rwVuj1I3f+7no2fWglA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.6': - resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-linux-arm-gnueabihf@0.117.0': + resolution: {integrity: sha512-Ugm4Qj7F2+bccjhHCjjnSNHBDPyvjPXWrntID4WJpSrPqt+Az/o0EGdty9sWOjQXRZiTVpa80uqCWZQUn94yTA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm-musl@2.5.6': - resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-linux-arm-musleabihf@0.117.0': + resolution: {integrity: sha512-qrY6ZviO9wVRI/jl4nRZO4B9os8jaJQemMeWIyFInZNk3lhqihId8iBqMKibJnRaf+JRxLM9j68atXkFRhOHrg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.5.6': - resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-linux-arm64-gnu@0.117.0': + resolution: {integrity: sha512-2VLJHKEFBRhCihT/8uesuDPhXpbWu1OlHCxqQ7pdFVqKik1Maj5E9oSDcYzxqfaCRStvTHkmLVWJBK5CVcIadg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.5.6': - resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-linux-arm64-musl@0.117.0': + resolution: {integrity: sha512-C3zapJconWpl2Y7LR3GkRkH6jxpuV2iVUfkFcHT5Ffn4Zu7l88mZa2dhcfdULZDybN1Phka/P34YUzuskUUrXw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.5.6': - resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-linux-ppc64-gnu@0.117.0': + resolution: {integrity: sha512-2T/Bm+3/qTfuNS4gKSzL8qbiYk+ErHW2122CtDx+ilZAzvWcJ8IbqdZIbEWOlwwe03lESTxPwTBLFqVgQU2OeQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxc-minify/binding-linux-riscv64-gnu@0.117.0': + resolution: {integrity: sha512-MKLjpldYkeoB4T+yAi4aIAb0waifxUjLcKkCUDmYAY3RqBJTvWK34KtfaKZL0IBMIXfD92CbKkcxQirDUS9Xcg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-minify/binding-linux-riscv64-musl@0.117.0': + resolution: {integrity: sha512-UFVcbPvKUStry6JffriobBp8BHtjmLLPl4bCY+JMxIn/Q3pykCpZzRwFTcDurG/kY8tm+uSNfKKdRNa5Nh9A7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-minify/binding-linux-s390x-gnu@0.117.0': + resolution: {integrity: sha512-B9GyPQ1NKbvpETVAMyJMfRlD3c6UJ7kiuFUAlx9LTYiQL+YIyT6vpuRlq1zgsXxavZluVrfeJv6x0owV4KDx4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-minify/binding-linux-x64-gnu@0.117.0': + resolution: {integrity: sha512-fXfhtr+WWBGNy4M5GjAF5vu/lpulR4Me34FjTyaK9nDrTZs7LM595UDsP1wliksqp4hD/KdoqHGmbCrC+6d4vA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.5.6': - resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-linux-x64-musl@0.117.0': + resolution: {integrity: sha512-jFBgGbx1oLadb83ntJmy1dWlAHSQanXTS21G4PgkxyONmxZdZ/UMKr7KsADzMuoPsd2YhJHxzRpwJd9U+4BFBw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.3.0': - resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm + '@oxc-minify/binding-openharmony-arm64@0.117.0': + resolution: {integrity: sha512-nxPd9vx1vYz8IlIMdl9HFdOK/ood1H5hzbSFsyO8JU55tkcJoBL8TLCbuFf9pHpOy27l2gcPyV6z3p4eAcTH5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@parcel/watcher-wasm@2.5.6': - resolution: {integrity: sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm + '@oxc-minify/binding-wasm32-wasi@0.117.0': + resolution: {integrity: sha512-pSvjJ6cCCfEXSteWSiVfZhdRzvpmS3tLhlXrXTYiuTDFrkRCobRP39SRwAzK23rE9i/m2JAaES2xPEW6+xu85g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@parcel/watcher-win32-arm64@2.5.6': - resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-win32-arm64-msvc@0.117.0': + resolution: {integrity: sha512-9NoT9baFrWPdJRIZVQ1jzPZW9TjPT2sbzQyDdoK7uD1V8JXCe1L2y7sp9k2ldZZheaIcmtNwHc7jyD7kYz/0XQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.6': - resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-win32-ia32-msvc@0.117.0': + resolution: {integrity: sha512-E51LTjkRei5u2dpFiYSObuh+e43xg45qlmilSTd0XDGFdYJCOv62Q0MEn61TR+efQYPNleYwWdTS9t+tp9p/4w==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.6': - resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} - engines: {node: '>= 10.0.0'} + '@oxc-minify/binding-win32-x64-msvc@0.117.0': + resolution: {integrity: sha512-I8vniPOxWQdxfIbXNvQLaJ1n8SrnqES6wuiAX10CU72sKsizkds9kDaJ1KzWvDy39RKhTBmD1cJsU2uxPFgizQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.6': - resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} - engines: {node: '>= 10.0.0'} + '@oxc-parser/binding-android-arm-eabi@0.117.0': + resolution: {integrity: sha512-XarGPJpaobgKjfm7xRfCGWWszuPbm/OeP91NdMhxtcLZ/qLTmWF0P0z0gqmr0Uysi1F1v1BNtcST11THMrcEOw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@oxc-parser/binding-android-arm64@0.117.0': + resolution: {integrity: sha512-EPTs2EBijGmyhPso4rXAL0NSpECXER9IaVKFZEv83YcA6h4uhKW47kmYt+OZcSp130zhHx+lTWILDQ/LDkCRNA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@oxc-parser/binding-darwin-arm64@0.117.0': + resolution: {integrity: sha512-3bAEpyih6r/Kb+Xzn1em1qBMClOS7NsVWgF86k95jpysR5ix/HlKFKSy7cax6PcS96HeHR4kjlME20n/XK1zNg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@poppanator/http-constants@1.1.1': - resolution: {integrity: sha512-TPPmQ2OsZDsQZqU80XEEO47E3zex/s1x4DYPoD0AXreW1SUqGvJQY71GTa2AiI0PE2OF2lHf18TGAVOck0Ic0w==} + '@oxc-parser/binding-darwin-x64@0.117.0': + resolution: {integrity: sha512-W7S99zFwVZhSbCxvjfZkioStFU249DBc4TJw/kK6kfKwx2Zew+jvizX5Y3ZPkAh7fBVUSNOdSeOqLBHLiP50tw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@poppinss/colors@4.1.6': - resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} + '@oxc-parser/binding-freebsd-x64@0.117.0': + resolution: {integrity: sha512-xH76lqSdjCSY0KUMPwLXlvQ3YEm3FFVEQmgiOCGNf+stZ6E4Mo3nC102Bo8yKd7aW0foIPAFLYsHgj7vVI/axw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@poppinss/dumper@0.6.5': - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.117.0': + resolution: {integrity: sha512-9Hdm1imzrn4RdMYnQKKcy+7p7QsSPIrgVIZmpGSJT02nYDuBWLdG1pdYMPFoEo46yiXry3tS3RoHIpNbT1IiyQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@poppinss/dumper@0.7.0': - resolution: {integrity: sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==} + '@oxc-parser/binding-linux-arm-musleabihf@0.117.0': + resolution: {integrity: sha512-Itszer/VCeYhYVJLcuKnHktlY8QyGnVxapltP68S1XRGlV6IsM9HQAElJRMwQhT6/GkMjOhANmkv2Qu/9v44lw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@poppinss/exception@1.2.3': - resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + '@oxc-parser/binding-linux-arm64-gnu@0.117.0': + resolution: {integrity: sha512-jBxD7DtlHQ36ivjjZdH0noQJgWNouenzpLmXNKnYaCsBfo3jY95m5iyjYQEiWkvkhJ3TJUAs7tQ1/kEpY7x/Kg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] - '@prisma/instrumentation@5.22.0': - resolution: {integrity: sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==} + '@oxc-parser/binding-linux-arm64-musl@0.117.0': + resolution: {integrity: sha512-QagKTDF4lrz8bCXbUi39Uq5xs7C7itAseKm51f33U+Dyar9eJY/zGKqfME9mKLOiahX7Fc1J3xMWVS0AdDXLPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + '@oxc-parser/binding-linux-ppc64-gnu@0.117.0': + resolution: {integrity: sha512-RPddpcE/0xxWaommWy0c5i/JdrXcXAkxBS2GOrAUh5LKmyCh03hpJedOAWszG4ADsKQwoUQQ1/tZVGRhZIWtKA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + '@oxc-parser/binding-linux-riscv64-gnu@0.117.0': + resolution: {integrity: sha512-ur/WVZF9FSOiZGxyP+nfxZzuv6r5OJDYoVxJnUR7fM/hhXLh4V/be6rjbzm9KLCDBRwYCEKJtt+XXNccwd06IA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@oxc-parser/binding-linux-riscv64-musl@0.117.0': + resolution: {integrity: sha512-ujGcAx8xAMvhy7X5sBFi3GXML1EtyORuJZ5z2T6UV3U416WgDX/4OCi3GnoteeenvxIf6JgP45B+YTHpt71vpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + '@oxc-parser/binding-linux-s390x-gnu@0.117.0': + resolution: {integrity: sha512-hbsfKjUwRjcMZZvvmpZSc+qS0bHcHRu8aV/I3Ikn9BzOA0ZAgUE7ctPtce5zCU7bM8dnTLi4sJ1Pi9YHdx6Urw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-parser/binding-linux-x64-gnu@0.117.0': + resolution: {integrity: sha512-1QrTrf8rige7UPJrYuDKJLQOuJlgkt+nRSJLBMHWNm9TdivzP48HaK3f4q18EjNlglKtn03lgjMu4fryDm8X4A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-linux-x64-musl@0.117.0': + resolution: {integrity: sha512-gRvK6HPzF5ITRL68fqb2WYYs/hGviPIbkV84HWCgiJX+LkaOpp+HIHQl3zVZdyKHwopXToTbXbtx/oFjDjl8pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-openharmony-arm64@0.117.0': + resolution: {integrity: sha512-QPJvFbnnDZZY7xc+xpbIBWLThcGBakwaYA9vKV8b3+oS5MGfAZUoTFJcix5+Zg2Ri46sOfrUim6Y6jsKNcssAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.117.0': + resolution: {integrity: sha512-+XRSNA0xt3pk/6CUHM7pykVe7M8SdifJk8LX1+fIp/zefvR3HBieZCbwG5un8gogNgh7srLycoh/cQA9uozv5g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.117.0': + resolution: {integrity: sha512-GpxeGS+Vo030DsrXeRPc7OSJOQIyAHkM3mzwBcnQjg/79XnOIDDMXJ5X6/aNdkVt/+Pv35pqKzGA4TQau97x8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.117.0': + resolution: {integrity: sha512-tchWEYiso1+objTZirmlR+w3fcIel6PVBOJ8NuC2Jr30dxBOiKUfFLovJLANwHg1+TzeD6pVSLIIIEf2T5o5lQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.117.0': + resolution: {integrity: sha512-ysRJAjIbB4e5y+t9PZs7TwbgOV/GVT//s30AORLCT/pedYwpYzHq6ApXK7is9fvyfZtgT3anNir8+esurmyaDw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.117.0': + resolution: {integrity: sha512-C/kPXBphID44fXdsa2xSOCuzX8fKZiFxPsvucJ6Yfkr6CJlMA+kNLPNKyLoI+l9XlDsNxBrz6h7IIjKU8pB69w==} + + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + + '@oxc-transform/binding-android-arm-eabi@0.117.0': + resolution: {integrity: sha512-17giX7h5VR9Eodru4OoSCFdgwLFIaUxeEn8JWe0vMZrAuRbT9NiDTy5dXdbGQBoO8aXPkbGS38FGlvbi31aujw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-transform/binding-android-arm64@0.117.0': + resolution: {integrity: sha512-1LrDd1CPochtLx04pAafdah6QtOQQj0/Evttevi+0u8rCI5FKucIG7pqBHkIQi/y7pycFYIj+GebhET80maeUg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-transform/binding-darwin-arm64@0.117.0': + resolution: {integrity: sha512-K1Xo52xJOvFfHSkz2ax9X5Qsku23RCfTIPbHZWdUCAQ1TQooI+sFcewSubhVUJ4DVK12/tYT//XXboumin+FHA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-transform/binding-darwin-x64@0.117.0': + resolution: {integrity: sha512-ftFT/8Laolfq49mRRWLkIhd1AbJ0MI5bW3LwddvdoAg9zXwkx4qhzTYyBPRZhvXWftts+NjlHfHsXCOqI4tPtw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-transform/binding-freebsd-x64@0.117.0': + resolution: {integrity: sha512-QDRyw0atg9BMnwOwnJeW6REzWPLEjiWtsCc2Sj612F1hCdvP+n0L3o8sHinEWM+BiOkOYtUxHA69WjUslc3G+g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-transform/binding-linux-arm-gnueabihf@0.117.0': + resolution: {integrity: sha512-UvpvOjyQVgiIJahIpMT0qAsLJT8O1ibHTBgXGOsZkQgw1xmjARPQ07dpRcucPPn6cqCF3wrxfbqtr2vFHaMkdA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-transform/binding-linux-arm-musleabihf@0.117.0': + resolution: {integrity: sha512-cIhztGFjKk8ngP+/7EPkEhzWMGr2neezxgWirSn/f/MirjH234oHHGJ2diKIbGQEsy0aOuJMTkL9NLfzfmH51A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-transform/binding-linux-arm64-gnu@0.117.0': + resolution: {integrity: sha512-mXbDfvDN0RZVg7v4LohNzU0kK3fMAZgkUKTkpFVgxEvzibEG5VpSznkypUwHI4a8U8pz+K6mGaLetX3Xt+CvvA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-transform/binding-linux-arm64-musl@0.117.0': + resolution: {integrity: sha512-ykxpPQp0eAcSmhy0Y3qKvdanHY4d8THPonDfmCoktUXb6r0X6qnjpJB3V+taN1wevW55bOEZd97kxtjTKjqhmg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-transform/binding-linux-ppc64-gnu@0.117.0': + resolution: {integrity: sha512-Rvspti4Kr7eq6zSrURK5WjscfWQPvmy/KjJZV45neRKW8RLonE3r9+NgrwSLGoHvQ3F24fbqlkplox1RtlhH5A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxc-transform/binding-linux-riscv64-gnu@0.117.0': + resolution: {integrity: sha512-Dr2ZW9ZZ4l1eQ5JUEUY3smBh4JFPCPuybWaDZTLn3ADZjyd8ZtNXEjeMT8rQbbhbgSL9hEgbwaqraole3FNThQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-transform/binding-linux-riscv64-musl@0.117.0': + resolution: {integrity: sha512-oD1Bnes1bIC3LVBSrWEoSUBj6fvatESPwAVWfJVGVQlqWuOs/ZBn1e4Nmbipo3KGPHK7DJY75r/j7CQCxhrOFQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-transform/binding-linux-s390x-gnu@0.117.0': + resolution: {integrity: sha512-qT//IAPLvse844t99Kff5j055qEbXfwzWgvCMb0FyjisnB8foy25iHZxZIocNBe6qwrCYWUP1M8rNrB/WyfS1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-transform/binding-linux-x64-gnu@0.117.0': + resolution: {integrity: sha512-2YEO5X+KgNzFqRVO5dAkhjcI5gwxus4NSWVl/+cs2sI6P0MNPjqE3VWPawl4RTC11LvetiiZdHcujUCPM8aaUw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-transform/binding-linux-x64-musl@0.117.0': + resolution: {integrity: sha512-3wqWbTSaIFZvDr1aqmTul4cg8PRWYh6VC52E8bLI7ytgS/BwJLW+sDUU2YaGIds4sAf/1yKeJRmudRCDPW9INg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-transform/binding-openharmony-arm64@0.117.0': + resolution: {integrity: sha512-Ebxx6NPqhzlrjvx4+PdSqbOq+li0f7X59XtJljDghkbJsbnkHvhLmPR09ifHt5X32UlZN63ekjwcg/nbmHLLlA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-transform/binding-wasm32-wasi@0.117.0': + resolution: {integrity: sha512-Nn8mmcBiQ0XKHLTb05QBlH+CDkn7jf5YDVv9FtKhy4zJT0NEU9y3dXVbfcurOpsVrG9me4ktzDQNCaAoJjUQyw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-transform/binding-win32-arm64-msvc@0.117.0': + resolution: {integrity: sha512-15cbsF8diXWGnHrTsVgVeabETiT/KdMAfRAcot99xsaVecJs3pITNNjC6Qj+/TPNpehbgIFjlhhxOVSbQsTBgg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-transform/binding-win32-ia32-msvc@0.117.0': + resolution: {integrity: sha512-I6DkhCuFX6p9rckdWiLuZfBWrrYUC7sNX+zLaCfa5zvrPNwo1/29KkefvqXVxu3AWT/6oZAbtc0A8/mqhETJPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-transform/binding-win32-x64-msvc@0.117.0': + resolution: {integrity: sha512-V7YzavQnYcRJBeJkp0qpb3FKrlm5I57XJetCYB4jsjStuboQmnFMZ/XQH55Szlf/kVyeU9ddQwv72gJJ5BrGjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.3.0': + resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-wasm@2.5.6': + resolution: {integrity: sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@poppanator/http-constants@1.1.1': + resolution: {integrity: sha512-TPPmQ2OsZDsQZqU80XEEO47E3zex/s1x4DYPoD0AXreW1SUqGvJQY71GTa2AiI0PE2OF2lHf18TGAVOck0Ic0w==} + + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} + + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} + + '@poppinss/dumper@0.7.0': + resolution: {integrity: sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==} + + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + + '@prisma/instrumentation@5.22.0': + resolution: {integrity: sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} '@protobufjs/fetch@1.1.0': resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} @@ -4368,6 +4919,9 @@ packages: '@rolldown/pluginutils@1.0.0-rc.12': resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} engines: {node: '>=20.19.0'} @@ -4767,6 +5321,12 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@simple-git/args-pathspec@1.0.3': + resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==} + + '@simple-git/argv-parser@1.1.0': + resolution: {integrity: sha512-sUKOu2lb5vGIWADNNLpscyj07DAeQZU3KLbnE2Tj53tW6BbDQKMly2CCfnR4oYzqtRELCPWfwaPg+Q0T8qfKBg==} + '@sinclair/typebox@0.34.38': resolution: {integrity: sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==} @@ -4788,9 +5348,6 @@ packages: peerDependencies: vinxi: ^0.5.7 - '@speed-highlight/core@1.2.12': - resolution: {integrity: sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==} - '@speed-highlight/core@1.2.14': resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} @@ -5569,6 +6126,11 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unhead/vue@2.1.13': + resolution: {integrity: sha512-HYy0shaHRnLNW9r85gppO8IiGz0ONWVV3zGdlT8CQ0tbTwixznJCIiyqV4BSV1aIF1jJIye0pd1p/k6Eab8Z/A==} + peerDependencies: + vue: '>=3.5.18' + '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -5683,6 +6245,13 @@ packages: peerDependencies: vinxi: ^0.5.5 + '@vitejs/plugin-vue-jsx@5.1.5': + resolution: {integrity: sha512-jIAsvHOEtWpslLOI2MeElGFxH7M8pM83BU/Tor4RLyiwH0FM4nUW3xdvbw20EeU9wc5IspQwMq225K3CMnJEpA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.0.0 + '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5690,6 +6259,13 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 + '@vitejs/plugin-vue@6.0.5': + resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -5725,30 +6301,81 @@ packages: '@volar/source-map@2.4.15': resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==} - '@vue/compiler-core@3.5.17': + '@vue-macros/common@3.1.2': + resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} + engines: {node: '>=20.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-helper-vue-transform-on@2.0.1': + resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==} + + '@vue/babel-plugin-jsx@2.0.1': + resolution: {integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@2.0.1': + resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.17': resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==} + '@vue/compiler-core@3.5.32': + resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} + '@vue/compiler-dom@3.5.17': resolution: {integrity: sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==} + '@vue/compiler-dom@3.5.32': + resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} + '@vue/compiler-sfc@3.5.17': resolution: {integrity: sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==} + '@vue/compiler-sfc@3.5.32': + resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} + '@vue/compiler-ssr@3.5.17': resolution: {integrity: sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==} + '@vue/compiler-ssr@3.5.32': + resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} + '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} '@vue/devtools-api@7.7.7': resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} + '@vue/devtools-api@8.1.1': + resolution: {integrity: sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw==} + + '@vue/devtools-core@8.1.1': + resolution: {integrity: sha512-bCCsSABp1/ot4j8xJEycM6Mtt2wbuucfByr6hMgjbYhrtlscOJypZKvy8f1FyWLYrLTchB5Qz216Lm92wfbq0A==} + peerDependencies: + vue: ^3.0.0 + '@vue/devtools-kit@7.7.7': resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} + '@vue/devtools-kit@8.1.1': + resolution: {integrity: sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==} + '@vue/devtools-shared@7.7.7': resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} + '@vue/devtools-shared@8.1.1': + resolution: {integrity: sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==} + '@vue/language-core@2.1.10': resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} peerDependencies: @@ -5760,20 +6387,37 @@ packages: '@vue/reactivity@3.5.17': resolution: {integrity: sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==} + '@vue/reactivity@3.5.32': + resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} + '@vue/runtime-core@3.5.17': resolution: {integrity: sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==} + '@vue/runtime-core@3.5.32': + resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} + '@vue/runtime-dom@3.5.17': resolution: {integrity: sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==} + '@vue/runtime-dom@3.5.32': + resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} + '@vue/server-renderer@3.5.17': resolution: {integrity: sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==} peerDependencies: vue: 3.5.17 + '@vue/server-renderer@3.5.32': + resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} + peerDependencies: + vue: 3.5.32 + '@vue/shared@3.5.17': resolution: {integrity: sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==} + '@vue/shared@3.5.32': + resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} + '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} @@ -6021,6 +6665,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + ast-kit@3.0.0-beta.1: resolution: {integrity: sha512-trmleAnZ2PxN/loHWVhhx1qeOHSRXq4TDsBBxq3GqeJitfk3+jTQ+v/C1km/KYq9M7wKqCewMh+/NAvVH7m+bw==} engines: {node: '>=20.19.0'} @@ -6032,6 +6680,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + ast-walker-scope@0.8.3: + resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} + engines: {node: '>=20.19.0'} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -6055,6 +6707,13 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} + autoprefixer@10.4.27: + resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -6175,6 +6834,9 @@ packages: birpc@2.4.0: resolution: {integrity: sha512-5IdNxTyhXHv2UlgnPHQ0h+5ypVmkrYHzL8QT+DwFZ//2N/oNV8Ch+BCRmTJ3x6/z9Axo/cXYBc9eprsUVK/Jsg==} + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + birpc@4.0.0: resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} @@ -6244,6 +6906,10 @@ packages: bun-types@1.3.3: resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -6312,6 +6978,9 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + caniuse-lite@1.0.30001727: resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} @@ -6499,6 +7168,9 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -6517,6 +7189,9 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} + cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} @@ -6580,6 +7255,12 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + css-declaration-sorter@7.4.0: + resolution: {integrity: sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} @@ -6600,6 +7281,24 @@ packages: engines: {node: '>=4'} hasBin: true + cssnano-preset-default@7.0.12: + resolution: {integrity: sha512-B3Eoouzw/sl2zANI0AL9KbacummJTCww+fkHaDBMZad/xuVx8bUduPLly6hKVQAlrmvYkS1jB1CVQEKm3gn0AA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano-utils@5.0.1: + resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano@7.1.4: + resolution: {integrity: sha512-T9PNS7y+5Nc9Qmu9mRONqfxG1RVY7Vuvky0XN6MZ+9hqplesTEwnj9r0ROtVuSwUVfaDhVlavuzWIVLUgm4hkQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -6607,6 +7306,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cytoscape-cose-bilkent@4.1.0: resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: @@ -6876,6 +7578,14 @@ 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-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -6884,6 +7594,10 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -6891,6 +7605,9 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} @@ -7066,12 +7783,19 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + errx@0.1.0: + resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} + es-abstract@1.24.0: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} @@ -7091,6 +7815,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -7386,9 +8113,6 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} - exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} @@ -7429,12 +8153,25 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-npm-meta@1.4.2: + resolution: {integrity: sha512-XXyd9d3ie/JeIIjm6WeKalvapGGFI4ShAjPJM78vgUFYzoEsuNSjvvVTuht0XZcwbVdOnEEGzhxwguRbxkIcDg==} + hasBin: true + fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + fast-string-truncated-width@1.2.1: + resolution: {integrity: sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==} + + fast-string-width@1.1.0: + resolution: {integrity: sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-wrap-ansi@0.1.6: + resolution: {integrity: sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==} + fastify-plugin@5.1.0: resolution: {integrity: sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==} @@ -7564,6 +8301,9 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -7590,6 +8330,13 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + fuse.js@7.3.0: + resolution: {integrity: sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==} + engines: {node: '>=10'} + + fzf@0.5.2: + resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} + generate-function@2.3.1: resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} @@ -7644,6 +8391,10 @@ packages: resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} hasBin: true + giget@3.2.0: + resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} + hasBin: true + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -7670,6 +8421,10 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -7716,6 +8471,9 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + h3@1.15.3: resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} @@ -7876,6 +8634,9 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + image-meta@0.2.2: + resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==} + image-q@4.0.0: resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} @@ -7896,6 +8657,9 @@ packages: resolution: {integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==} engines: {node: '>=20.19.0'} + impound@1.1.5: + resolution: {integrity: sha512-5AUn+QE0UofqNHu5f2Skf6Svukdg4ehOIq8O0EtqIx4jta0CDZYBPqpIHt0zrlUTiFVYlLpeH39DoikXBjPKpA==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -7907,6 +8671,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + inquirer-toggle@1.0.1: resolution: {integrity: sha512-0cReq29SpyO4JnoVmGBZJPoBv8sBzsGXw3MDjNxilOzhAFxIvC8mOFj34bCMtlFYKfkBKNYVLmmnP/qmrVuVMg==} @@ -8030,6 +8798,10 @@ packages: engines: {node: '>=14.16'} hasBin: true + is-installed-globally@1.0.0: + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} + engines: {node: '>=18'} + is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -8159,6 +8931,10 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} @@ -8181,10 +8957,6 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -8322,6 +9094,9 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} + launch-editor@2.13.2: + resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} + layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -8452,9 +9227,15 @@ packages: lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} @@ -8493,6 +9274,13 @@ packages: resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==} engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} + magic-regexp@0.10.0: + resolution: {integrity: sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==} + + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -8813,12 +9601,12 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - mlly@1.8.1: resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + mocked-exports@0.1.1: + resolution: {integrity: sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==} + module-details-from-path@1.0.4: resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} @@ -8869,6 +9657,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanotar@0.3.0: + resolution: {integrity: sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==} + napi-postinstall@0.3.2: resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -8982,9 +9773,6 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-mock-http@1.0.1: - resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==} - node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} @@ -9007,9 +9795,26 @@ 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'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nuxt@4.4.2: + resolution: {integrity: sha512-iWVFpr/YEqVU/CenqIHMnIkvb2HE/9f+q8oxZ+pj2et+60NljGRClCgnmbvGPdmNFE0F1bEhoBCYfqbDOCim3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + '@types/node': '>=18.12.0' + peerDependenciesMeta: + '@parcel/watcher': + optional: true + '@types/node': + optional: true + nypm@0.6.5: resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==} engines: {node: '>=18'} @@ -9057,12 +9862,19 @@ packages: ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + ofetch@2.0.0-alpha.3: + resolution: {integrity: sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==} + ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + on-change@6.0.2: + resolution: {integrity: sha512-08+12qcOVEA0fS9g/VxKS27HaT94nRutUT77J2dr8zv/unzXopvhBuF8tNLWsoLQ5IgrQ6eptGeGqUYat82U1w==} + engines: {node: '>=20'} + on-exit-leak-free@2.1.2: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} engines: {node: '>=14.0.0'} @@ -9097,6 +9909,10 @@ packages: only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + 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'} @@ -9116,6 +9932,23 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-minify@0.117.0: + resolution: {integrity: sha512-JHsv/b+bmBJkAzkHXgTN7RThloVxLHPT0ojHfjqxVeHuQB7LPpLUbJ2qfwz37sto9stZ9+AVwUP4b3gtR7p/Tw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-parser@0.117.0: + resolution: {integrity: sha512-l3cbgK5wUvWDVNWM/JFU77qDdGZK1wudnLsFcrRyNo/bL1CyU8pC25vDhMHikVY29lbK2InTWsX42RxVSutUdQ==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-transform@0.117.0: + resolution: {integrity: sha512-u1Stl2uhDh9bFuOGjGXQIqx46IRUNMyHQkq59LayXNGS2flNv7RpZpRSWs5S5deuNP6jJZ12gtMBze+m4dOhmw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-walker@0.7.0: + resolution: {integrity: sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A==} + peerDependencies: + oxc-parser: '>=0.98.0' + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -9306,9 +10139,6 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.2.0: - resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} - pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} @@ -9338,6 +10168,48 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-colormin@7.0.7: + resolution: {integrity: sha512-sBQ628lSj3VQpDquQel8Pen5mmjFPsO4pH9lDLaHB1AVkMRHtkl0pRB5DCWznc9upWsxint/kV+AveSj7W1tew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-convert-values@7.0.9: + resolution: {integrity: sha512-l6uATQATZaCa0bckHV+r6dLXfWtUBKXxO3jK+AtxxJJtgMPD+VhhPCCx51I4/5w8U5uHV67g3w7PXj+V3wlMlg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-comments@7.0.6: + resolution: {integrity: sha512-Sq+Fzj1Eg5/CPf1ERb0wS1Im5cvE2gDXCE+si4HCn1sf+jpQZxDI4DXEp8t77B/ImzDceWE2ebJQFXdqZ6GRJw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-duplicates@7.0.2: + resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-empty@7.0.1: + resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-overridden@7.0.1: + resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -9374,12 +10246,120 @@ packages: ts-node: optional: true + postcss-merge-longhand@7.0.5: + resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-merge-rules@7.0.8: + resolution: {integrity: sha512-BOR1iAM8jnr7zoQSlpeBmCsWV5Uudi/+5j7k05D0O/WP3+OFMPD86c1j/20xiuRtyt45bhxw/7hnhZNhW2mNFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-font-values@7.0.1: + resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-gradients@7.0.2: + resolution: {integrity: sha512-fVY3AB8Um7SJR5usHqTY2Ngf9qh8IRN+FFzrBP0ONJy6yYXsP7xyjK2BvSAIrpgs1cST+H91V0TXi3diHLYJtw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-params@7.0.6: + resolution: {integrity: sha512-YOn02gC68JijlaXVuKvFSCvQOhTpblkcfDre2hb/Aaa58r2BIaK4AtE/cyZf2wV7YKAG+UlP9DT+By0ry1E4VQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-selectors@7.0.6: + resolution: {integrity: sha512-lIbC0jy3AAwDxEgciZlBullDiMBeBCT+fz5G8RcA9MWqh/hfUkpOI3vNDUNEZHgokaoiv0juB9Y8fGcON7rU/A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-nested@6.2.0: resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 + postcss-normalize-charset@7.0.1: + resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-display-values@7.0.1: + resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-positions@7.0.1: + resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-repeat-style@7.0.1: + resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-string@7.0.1: + resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-timing-functions@7.0.1: + resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-unicode@7.0.6: + resolution: {integrity: sha512-z6bwTV84YW6ZvvNoaNLuzRW4/uWxDKYI1iIDrzk6D2YTL7hICApy+Q1LP6vBEsljX8FM7YSuV9qI79XESd4ddQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-url@7.0.1: + resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-whitespace@7.0.1: + resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-ordered-values@7.0.2: + resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-initial@7.0.6: + resolution: {integrity: sha512-G6ZyK68AmrPdMB6wyeA37ejnnRG2S8xinJrZJnOv+IaRKf6koPAVbQsiC7MfkmXaGmF1UO+QCijb27wfpxuRNg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-transforms@7.0.1: + resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-safe-parser@7.0.1: resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} engines: {node: '>=18.0'} @@ -9400,6 +10380,22 @@ packages: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss-svgo@7.1.1: + resolution: {integrity: sha512-zU9H9oEDrUFKa0JB7w+IYL7Qs9ey1mZyjhbf0KLxwJDdDRtoPvCmaEfknzqfHj44QS9VD6c5sJnBAVYTLRg/Sg==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.32 + + postcss-unique-selectors@7.0.5: + resolution: {integrity: sha512-3QoYmEt4qg/rUWDn6Tc8+ZVPmbp4G1hXDtCNWDx0st8SjtCbRcxRXDDM1QrEiXGG3A45zscSJFb4QH90LViyxg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -9411,6 +10407,10 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.9: + resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -9610,6 +10610,9 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + rc9@3.0.1: + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + rdf-canonize@5.0.0: resolution: {integrity: sha512-g8OUrgMXAR9ys/ZuJVfBr05sPPoMA7nHIVs8VEvg9QwM5W4GR2qSFEEHjsyHF1eWlBaf8Ev40WNjQFQ+nJTO3w==} engines: {node: '>=18'} @@ -9705,6 +10708,10 @@ packages: regex@6.0.1: resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -9868,9 +10875,16 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rou3@0.8.1: + resolution: {integrity: sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==} + roughjs@4.6.6: resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-async@4.0.6: resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==} engines: {node: '>=0.12.0'} @@ -9919,6 +10933,10 @@ packages: sax@1.4.3: resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + scheduler@0.25.0-rc-7771d3a7-20240827: resolution: {integrity: sha512-n4nHmAoerbIOSrH24w0+fcdCUwQ4Npm7yXfsrn09FL01OWIaxpuo4P0rj3qPyLFgsJDbn18sWvLVB/e/KPnR+A==} @@ -9973,6 +10991,10 @@ packages: resolution: {integrity: sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw==} engines: {node: '>=10'} + seroval@1.5.2: + resolution: {integrity: sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==} + engines: {node: '>=10'} + serve-placeholder@2.0.2: resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} @@ -10024,6 +11046,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} @@ -10059,6 +11085,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-git@3.36.0: + resolution: {integrity: sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -10070,6 +11099,10 @@ packages: resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -10142,6 +11175,11 @@ packages: resolution: {integrity: sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==} engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'} + srvx@0.11.15: + resolution: {integrity: sha512-iXsux0UcOjdvs0LCMa2Ws3WwcDUozA3JN3BquNXkaFPP7TpRqgunKdEgoZ/uwb1J6xaYHfxtz9Twlh6yzwM6Tg==} + engines: {node: '>=20.16.0'} + hasBin: true + srvx@0.8.16: resolution: {integrity: sha512-hmcGW4CgroeSmzgF1Ihwgl+Ths0JqAJ7HwjP2X7e3JzY7u4IydLMcdnlqGQiQGUswz+PO9oh/KtCpOISIvs9QQ==} engines: {node: '>=20.16.0'} @@ -10177,6 +11215,9 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + stdin-discarder@0.2.2: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} @@ -10279,6 +11320,9 @@ packages: resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} engines: {node: '>=16'} + structured-clone-es@2.0.0: + resolution: {integrity: sha512-5UuAHmBLXYPCl22xWJrFuGmIhBKQzxISPVz6E7nmTmTcAOpUzlbjKJsRrCE4vADmMQ0dzeCnlWn9XufnAGf76Q==} + structured-field-values@2.0.4: resolution: {integrity: sha512-5zpJXYLPwW3WYUD/D58tQjIBs10l3Yx64jZfcKGs/RH79E2t9Xm/b9+ydwdMNVSksnsIY+HR/2IlQmgo0AcTAg==} @@ -10308,6 +11352,12 @@ packages: babel-plugin-macros: optional: true + stylehacks@7.0.8: + resolution: {integrity: sha512-I3f053GBLIiS5Fg6OMFhq/c+yW+5Hc2+1fgq7gElDMMSqwlRb3tBf2ef6ucLStYRpId4q//bQO1FjcyNyy4yDQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} @@ -10358,6 +11408,11 @@ packages: engines: {node: '>=16'} hasBin: true + svgo@4.0.1: + resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} + engines: {node: '>=16'} + hasBin: true + system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} @@ -10430,6 +11485,10 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyclip@0.1.12: + resolution: {integrity: sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==} + engines: {node: ^16.14.0 || >= 17.3.0} + tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} @@ -10632,6 +11691,9 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} + type-level-regexp@0.1.17: + resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -10673,9 +11735,6 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} @@ -10736,6 +11795,13 @@ packages: unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + unhead@2.1.13: + resolution: {integrity: sha512-jO9M1sI6b2h/1KpIu4Jeu+ptumLmUKboRRLxys5pYHFeT+lqTzfNHbYUX9bxVDhC1FBszAGuWcUVlmvIPsah8Q==} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unicorn-magic@0.4.0: resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} engines: {node: '>=20'} @@ -10750,6 +11816,10 @@ packages: resolution: {integrity: sha512-njnL6sp8lEA8QQbZrt+52p/g4X0rw3bnGGmUcJnt1jeG8+iiqO779aGz0PirCtydAIVcuTBRlJ52F0u46z309Q==} engines: {node: '>=18.12.0'} + unimport@6.0.2: + resolution: {integrity: sha512-ZSOkrDw380w+KIPniY3smyXh2h7H9v2MNr9zejDuh239o5sdea44DRAYrv+rfUi2QGT186P2h0GPGKvy8avQ5g==} + engines: {node: '>=18.12.0'} + unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -10792,6 +11862,13 @@ packages: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} + unplugin@3.0.0: + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + engines: {node: ^20.19.0 || >=22.12.0} + + unrouting@0.1.7: + resolution: {integrity: sha512-+0hfD+CVWtD636rc5Fn9VEjjTEDhdqgMpbwAuVoUmydSHDaMNiFW93SJG4LV++RoGSEAyvQN5uABAscYpDphpQ==} + unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} @@ -10942,11 +12019,73 @@ packages: resolution: {integrity: sha512-82Qm+EG/b2PRFBvXBbz1lgWBGcd9totIL6SJhnrZYfakjloTVG9+5l6gfO6dbCCtztm5pqWFzLY0qpZ3H3ww/w==} hasBin: true + vite-dev-rpc@1.1.0: + resolution: {integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 + + vite-hot-client@2.1.0: + resolution: {integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + vite-node@3.2.4: resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true + vite-node@5.3.0: + resolution: {integrity: sha512-8f20COPYJujc3OKPX6OuyBy3ZIv2det4eRRU4GY1y2MjbeGSUmPjedxg1b72KnTagCofwvZ65ThzjxDW2AtQFQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + vite-plugin-checker@0.12.0: + resolution: {integrity: sha512-CmdZdDOGss7kdQwv73UyVgLPv0FVYe5czAgnmRX2oKljgEvSrODGuClaV3PDR2+3ou7N/OKGauDDBjy2MB07Rg==} + engines: {node: '>=16.11'} + peerDependencies: + '@biomejs/biome': '>=1.7' + eslint: '>=9.39.1' + meow: ^13.2.0 + optionator: ^0.9.4 + oxlint: '>=1' + stylelint: '>=16' + typescript: '*' + vite: '>=5.4.21' + vls: '*' + vti: '*' + vue-tsc: ~2.2.10 || ^3.0.0 + peerDependenciesMeta: + '@biomejs/biome': + optional: true + eslint: + optional: true + meow: + optional: true + optionator: + optional: true + oxlint: + optional: true + stylelint: + optional: true + typescript: + optional: true + vls: + optional: true + vti: + optional: true + vue-tsc: + optional: true + + vite-plugin-inspect@11.3.3: + resolution: {integrity: sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + vite-plugin-solid@2.11.10: resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==} peerDependencies: @@ -10957,6 +12096,12 @@ packages: '@testing-library/jest-dom': optional: true + vite-plugin-vue-tracer@1.3.0: + resolution: {integrity: sha512-Cgfce6VikzOw5MUJTpeg50s5rRjzU1Vr61ZjuHunVVHLjZZ5AUlgyExHthZ3r59vtoz9W2rDt23FYG81avYBKw==} + peerDependencies: + vite: ^6.0.0 || ^7.0.0 + vue: ^3.5.0 + vite@5.4.19: resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11068,11 +12213,51 @@ packages: yaml: optional: true - vitefu@1.1.1: - resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + vite@7.3.2: + resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 - peerDependenciesMeta: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.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 + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.1: + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + peerDependenciesMeta: vite: optional: true @@ -11151,11 +12336,35 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-bundle-renderer@2.2.0: + resolution: {integrity: sha512-sz/0WEdYH1KfaOm0XaBmRZOWgYTEvUDt6yPYaUzl4E52qzgWLlknaPPTTZmp6benaPTlQAI/hN1x3tAzZygycg==} + + vue-devtools-stub@0.1.0: + resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} + vue-resize@2.0.0-alpha.1: resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==} peerDependencies: vue: ^3.0.0 + vue-router@5.0.4: + resolution: {integrity: sha512-lCqDLCI2+fKVRl2OzXuzdSWmxXFLQRxQbmHugnRpTMyYiT+hNaycV0faqG5FBHDXoYrZ6MQcX87BvbY8mQ20Bg==} + peerDependencies: + '@pinia/colada': '>=0.21.2' + '@vue/compiler-sfc': ^3.5.17 + pinia: ^3.0.4 + vue: ^3.5.0 + peerDependenciesMeta: + '@pinia/colada': + optional: true + '@vue/compiler-sfc': + optional: true + pinia: + optional: true + vue@3.5.17: resolution: {integrity: sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==} peerDependencies: @@ -11164,6 +12373,14 @@ packages: typescript: optional: true + vue@3.5.32: + resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + wasm-feature-detect@1.8.0: resolution: {integrity: sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==} @@ -11212,6 +12429,11 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -11286,6 +12508,22 @@ packages: utf-8-validate: optional: true + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + 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 + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + x-forwarded-fetch@0.2.0: resolution: {integrity: sha512-2qsguQrLHFvP3/rnvxSSaw3DlK9eOOx9iyL+Qv+1YH8jzq6nbRk+P6gyFFNdWanyusyCHuE3/CnX3+gmLeYEeg==} @@ -11330,6 +12568,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -11569,10 +12812,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@10.0.4(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1))': + '@astrojs/node@10.0.4(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3))': dependencies: '@astrojs/internal-helpers': 0.8.0 - astro: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3) send: 1.2.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -11645,6 +12888,10 @@ snapshots: '@types/jsesc': 2.5.1 jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + '@babel/helper-compilation-targets@7.28.6': dependencies: '@babel/compat-data': 7.29.0 @@ -11653,8 +12900,28 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-globals@7.28.0': {} + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.18.6': dependencies: '@babel/types': 7.29.0 @@ -11675,8 +12942,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + '@babel/helper-plugin-utils@7.28.6': {} + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-string-parser@8.0.0-rc.3': {} @@ -11696,6 +12983,10 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + '@babel/parser@8.0.0-rc.3': dependencies: '@babel/types': 8.0.0-rc.3 @@ -11710,6 +13001,17 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 @@ -11738,6 +13040,11 @@ snapshots: '@babel/helper-string-parser': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 + '@bomb.sh/tab@0.0.14(cac@6.7.14)(citty@0.2.1)': + optionalDependencies: + cac: 6.7.14 + citty: 0.2.1 + '@braintree/sanitize-url@6.0.4': optional: true @@ -11768,6 +13075,18 @@ snapshots: '@chevrotain/utils@11.0.3': {} + '@clack/core@1.2.0': + dependencies: + fast-wrap-ansi: 0.1.6 + sisteransi: 1.0.5 + + '@clack/prompts@1.2.0': + dependencies: + '@clack/core': 1.2.0 + fast-string-width: 1.1.0 + fast-wrap-ansi: 0.1.6 + sisteransi: 1.0.5 + '@cloudflare/kv-asset-handler@0.4.0': dependencies: mime: 3.0.0 @@ -11786,7 +13105,7 @@ snapshots: optionalDependencies: workerd: 1.20250906.0 - '@cloudflare/vitest-pool-workers@0.8.71(@cloudflare/workers-types@4.20251221.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@cloudflare/vitest-pool-workers@0.8.71(@cloudflare/workers-types@4.20251221.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -11795,7 +13114,7 @@ snapshots: devalue: 5.6.1 miniflare: 4.20250906.0 semver: 7.7.2 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) wrangler: 4.35.0(@cloudflare/workers-types@4.20251221.0) zod: 3.22.3 transitivePeerDependencies: @@ -11835,6 +13154,8 @@ snapshots: '@cloudflare/workers-types@4.20251221.0': {} + '@colordx/core@5.0.3': {} + '@colors/colors@1.5.0': optional: true @@ -11842,9 +13163,9 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@deno/astro-adapter@0.3.2(@opentelemetry/api@1.9.0)(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1))': + '@deno/astro-adapter@0.3.2(@opentelemetry/api@1.9.0)(astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3))': dependencies: - astro: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3) optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -11909,6 +13230,19 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' + '@dxup/nuxt@0.4.0(magicast@0.5.2)(typescript@5.9.3)': + dependencies: + '@dxup/unimport': 0.1.2 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + chokidar: 5.0.0 + pathe: 2.0.3 + tinyglobby: 0.2.15 + typescript: 5.9.3 + transitivePeerDependencies: + - magicast + + '@dxup/unimport@0.1.2': {} + '@emnapi/core@1.4.3': dependencies: '@emnapi/wasi-threads': 1.0.2 @@ -12396,7 +13730,7 @@ snapshots: globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.1 - mlly: 1.7.4 + mlly: 1.8.1 transitivePeerDependencies: - supports-color @@ -12978,6 +14312,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -13007,6 +14346,14 @@ snapshots: '@jsr/std__path@1.1.0': {} + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + '@logtape/file@2.0.5(@logtape/logtape@2.0.5)': dependencies: '@logtape/logtape': 2.0.5 @@ -13182,59 +14529,331 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@opentelemetry/api-logs@0.211.0': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api-logs@0.53.0': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api-logs@0.57.1': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api-logs@0.57.2': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api@1.9.0': {} - - '@opentelemetry/configuration@0.211.0(@opentelemetry/api@1.9.0)': + '@nuxt/cli@3.34.0(@nuxt/schema@4.4.2)(cac@6.7.14)(magicast@0.5.2)': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - yaml: 2.8.1 + '@bomb.sh/tab': 0.0.14(cac@6.7.14)(citty@0.2.1) + '@clack/prompts': 1.2.0 + c12: 3.3.3(magicast@0.5.2) + citty: 0.2.1 + confbox: 0.2.4 + consola: 3.4.2 + debug: 4.4.3 + defu: 6.1.4 + exsolve: 1.0.8 + fuse.js: 7.3.0 + fzf: 0.5.2 + giget: 3.2.0 + jiti: 2.6.1 + listhen: 1.9.0 + nypm: 0.6.5 + ofetch: 1.5.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + scule: 1.3.0 + semver: 7.7.4 + srvx: 0.11.15 + std-env: 3.10.0 + tinyclip: 0.1.12 + tinyexec: 1.0.4 + ufo: 1.6.3 + youch: 4.1.0 + optionalDependencies: + '@nuxt/schema': 4.4.2 + transitivePeerDependencies: + - cac + - commander + - magicast + - supports-color - '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 + '@nuxt/devalue@2.0.2': {} - '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)': + '@nuxt/devtools-kit@3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: - '@opentelemetry/api': 1.9.0 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + execa: 8.0.1 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + transitivePeerDependencies: + - magicast - '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': + '@nuxt/devtools-wizard@3.2.4': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.28.0 + '@clack/prompts': 1.2.0 + consola: 3.4.2 + diff: 8.0.3 + execa: 8.0.1 + magicast: 0.5.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + semver: 7.7.4 - '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': + '@nuxt/devtools@3.2.4(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.34.0 + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + '@nuxt/devtools-wizard': 3.2.4 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@vue/devtools-core': 8.1.1(vue@3.5.32(typescript@5.9.3)) + '@vue/devtools-kit': 8.1.1 + birpc: 4.0.0 + consola: 3.4.2 + destr: 2.0.5 + error-stack-parser-es: 1.0.5 + execa: 8.0.1 + fast-npm-meta: 1.4.2 + get-port-please: 3.2.0 + hookable: 6.1.0 + image-meta: 0.2.2 + is-installed-globally: 1.0.0 + launch-editor: 2.13.2 + local-pkg: 1.1.2 + magicast: 0.5.2 + nypm: 0.6.5 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + semver: 7.7.4 + simple-git: 3.36.0 + sirv: 3.0.2 + structured-clone-es: 2.0.0 + tinyglobby: 0.2.15 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-plugin-inspect: 11.3.3(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + vite-plugin-vue-tracer: 1.3.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + which: 6.0.1 + ws: 8.20.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + - vue - '@opentelemetry/exporter-logs-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@nuxt/kit@4.4.2(magicast@0.5.2)': dependencies: - '@grpc/grpc-js': 1.13.4 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) + c12: 3.3.3(magicast@0.5.2) + consola: 3.4.2 + defu: 6.1.4 + destr: 2.0.5 + errx: 0.1.0 + exsolve: 1.0.8 + ignore: 7.0.5 + jiti: 2.6.1 + klona: 2.0.6 + mlly: 1.8.1 + ohash: 2.0.11 + pathe: 2.0.3 + pkg-types: 2.3.0 + rc9: 3.0.1 + scule: 1.3.0 + semver: 7.7.4 + tinyglobby: 0.2.15 + ufo: 1.6.3 + unctx: 2.5.0 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast - '@opentelemetry/exporter-logs-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@nuxt/nitro-server@4.4.2(@babel/core@7.29.0)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(typescript@5.9.3)': + dependencies: + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@nuxt/devalue': 2.0.2 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@unhead/vue': 2.1.13(vue@3.5.32(typescript@5.9.3)) + '@vue/shared': 3.5.32 + consola: 3.4.2 + defu: 6.1.4 + destr: 2.0.5 + devalue: 5.6.3 + errx: 0.1.0 + escape-string-regexp: 5.0.0 + exsolve: 1.0.8 + h3: 1.15.11 + impound: 1.1.5 + klona: 2.0.6 + mocked-exports: 0.1.1 + nitropack: 2.13.1(mysql2@3.18.2(@types/node@22.19.1))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)) + nuxt: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3) + nypm: 0.6.5 + ohash: 2.0.11 + pathe: 2.0.3 + pkg-types: 2.3.0 + rou3: 0.8.1 + std-env: 4.0.0 + ufo: 1.6.3 + unctx: 2.5.0 + unstorage: 1.17.4(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0) + vue: 3.5.32(typescript@5.9.3) + vue-bundle-renderer: 2.2.0 + vue-devtools-stub: 0.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/core' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@libsql/client' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bare-abort-controller + - bare-buffer + - better-sqlite3 + - db0 + - drizzle-orm + - encoding + - idb-keyval + - ioredis + - magicast + - mysql2 + - react-native-b4a + - rolldown + - sqlite3 + - supports-color + - typescript + - uploadthing + - xml2js + + '@nuxt/schema@4.4.2': + dependencies: + '@vue/shared': 3.5.32 + defu: 6.1.4 + pathe: 2.0.3 + pkg-types: 2.3.0 + std-env: 4.0.0 + + '@nuxt/telemetry@2.8.0(@nuxt/kit@4.4.2(magicast@0.5.2))': + dependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + citty: 0.2.1 + consola: 3.4.2 + ofetch: 2.0.0-alpha.3 + rc9: 3.0.1 + std-env: 4.0.0 + + '@nuxt/vite-builder@4.4.2(bf69f36230ccf8089c15f129bdb621d7)': + dependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@rollup/plugin-replace': 6.0.3(rollup@4.59.0) + '@vitejs/plugin-vue': 6.0.5(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': 5.1.5(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + autoprefixer: 10.4.27(postcss@8.5.9) + consola: 3.4.2 + cssnano: 7.1.4(postcss@8.5.9) + defu: 6.1.4 + escape-string-regexp: 5.0.0 + exsolve: 1.0.8 + get-port-please: 3.2.0 + jiti: 2.6.1 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.1 + mocked-exports: 0.1.1 + nuxt: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3) + nypm: 0.6.5 + pathe: 2.0.3 + pkg-types: 2.3.0 + postcss: 8.5.9 + seroval: 1.5.2 + std-env: 4.0.0 + ufo: 1.6.3 + unenv: 2.0.0-rc.24 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-node: 5.3.0(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-plugin-checker: 0.12.0(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + vue: 3.5.32(typescript@5.9.3) + vue-bundle-renderer: 2.2.0 + optionalDependencies: + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + rolldown: 1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + rollup-plugin-visualizer: 6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0) + transitivePeerDependencies: + - '@biomejs/biome' + - '@types/node' + - eslint + - less + - lightningcss + - magicast + - meow + - optionator + - oxlint + - rollup + - sass + - sass-embedded + - stylelint + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - vls + - vti + - vue-tsc + - yaml + + '@opentelemetry/api-logs@0.211.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api-logs@0.53.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api-logs@0.57.1': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api-logs@0.57.2': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/configuration@0.211.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + yaml: 2.8.1 + + '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.34.0 + + '@opentelemetry/exporter-logs-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.211.0 @@ -13721,137 +15340,334 @@ snapshots: '@oslojs/encoding@1.1.0': {} - '@oxc-project/types@0.122.0': {} + '@oxc-minify/binding-android-arm-eabi@0.117.0': + optional: true - '@parcel/watcher-android-arm64@2.5.6': + '@oxc-minify/binding-android-arm64@0.117.0': optional: true - '@parcel/watcher-darwin-arm64@2.5.6': + '@oxc-minify/binding-darwin-arm64@0.117.0': optional: true - '@parcel/watcher-darwin-x64@2.5.6': + '@oxc-minify/binding-darwin-x64@0.117.0': optional: true - '@parcel/watcher-freebsd-x64@2.5.6': + '@oxc-minify/binding-freebsd-x64@0.117.0': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.6': + '@oxc-minify/binding-linux-arm-gnueabihf@0.117.0': optional: true - '@parcel/watcher-linux-arm-musl@2.5.6': + '@oxc-minify/binding-linux-arm-musleabihf@0.117.0': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.6': + '@oxc-minify/binding-linux-arm64-gnu@0.117.0': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.6': + '@oxc-minify/binding-linux-arm64-musl@0.117.0': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.6': + '@oxc-minify/binding-linux-ppc64-gnu@0.117.0': optional: true - '@parcel/watcher-linux-x64-musl@2.5.6': + '@oxc-minify/binding-linux-riscv64-gnu@0.117.0': optional: true - '@parcel/watcher-wasm@2.3.0': - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.8 + '@oxc-minify/binding-linux-riscv64-musl@0.117.0': + optional: true - '@parcel/watcher-wasm@2.5.6': - dependencies: - is-glob: 4.0.3 - picomatch: 4.0.4 + '@oxc-minify/binding-linux-s390x-gnu@0.117.0': + optional: true - '@parcel/watcher-win32-arm64@2.5.6': + '@oxc-minify/binding-linux-x64-gnu@0.117.0': optional: true - '@parcel/watcher-win32-ia32@2.5.6': + '@oxc-minify/binding-linux-x64-musl@0.117.0': optional: true - '@parcel/watcher-win32-x64@2.5.6': + '@oxc-minify/binding-openharmony-arm64@0.117.0': optional: true - '@parcel/watcher@2.5.6': + '@oxc-minify/binding-wasm32-wasi@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)': dependencies: - detect-libc: 2.0.4 - is-glob: 4.0.3 - node-addon-api: 7.1.1 - picomatch: 4.0.4 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.6 - '@parcel/watcher-darwin-arm64': 2.5.6 - '@parcel/watcher-darwin-x64': 2.5.6 - '@parcel/watcher-freebsd-x64': 2.5.6 - '@parcel/watcher-linux-arm-glibc': 2.5.6 - '@parcel/watcher-linux-arm-musl': 2.5.6 - '@parcel/watcher-linux-arm64-glibc': 2.5.6 - '@parcel/watcher-linux-arm64-musl': 2.5.6 - '@parcel/watcher-linux-x64-glibc': 2.5.6 - '@parcel/watcher-linux-x64-musl': 2.5.6 - '@parcel/watcher-win32-arm64': 2.5.6 - '@parcel/watcher-win32-ia32': 2.5.6 - '@parcel/watcher-win32-x64': 2.5.6 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true - '@pkgjs/parseargs@0.11.0': + '@oxc-minify/binding-win32-arm64-msvc@0.117.0': optional: true - '@polka/url@1.0.0-next.29': {} + '@oxc-minify/binding-win32-ia32-msvc@0.117.0': + optional: true - '@poppanator/http-constants@1.1.1': {} + '@oxc-minify/binding-win32-x64-msvc@0.117.0': + optional: true - '@poppinss/colors@4.1.6': - dependencies: - kleur: 4.1.5 + '@oxc-parser/binding-android-arm-eabi@0.117.0': + optional: true - '@poppinss/dumper@0.6.5': - dependencies: - '@poppinss/colors': 4.1.6 - '@sindresorhus/is': 7.1.1 - supports-color: 10.2.2 + '@oxc-parser/binding-android-arm64@0.117.0': + optional: true - '@poppinss/dumper@0.7.0': - dependencies: - '@poppinss/colors': 4.1.6 - '@sindresorhus/is': 7.1.1 - supports-color: 10.2.2 + '@oxc-parser/binding-darwin-arm64@0.117.0': + optional: true - '@poppinss/exception@1.2.3': {} + '@oxc-parser/binding-darwin-x64@0.117.0': + optional: true - '@prisma/instrumentation@5.22.0': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + '@oxc-parser/binding-freebsd-x64@0.117.0': + optional: true - '@protobufjs/aspromise@1.1.2': {} + '@oxc-parser/binding-linux-arm-gnueabihf@0.117.0': + optional: true - '@protobufjs/base64@1.1.2': {} + '@oxc-parser/binding-linux-arm-musleabihf@0.117.0': + optional: true - '@protobufjs/codegen@2.0.4': {} + '@oxc-parser/binding-linux-arm64-gnu@0.117.0': + optional: true - '@protobufjs/eventemitter@1.1.0': {} + '@oxc-parser/binding-linux-arm64-musl@0.117.0': + optional: true - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 + '@oxc-parser/binding-linux-ppc64-gnu@0.117.0': + optional: true - '@protobufjs/float@1.0.2': {} + '@oxc-parser/binding-linux-riscv64-gnu@0.117.0': + optional: true - '@protobufjs/inquire@1.1.0': {} + '@oxc-parser/binding-linux-riscv64-musl@0.117.0': + optional: true - '@protobufjs/path@1.1.2': {} + '@oxc-parser/binding-linux-s390x-gnu@0.117.0': + optional: true - '@protobufjs/pool@1.1.0': {} + '@oxc-parser/binding-linux-x64-gnu@0.117.0': + optional: true - '@protobufjs/utf8@1.1.0': {} + '@oxc-parser/binding-linux-x64-musl@0.117.0': + optional: true - '@quansync/fs@1.0.0': - dependencies: - quansync: 1.0.0 + '@oxc-parser/binding-openharmony-arm64@0.117.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.117.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.117.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.117.0': + optional: true + + '@oxc-project/types@0.117.0': {} + + '@oxc-project/types@0.122.0': {} + + '@oxc-transform/binding-android-arm-eabi@0.117.0': + optional: true + + '@oxc-transform/binding-android-arm64@0.117.0': + optional: true + + '@oxc-transform/binding-darwin-arm64@0.117.0': + optional: true + + '@oxc-transform/binding-darwin-x64@0.117.0': + optional: true + + '@oxc-transform/binding-freebsd-x64@0.117.0': + optional: true + + '@oxc-transform/binding-linux-arm-gnueabihf@0.117.0': + optional: true + + '@oxc-transform/binding-linux-arm-musleabihf@0.117.0': + optional: true + + '@oxc-transform/binding-linux-arm64-gnu@0.117.0': + optional: true + + '@oxc-transform/binding-linux-arm64-musl@0.117.0': + optional: true + + '@oxc-transform/binding-linux-ppc64-gnu@0.117.0': + optional: true + + '@oxc-transform/binding-linux-riscv64-gnu@0.117.0': + optional: true + + '@oxc-transform/binding-linux-riscv64-musl@0.117.0': + optional: true + + '@oxc-transform/binding-linux-s390x-gnu@0.117.0': + optional: true + + '@oxc-transform/binding-linux-x64-gnu@0.117.0': + optional: true + + '@oxc-transform/binding-linux-x64-musl@0.117.0': + optional: true + + '@oxc-transform/binding-openharmony-arm64@0.117.0': + optional: true + + '@oxc-transform/binding-wasm32-wasi@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@oxc-transform/binding-win32-arm64-msvc@0.117.0': + optional: true + + '@oxc-transform/binding-win32-ia32-msvc@0.117.0': + optional: true + + '@oxc-transform/binding-win32-x64-msvc@0.117.0': + optional: true + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-wasm@2.3.0': + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.8 + + '@parcel/watcher-wasm@2.5.6': + dependencies: + is-glob: 4.0.3 + picomatch: 4.0.4 + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.0.4 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.4 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.29': {} + + '@poppanator/http-constants@1.1.1': {} + + '@poppinss/colors@4.1.6': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.6.5': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.1.1 + supports-color: 10.2.2 + + '@poppinss/dumper@0.7.0': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.1.1 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.3': {} + + '@prisma/instrumentation@5.22.0': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true @@ -13905,6 +15721,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.12': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} + '@rollup/plugin-alias@6.0.0(rollup@4.59.0)': optionalDependencies: rollup: 4.59.0 @@ -14302,6 +16120,12 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@simple-git/args-pathspec@1.0.3': {} + + '@simple-git/argv-parser@1.1.0': + dependencies: + '@simple-git/args-pathspec': 1.0.3 + '@sinclair/typebox@0.34.38': optional: true @@ -14313,11 +16137,11 @@ snapshots: dependencies: solid-js: 1.9.11 - '@solidjs/start@1.3.2(solid-js@1.9.11)(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@solidjs/start@1.3.2(solid-js@1.9.11)(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: - '@tanstack/server-functions-plugin': 1.121.21(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) - '@vinxi/server-components': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@tanstack/server-functions-plugin': 1.121.21(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + '@vinxi/server-components': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) cookie-es: 2.0.0 defu: 6.1.4 error-stack-parser: 2.1.4 @@ -14329,16 +16153,14 @@ snapshots: source-map-js: 1.2.1 terracotta: 1.1.0(solid-js@1.9.11) tinyglobby: 0.2.15 - vinxi: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) - vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + vinxi: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) transitivePeerDependencies: - '@testing-library/jest-dom' - solid-js - supports-color - vite - '@speed-highlight/core@1.2.12': {} - '@speed-highlight/core@1.2.14': {} '@standard-schema/spec@1.0.0': {} @@ -14347,15 +16169,36 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))': + '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))': dependencies: - '@sveltejs/kit': 2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@sveltejs/kit': 2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + + '@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': + dependencies: + '@standard-schema/spec': 1.0.0 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + '@types/cookie': 0.6.0 + acorn: 8.15.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.2.2 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.1 + sade: 1.8.1 + set-cookie-parser: 2.7.1 + sirv: 3.0.1 + svelte: 5.38.3 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + optionalDependencies: + '@opentelemetry/api': 1.9.0 - '@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@sveltejs/kit@2.36.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@standard-schema/spec': 1.0.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -14368,29 +16211,51 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.38.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) optionalDependencies: '@opentelemetry/api': 1.9.0 - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': + dependencies: + '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + debug: 4.4.3 + svelte: 5.38.3 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) debug: 4.4.3 svelte: 5.38.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + debug: 4.4.1 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.38.3 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vitefu: 1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.38.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vitefu: 1.1.1(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) transitivePeerDependencies: - supports-color @@ -14409,7 +16274,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 enhanced-resolve: 5.18.2 - jiti: 2.5.1 + jiti: 2.6.1 lightningcss: 1.30.1 magic-string: 0.30.21 source-map-js: 1.2.1 @@ -14541,14 +16406,14 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.11 - '@tailwindcss/vite@4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@tailwindcss/vite@4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.1.12 '@tailwindcss/oxide': 4.1.12 tailwindcss: 4.1.12 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) - '@tanstack/directive-functions-plugin@1.121.21(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@tanstack/directive-functions-plugin@1.121.21(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.29.0 @@ -14557,7 +16422,7 @@ snapshots: '@tanstack/router-utils': 1.161.4 babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -14575,7 +16440,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/server-functions-plugin@1.121.21(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@tanstack/server-functions-plugin@1.121.21(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.29.0 @@ -14584,7 +16449,7 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@tanstack/directive-functions-plugin': 1.121.21(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@tanstack/directive-functions-plugin': 1.121.21(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 transitivePeerDependencies: @@ -15421,6 +17286,12 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@unhead/vue@2.1.13(vue@3.5.32(typescript@5.9.3))': + dependencies: + hookable: 6.1.0 + unhead: 2.1.13 + vue: 3.5.32(typescript@5.9.3) + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -15484,8 +17355,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 2.0.3 '@rollup/pluginutils': 5.3.0(rollup@4.59.0) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -15511,7 +17382,7 @@ snapshots: h3: 1.15.5 http-shutdown: 1.2.2 jiti: 1.21.7 - mlly: 1.7.4 + mlly: 1.8.1 node-forge: 1.3.3 pathe: 1.1.2 std-env: 3.10.0 @@ -15519,35 +17390,53 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@babel/parser': 7.29.0 - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) acorn-loose: 8.5.2 - acorn-typescript: 1.4.13(acorn@8.15.0) + acorn-typescript: 1.4.13(acorn@8.16.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 tslib: 2.8.1 - vinxi: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vinxi: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) - '@vinxi/server-components@0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@vinxi/server-components@0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) - acorn: 8.15.0 + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + acorn: 8.16.0 acorn-loose: 8.5.2 - acorn-typescript: 1.4.13(acorn@8.15.0) + acorn-typescript: 1.4.13(acorn@8.16.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 - vinxi: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vinxi: 0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + + '@vitejs/plugin-vue-jsx@5.1.5(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-rc.12 + '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vue: 3.5.32(typescript@5.9.3) + transitivePeerDependencies: + - supports-color '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@22.19.1)(lightningcss@1.30.1)(terser@5.46.0))(vue@3.5.17(typescript@5.9.3))': dependencies: vite: 5.4.19(@types/node@22.19.1)(lightningcss@1.30.1)(terser@5.46.0) vue: 3.5.17(typescript@5.9.3) + '@vitejs/plugin-vue@6.0.5(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vue: 3.5.32(typescript@5.9.3) + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.3 @@ -15556,13 +17445,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -15596,19 +17485,71 @@ snapshots: '@volar/source-map@2.4.15': {} - '@vue/compiler-core@3.5.17': + '@vue-macros/common@3.1.2(vue@3.5.32(typescript@5.9.3))': dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.17 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - + '@vue/compiler-sfc': 3.5.32 + ast-kit: 2.2.0 + local-pkg: 1.1.2 + magic-string-ast: 1.0.3 + unplugin-utils: 0.3.1 + optionalDependencies: + vue: 3.5.32(typescript@5.9.3) + + '@vue/babel-helper-vue-transform-on@2.0.1': {} + + '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.0)': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@vue/babel-helper-vue-transform-on': 2.0.1 + '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0) + '@vue/shared': 3.5.32 + optionalDependencies: + '@babel/core': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.0)': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/parser': 7.29.0 + '@vue/compiler-sfc': 3.5.32 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.17': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.17 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.32': + dependencies: + '@babel/parser': 7.29.2 + '@vue/shared': 3.5.32 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.5.17': dependencies: '@vue/compiler-core': 3.5.17 '@vue/shared': 3.5.17 + '@vue/compiler-dom@3.5.32': + dependencies: + '@vue/compiler-core': 3.5.32 + '@vue/shared': 3.5.32 + '@vue/compiler-sfc@3.5.17': dependencies: '@babel/parser': 7.29.0 @@ -15621,11 +17562,28 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 + '@vue/compiler-sfc@3.5.32': + dependencies: + '@babel/parser': 7.29.2 + '@vue/compiler-core': 3.5.32 + '@vue/compiler-dom': 3.5.32 + '@vue/compiler-ssr': 3.5.32 + '@vue/shared': 3.5.32 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.9 + source-map-js: 1.2.1 + '@vue/compiler-ssr@3.5.17': dependencies: '@vue/compiler-dom': 3.5.17 '@vue/shared': 3.5.17 + '@vue/compiler-ssr@3.5.32': + dependencies: + '@vue/compiler-dom': 3.5.32 + '@vue/shared': 3.5.32 + '@vue/compiler-vue2@2.7.16': dependencies: de-indent: 1.0.2 @@ -15635,6 +17593,16 @@ snapshots: dependencies: '@vue/devtools-kit': 7.7.7 + '@vue/devtools-api@8.1.1': + dependencies: + '@vue/devtools-kit': 8.1.1 + + '@vue/devtools-core@8.1.1(vue@3.5.32(typescript@5.9.3))': + dependencies: + '@vue/devtools-kit': 8.1.1 + '@vue/devtools-shared': 8.1.1 + vue: 3.5.32(typescript@5.9.3) + '@vue/devtools-kit@7.7.7': dependencies: '@vue/devtools-shared': 7.7.7 @@ -15645,10 +17613,19 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.2 + '@vue/devtools-kit@8.1.1': + dependencies: + '@vue/devtools-shared': 8.1.1 + birpc: 2.9.0 + hookable: 5.5.3 + perfect-debounce: 2.1.0 + '@vue/devtools-shared@7.7.7': dependencies: rfdc: 1.4.1 + '@vue/devtools-shared@8.1.1': {} + '@vue/language-core@2.1.10(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.15 @@ -15666,11 +17643,20 @@ snapshots: dependencies: '@vue/shared': 3.5.17 + '@vue/reactivity@3.5.32': + dependencies: + '@vue/shared': 3.5.32 + '@vue/runtime-core@3.5.17': dependencies: '@vue/reactivity': 3.5.17 '@vue/shared': 3.5.17 + '@vue/runtime-core@3.5.32': + dependencies: + '@vue/reactivity': 3.5.32 + '@vue/shared': 3.5.32 + '@vue/runtime-dom@3.5.17': dependencies: '@vue/reactivity': 3.5.17 @@ -15678,14 +17664,29 @@ snapshots: '@vue/shared': 3.5.17 csstype: 3.1.3 + '@vue/runtime-dom@3.5.32': + dependencies: + '@vue/reactivity': 3.5.32 + '@vue/runtime-core': 3.5.32 + '@vue/shared': 3.5.32 + csstype: 3.2.3 + '@vue/server-renderer@3.5.17(vue@3.5.17(typescript@5.9.3))': dependencies: '@vue/compiler-ssr': 3.5.17 '@vue/shared': 3.5.17 vue: 3.5.17(typescript@5.9.3) + '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.5.32 + '@vue/shared': 3.5.32 + vue: 3.5.32(typescript@5.9.3) + '@vue/shared@3.5.17': {} + '@vue/shared@3.5.32': {} + '@vueuse/core@12.8.2(typescript@5.9.3)': dependencies: '@types/web-bluetooth': 0.0.21 @@ -15695,13 +17696,14 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/integrations@12.8.2(focus-trap@7.6.5)(typescript@5.9.3)': + '@vueuse/integrations@12.8.2(focus-trap@7.6.5)(fuse.js@7.3.0)(typescript@5.9.3)': dependencies: '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/shared': 12.8.2(typescript@5.9.3) vue: 3.5.17(typescript@5.9.3) optionalDependencies: focus-trap: 7.6.5 + fuse.js: 7.3.0 transitivePeerDependencies: - typescript @@ -15726,21 +17728,21 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.15.0): + acorn-import-attributes@1.9.5(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn-loose@8.5.2: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-typescript@1.4.13(acorn@8.15.0): + acorn-typescript@1.4.13(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn-walk@8.3.2: {} @@ -15943,6 +17945,11 @@ snapshots: assertion-error@2.0.1: {} + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.29.0 + pathe: 2.0.3 + ast-kit@3.0.0-beta.1: dependencies: '@babel/parser': 8.0.0-rc.3 @@ -15955,9 +17962,14 @@ snapshots: dependencies: tslib: 2.8.1 + ast-walker-scope@0.8.3: + dependencies: + '@babel/parser': 7.29.0 + ast-kit: 2.2.0 + astring@1.9.0: {} - astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.1): + astro@5.17.3(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.3): dependencies: '@astrojs/compiler': 2.13.1 '@astrojs/internal-helpers': 0.7.5 @@ -16014,8 +18026,8 @@ snapshots: unist-util-visit: 5.0.0 unstorage: 1.17.4(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0) vfile: 6.0.3 - vite: 6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + vite: 6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 @@ -16067,6 +18079,15 @@ snapshots: atomic-sleep@1.0.0: {} + autoprefixer@10.4.27(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001776 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -16166,6 +18187,8 @@ snapshots: birpc@2.4.0: {} + birpc@2.9.0: {} + birpc@4.0.0: {} blake3-wasm@2.1.5: {} @@ -16258,6 +18281,10 @@ snapshots: dependencies: '@types/node': 24.3.0 + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -16319,6 +18346,13 @@ snapshots: camelcase@8.0.0: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001776 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + caniuse-lite@1.0.30001727: {} caniuse-lite@1.0.30001776: {} @@ -16497,6 +18531,8 @@ snapshots: confbox@0.2.2: {} + confbox@0.2.4: {} + consola@3.4.2: {} content-disposition@0.5.4: @@ -16509,6 +18545,8 @@ snapshots: cookie-es@1.2.2: {} + cookie-es@1.2.3: {} + cookie-es@2.0.0: {} cookie-signature@1.0.6: {} @@ -16561,6 +18599,10 @@ snapshots: dependencies: uncrypto: 0.1.3 + css-declaration-sorter@7.4.0(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + css-select@5.2.2: dependencies: boolbase: 1.0.0 @@ -16583,12 +18625,58 @@ snapshots: cssesc@3.0.0: {} + cssnano-preset-default@7.0.12(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + css-declaration-sorter: 7.4.0(postcss@8.5.9) + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 + postcss-calc: 10.1.1(postcss@8.5.9) + postcss-colormin: 7.0.7(postcss@8.5.9) + postcss-convert-values: 7.0.9(postcss@8.5.9) + postcss-discard-comments: 7.0.6(postcss@8.5.9) + postcss-discard-duplicates: 7.0.2(postcss@8.5.9) + postcss-discard-empty: 7.0.1(postcss@8.5.9) + postcss-discard-overridden: 7.0.1(postcss@8.5.9) + postcss-merge-longhand: 7.0.5(postcss@8.5.9) + postcss-merge-rules: 7.0.8(postcss@8.5.9) + postcss-minify-font-values: 7.0.1(postcss@8.5.9) + postcss-minify-gradients: 7.0.2(postcss@8.5.9) + postcss-minify-params: 7.0.6(postcss@8.5.9) + postcss-minify-selectors: 7.0.6(postcss@8.5.9) + postcss-normalize-charset: 7.0.1(postcss@8.5.9) + postcss-normalize-display-values: 7.0.1(postcss@8.5.9) + postcss-normalize-positions: 7.0.1(postcss@8.5.9) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.9) + postcss-normalize-string: 7.0.1(postcss@8.5.9) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.9) + postcss-normalize-unicode: 7.0.6(postcss@8.5.9) + postcss-normalize-url: 7.0.1(postcss@8.5.9) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.9) + postcss-ordered-values: 7.0.2(postcss@8.5.9) + postcss-reduce-initial: 7.0.6(postcss@8.5.9) + postcss-reduce-transforms: 7.0.1(postcss@8.5.9) + postcss-svgo: 7.1.1(postcss@8.5.9) + postcss-unique-selectors: 7.0.5(postcss@8.5.9) + + cssnano-utils@5.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + + cssnano@7.1.4(postcss@8.5.9): + dependencies: + cssnano-preset-default: 7.0.12(postcss@8.5.9) + lilconfig: 3.1.3 + postcss: 8.5.9 + csso@5.0.5: dependencies: css-tree: 2.2.1 csstype@3.1.3: {} + csstype@3.2.3: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.0): dependencies: cose-base: 1.0.3 @@ -16807,6 +18895,10 @@ snapshots: dayjs@1.11.13: {} + db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)): + optionalDependencies: + mysql2: 3.18.2(@types/node@22.19.1) + db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)): optionalDependencies: mysql2: 3.18.2(@types/node@24.3.0) @@ -16852,6 +18944,13 @@ 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-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -16860,6 +18959,8 @@ snapshots: define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -16868,6 +18969,8 @@ snapshots: defu@6.1.4: {} + defu@6.1.7: {} + delaunator@5.0.1: dependencies: robust-predicates: 3.0.2 @@ -17010,12 +19113,16 @@ snapshots: entities@6.0.1: {} + entities@7.0.1: {} + error-stack-parser-es@1.0.5: {} error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 + errx@0.1.0: {} + es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 @@ -17098,6 +19205,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -17677,14 +19786,14 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 espree@9.6.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -17785,8 +19894,6 @@ snapshots: transitivePeerDependencies: - supports-color - exsolve@1.0.7: {} - exsolve@1.0.8: {} extend-shallow@2.0.1: @@ -17834,12 +19941,24 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-npm-meta@1.4.2: {} + fast-querystring@1.1.2: dependencies: fast-decode-uri-component: 1.0.1 + fast-string-truncated-width@1.2.1: {} + + fast-string-width@1.1.0: + dependencies: + fast-string-truncated-width: 1.2.1 + fast-uri@3.1.0: {} + fast-wrap-ansi@0.1.6: + dependencies: + fast-string-width: 1.1.0 + fastify-plugin@5.1.0: {} fastify@5.6.1: @@ -17994,6 +20113,8 @@ snapshots: forwarded@0.2.0: {} + fraction.js@5.3.4: {} + fresh@0.5.2: {} fresh@2.0.0: {} @@ -18016,6 +20137,10 @@ snapshots: functions-have-names@1.2.3: {} + fuse.js@7.3.0: {} + + fzf@0.5.2: {} + generate-function@2.3.1: dependencies: is-property: 1.0.2 @@ -18086,6 +20211,8 @@ snapshots: nypm: 0.6.5 pathe: 2.0.3 + giget@3.2.0: {} + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -18122,6 +20249,10 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -18172,6 +20303,18 @@ snapshots: dependencies: duplexer: 0.1.2 + h3@1.15.11: + dependencies: + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.4 + radix3: 1.1.2 + ufo: 1.6.3 + uncrypto: 0.1.3 + h3@1.15.3: dependencies: cookie-es: 1.2.2 @@ -18179,9 +20322,9 @@ snapshots: defu: 6.1.4 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.1 + node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.6.3 uncrypto: 0.1.3 h3@1.15.5: @@ -18406,6 +20549,8 @@ snapshots: ignore@7.0.5: {} + image-meta@0.2.2: {} + image-q@4.0.0: dependencies: '@types/node': 16.9.1 @@ -18417,15 +20562,15 @@ snapshots: import-in-the-middle@1.14.2: dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 import-in-the-middle@2.0.1: dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 @@ -18433,6 +20578,14 @@ snapshots: import-without-cache@0.2.5: {} + impound@1.1.5: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + es-module-lexer: 2.0.0 + pathe: 2.0.3 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -18442,6 +20595,8 @@ snapshots: inherits@2.0.4: {} + ini@4.1.1: {} + inquirer-toggle@1.0.1: dependencies: '@inquirer/core': 8.2.4 @@ -18581,6 +20736,11 @@ snapshots: dependencies: is-docker: 3.0.0 + is-installed-globally@1.0.0: + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + is-interactive@2.0.0: {} is-map@2.0.3: {} @@ -18683,6 +20843,8 @@ snapshots: isexe@3.1.1: {} + isexe@4.0.0: {} + isomorphic-fetch@3.0.0: dependencies: node-fetch: 2.7.0 @@ -18739,8 +20901,6 @@ snapshots: jiti@1.21.7: {} - jiti@2.5.1: {} - jiti@2.6.1: {} jpeg-js@0.4.4: {} @@ -18900,6 +21060,11 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 + launch-editor@2.13.2: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.3 + layout-base@1.0.2: {} layout-base@2.0.1: {} @@ -18999,8 +21164,8 @@ snapshots: local-pkg@1.1.1: dependencies: - mlly: 1.7.4 - pkg-types: 2.2.0 + mlly: 1.8.1 + pkg-types: 2.3.0 quansync: 0.2.11 local-pkg@1.1.2: @@ -19023,8 +21188,12 @@ snapshots: lodash.isarguments@3.1.0: {} + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} + lodash.uniq@4.5.0: {} + lodash@4.17.23: {} log-symbols@6.0.0: @@ -19056,6 +21225,20 @@ snapshots: lru.min@1.1.4: {} + magic-regexp@0.10.0: + dependencies: + estree-walker: 3.0.3 + magic-string: 0.30.21 + mlly: 1.8.1 + regexp-tree: 0.1.27 + type-level-regexp: 0.1.17 + ufo: 1.6.3 + unplugin: 2.3.11 + + magic-string-ast@1.0.3: + dependencies: + magic-string: 0.30.21 + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -19589,13 +21772,6 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.7.4: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - mlly@1.8.1: dependencies: acorn: 8.16.0 @@ -19603,6 +21779,8 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.3 + mocked-exports@0.1.1: {} + module-details-from-path@1.0.4: {} mri@1.2.0: {} @@ -19621,6 +21799,19 @@ snapshots: mute-stream@2.0.0: {} + mysql2@3.18.2(@types/node@22.19.1): + dependencies: + '@types/node': 22.19.1 + aws-ssl-profiles: 1.1.2 + denque: 2.1.0 + generate-function: 2.3.1 + iconv-lite: 0.7.2 + long: 5.3.2 + lru.min: 1.1.4 + named-placeholders: 1.1.6 + sql-escaper: 1.3.3 + optional: true + mysql2@3.18.2(@types/node@24.3.0): dependencies: '@types/node': 24.3.0 @@ -19645,6 +21836,8 @@ snapshots: nanoid@3.3.11: {} + nanotar@0.3.0: {} + napi-postinstall@0.3.2: {} natural-compare@1.4.0: {} @@ -19729,6 +21922,109 @@ snapshots: - '@babel/core' - babel-plugin-macros + nitropack@2.13.1(mysql2@3.18.2(@types/node@22.19.1))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)): + dependencies: + '@cloudflare/kv-asset-handler': 0.4.2 + '@rollup/plugin-alias': 6.0.0(rollup@4.59.0) + '@rollup/plugin-commonjs': 29.0.1(rollup@4.59.0) + '@rollup/plugin-inject': 5.0.5(rollup@4.59.0) + '@rollup/plugin-json': 6.1.0(rollup@4.59.0) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.59.0) + '@rollup/plugin-replace': 6.0.3(rollup@4.59.0) + '@rollup/plugin-terser': 0.4.4(rollup@4.59.0) + '@vercel/nft': 1.3.2(rollup@4.59.0) + archiver: 7.0.1 + c12: 3.3.3(magicast@0.5.2) + chokidar: 5.0.0 + citty: 0.1.6 + compatx: 0.2.0 + confbox: 0.2.2 + consola: 3.4.2 + cookie-es: 2.0.0 + croner: 9.1.0 + crossws: 0.3.5 + db0: 0.3.4(mysql2@3.18.2(@types/node@22.19.1)) + defu: 6.1.4 + destr: 2.0.5 + dot-prop: 10.1.0 + esbuild: 0.27.3 + escape-string-regexp: 5.0.0 + etag: 1.8.1 + exsolve: 1.0.8 + globby: 16.1.1 + gzip-size: 7.0.0 + h3: 1.15.5 + hookable: 5.5.3 + httpxy: 0.1.7 + ioredis: 5.10.0 + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + listhen: 1.9.0 + magic-string: 0.30.21 + magicast: 0.5.2 + mime: 4.1.0 + mlly: 1.8.1 + node-fetch-native: 1.6.7 + node-mock-http: 1.0.4 + ofetch: 1.5.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + pretty-bytes: 7.1.0 + radix3: 1.1.2 + rollup: 4.59.0 + rollup-plugin-visualizer: 6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0) + scule: 1.3.0 + semver: 7.7.4 + serve-placeholder: 2.0.2 + serve-static: 2.2.1 + source-map: 0.7.6 + std-env: 3.10.0 + ufo: 1.6.3 + ultrahtml: 1.6.0 + uncrypto: 0.1.3 + unctx: 2.5.0 + unenv: 2.0.0-rc.24 + unimport: 5.7.0 + unplugin-utils: 0.3.1 + unstorage: 1.17.4(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0) + untyped: 2.0.0 + unwasm: 0.5.3 + youch: 4.1.0 + youch-core: 0.3.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@libsql/client' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bare-abort-controller + - bare-buffer + - better-sqlite3 + - drizzle-orm + - encoding + - idb-keyval + - mysql2 + - react-native-b4a + - rolldown + - sqlite3 + - supports-color + - uploadthing + nitropack@2.13.1(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 @@ -19848,8 +22144,6 @@ snapshots: node-gyp-build@4.8.4: {} - node-mock-http@1.0.1: {} - node-mock-http@1.0.4: {} node-releases@2.0.36: {} @@ -19867,10 +22161,147 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 + nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3): + dependencies: + '@dxup/nuxt': 0.4.0(magicast@0.5.2)(typescript@5.9.3) + '@nuxt/cli': 3.34.0(@nuxt/schema@4.4.2)(cac@6.7.14)(magicast@0.5.2) + '@nuxt/devtools': 3.2.4(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@nuxt/nitro-server': 4.4.2(@babel/core@7.29.0)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(typescript@5.9.3) + '@nuxt/schema': 4.4.2 + '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.4.2(magicast@0.5.2)) + '@nuxt/vite-builder': 4.4.2(bf69f36230ccf8089c15f129bdb621d7) + '@unhead/vue': 2.1.13(vue@3.5.32(typescript@5.9.3)) + '@vue/shared': 3.5.32 + c12: 3.3.3(magicast@0.5.2) + chokidar: 5.0.0 + compatx: 0.2.0 + consola: 3.4.2 + cookie-es: 2.0.0 + defu: 6.1.4 + devalue: 5.6.3 + errx: 0.1.0 + escape-string-regexp: 5.0.0 + exsolve: 1.0.8 + hookable: 6.1.0 + ignore: 7.0.5 + impound: 1.1.5 + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.1 + nanotar: 0.3.0 + nypm: 0.6.5 + ofetch: 1.5.1 + ohash: 2.0.11 + on-change: 6.0.2 + oxc-minify: 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + oxc-parser: 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + oxc-transform: 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + oxc-walker: 0.7.0(oxc-parser@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)) + pathe: 2.0.3 + perfect-debounce: 2.1.0 + picomatch: 4.0.4 + pkg-types: 2.3.0 + rou3: 0.8.1 + scule: 1.3.0 + semver: 7.7.4 + std-env: 4.0.0 + tinyglobby: 0.2.15 + ufo: 1.6.3 + ultrahtml: 1.6.0 + uncrypto: 0.1.3 + unctx: 2.5.0 + unimport: 6.0.2 + unplugin: 3.0.0 + unrouting: 0.1.7 + untyped: 2.0.0 + vue: 3.5.32(typescript@5.9.3) + vue-router: 5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.9.3)) + optionalDependencies: + '@parcel/watcher': 2.5.6 + '@types/node': 22.19.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/core' + - '@babel/plugin-proposal-decorators' + - '@babel/plugin-syntax-jsx' + - '@biomejs/biome' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@emnapi/core' + - '@emnapi/runtime' + - '@libsql/client' + - '@netlify/blobs' + - '@pinia/colada' + - '@planetscale/database' + - '@rollup/plugin-babel' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - '@vue/compiler-sfc' + - aws4fetch + - bare-abort-controller + - bare-buffer + - better-sqlite3 + - bufferutil + - cac + - commander + - db0 + - drizzle-orm + - encoding + - eslint + - idb-keyval + - ioredis + - less + - lightningcss + - magicast + - meow + - mysql2 + - optionator + - oxlint + - pinia + - react-native-b4a + - rolldown + - rollup + - rollup-plugin-visualizer + - sass + - sass-embedded + - sqlite3 + - stylelint + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - utf-8-validate + - vite + - vls + - vti + - vue-tsc + - xml2js + - yaml + nypm@0.6.5: dependencies: citty: 0.2.1 @@ -19929,10 +22360,14 @@ snapshots: node-fetch-native: 1.6.7 ufo: 1.6.3 + ofetch@2.0.0-alpha.3: {} + ohash@2.0.11: {} omggif@1.0.10: {} + on-change@6.0.2: {} + on-exit-leak-free@2.1.2: {} on-finished@2.4.1: @@ -19973,6 +22408,13 @@ snapshots: only@0.0.2: {} + 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 @@ -20009,6 +22451,91 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxc-minify@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5): + optionalDependencies: + '@oxc-minify/binding-android-arm-eabi': 0.117.0 + '@oxc-minify/binding-android-arm64': 0.117.0 + '@oxc-minify/binding-darwin-arm64': 0.117.0 + '@oxc-minify/binding-darwin-x64': 0.117.0 + '@oxc-minify/binding-freebsd-x64': 0.117.0 + '@oxc-minify/binding-linux-arm-gnueabihf': 0.117.0 + '@oxc-minify/binding-linux-arm-musleabihf': 0.117.0 + '@oxc-minify/binding-linux-arm64-gnu': 0.117.0 + '@oxc-minify/binding-linux-arm64-musl': 0.117.0 + '@oxc-minify/binding-linux-ppc64-gnu': 0.117.0 + '@oxc-minify/binding-linux-riscv64-gnu': 0.117.0 + '@oxc-minify/binding-linux-riscv64-musl': 0.117.0 + '@oxc-minify/binding-linux-s390x-gnu': 0.117.0 + '@oxc-minify/binding-linux-x64-gnu': 0.117.0 + '@oxc-minify/binding-linux-x64-musl': 0.117.0 + '@oxc-minify/binding-openharmony-arm64': 0.117.0 + '@oxc-minify/binding-wasm32-wasi': 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + '@oxc-minify/binding-win32-arm64-msvc': 0.117.0 + '@oxc-minify/binding-win32-ia32-msvc': 0.117.0 + '@oxc-minify/binding-win32-x64-msvc': 0.117.0 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + oxc-parser@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5): + dependencies: + '@oxc-project/types': 0.117.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.117.0 + '@oxc-parser/binding-android-arm64': 0.117.0 + '@oxc-parser/binding-darwin-arm64': 0.117.0 + '@oxc-parser/binding-darwin-x64': 0.117.0 + '@oxc-parser/binding-freebsd-x64': 0.117.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.117.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.117.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.117.0 + '@oxc-parser/binding-linux-arm64-musl': 0.117.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.117.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.117.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.117.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.117.0 + '@oxc-parser/binding-linux-x64-gnu': 0.117.0 + '@oxc-parser/binding-linux-x64-musl': 0.117.0 + '@oxc-parser/binding-openharmony-arm64': 0.117.0 + '@oxc-parser/binding-wasm32-wasi': 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + '@oxc-parser/binding-win32-arm64-msvc': 0.117.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.117.0 + '@oxc-parser/binding-win32-x64-msvc': 0.117.0 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + oxc-transform@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5): + optionalDependencies: + '@oxc-transform/binding-android-arm-eabi': 0.117.0 + '@oxc-transform/binding-android-arm64': 0.117.0 + '@oxc-transform/binding-darwin-arm64': 0.117.0 + '@oxc-transform/binding-darwin-x64': 0.117.0 + '@oxc-transform/binding-freebsd-x64': 0.117.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.117.0 + '@oxc-transform/binding-linux-arm-musleabihf': 0.117.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.117.0 + '@oxc-transform/binding-linux-arm64-musl': 0.117.0 + '@oxc-transform/binding-linux-ppc64-gnu': 0.117.0 + '@oxc-transform/binding-linux-riscv64-gnu': 0.117.0 + '@oxc-transform/binding-linux-riscv64-musl': 0.117.0 + '@oxc-transform/binding-linux-s390x-gnu': 0.117.0 + '@oxc-transform/binding-linux-x64-gnu': 0.117.0 + '@oxc-transform/binding-linux-x64-musl': 0.117.0 + '@oxc-transform/binding-openharmony-arm64': 0.117.0 + '@oxc-transform/binding-wasm32-wasi': 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + '@oxc-transform/binding-win32-arm64-msvc': 0.117.0 + '@oxc-transform/binding-win32-ia32-msvc': 0.117.0 + '@oxc-transform/binding-win32-x64-msvc': 0.117.0 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + oxc-walker@0.7.0(oxc-parser@0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)): + dependencies: + magic-regexp: 0.10.0 + oxc-parser: 0.117.0(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5) + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -20173,13 +22700,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - pkg-types@2.2.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.7 + mlly: 1.8.1 pathe: 2.0.3 pkg-types@2.3.0: @@ -20197,51 +22718,189 @@ snapshots: pvutils: 1.1.3 tslib: 2.8.1 - pngjs@3.4.0: {} + pngjs@3.4.0: {} + + pngjs@6.0.0: {} + + pngjs@7.0.0: {} + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + possible-typed-array-names@1.1.0: {} + + postcss-calc@10.1.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-colormin@7.0.7(postcss@8.5.9): + dependencies: + '@colordx/core': 5.0.3 + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.9(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.6(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-selector-parser: 7.1.1 + + postcss-discard-duplicates@7.0.2(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + + postcss-discard-empty@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + + postcss-discard-overridden@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + + postcss-import@15.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@3.1.4(postcss@8.5.6): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.5.6 + + postcss-load-config@4.0.2(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.1 + optionalDependencies: + postcss: 8.5.6 + + postcss-merge-longhand@7.0.5(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.8(postcss@8.5.9) + + postcss-merge-rules@7.0.8(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 + postcss-selector-parser: 7.1.1 + + postcss-minify-font-values@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.2(postcss@8.5.9): + dependencies: + '@colordx/core': 5.0.3 + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.6(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.6(postcss@8.5.9): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.9 + postcss-selector-parser: 7.1.1 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-normalize-charset@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + + postcss-normalize-display-values@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - pngjs@6.0.0: {} + postcss-normalize-positions@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - pngjs@7.0.0: {} + postcss-normalize-repeat-style@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - points-on-curve@0.2.0: {} + postcss-normalize-string@7.0.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - points-on-path@0.2.1: + postcss-normalize-timing-functions@7.0.1(postcss@8.5.9): dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - possible-typed-array-names@1.1.0: {} + postcss-normalize-unicode@7.0.6(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.5.6): + postcss-normalize-url@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.5.6): + postcss-normalize-whitespace@7.0.1(postcss@8.5.9): dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.6 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - postcss-load-config@3.1.4(postcss@8.5.6): + postcss-ordered-values@7.0.2(postcss@8.5.9): dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.5.6 + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 + postcss-value-parser: 4.2.0 - postcss-load-config@4.0.2(postcss@8.5.6): + postcss-reduce-initial@7.0.6(postcss@8.5.9): dependencies: - lilconfig: 3.1.3 - yaml: 2.8.1 - optionalDependencies: - postcss: 8.5.6 + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.5.9 - postcss-nested@6.2.0(postcss@8.5.6): + postcss-reduce-transforms@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 + postcss: 8.5.9 + postcss-value-parser: 4.2.0 postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: @@ -20261,6 +22920,22 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.1.1(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-value-parser: 4.2.0 + svgo: 4.0.1 + + postcss-unique-selectors@7.0.5(postcss@8.5.9): + dependencies: + postcss: 8.5.9 + postcss-selector-parser: 7.1.1 + postcss-value-parser@4.2.0: {} postcss@8.4.31: @@ -20275,6 +22950,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.9: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} postgres-bytea@1.0.0: {} @@ -20412,6 +23093,11 @@ snapshots: defu: 6.1.4 destr: 2.0.5 + rc9@3.0.1: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + rdf-canonize@5.0.0: dependencies: setimmediate: 1.0.5 @@ -20520,6 +23206,8 @@ snapshots: dependencies: regex-utilities: 2.3.0 + regexp-tree@0.1.27: {} + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -20805,6 +23493,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + rou3@0.8.1: {} + roughjs@4.6.6: dependencies: hachure-fill: 0.5.2 @@ -20812,6 +23502,8 @@ snapshots: points-on-curve: 0.2.0 points-on-path: 0.2.1 + run-applescript@7.1.0: {} + run-async@4.0.6: {} run-parallel@1.2.0: @@ -20861,6 +23553,8 @@ snapshots: sax@1.4.3: {} + sax@1.6.0: {} + scheduler@0.25.0-rc-7771d3a7-20240827: {} scheduler@0.26.0: {} @@ -20926,6 +23620,8 @@ snapshots: seroval@1.5.0: {} + seroval@1.5.2: {} + serve-placeholder@2.0.2: dependencies: defu: 6.1.4 @@ -21040,6 +23736,8 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote@1.8.3: {} + shiki@1.29.2: dependencies: '@shikijs/core': 1.29.2 @@ -21107,6 +23805,16 @@ snapshots: signal-exit@4.1.0: {} + simple-git@3.36.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + '@simple-git/args-pathspec': 1.0.3 + '@simple-git/argv-parser': 1.1.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -21119,6 +23827,12 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + sisteransi@1.0.5: {} slash@3.0.0: {} @@ -21175,6 +23889,8 @@ snapshots: sql-escaper@1.3.3: {} + srvx@0.11.15: {} + srvx@0.8.16: {} stable-hash@0.0.5: {} @@ -21198,6 +23914,8 @@ snapshots: std-env@3.10.0: {} + std-env@4.0.0: {} + stdin-discarder@0.2.2: {} stop-iteration-iterator@1.1.0: @@ -21333,6 +24051,8 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.4.2 + structured-clone-es@2.0.0: {} + structured-field-values@2.0.4: {} styled-jsx@5.1.1(react@19.0.0-rc-7771d3a7-20240827): @@ -21345,6 +24065,12 @@ snapshots: client-only: 0.0.1 react: 19.1.0 + stylehacks@7.0.8(postcss@8.5.9): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.9 + postcss-selector-parser: 7.1.1 + stylis@4.3.6: {} sucrase@3.35.0: @@ -21419,6 +24145,16 @@ snapshots: picocolors: 1.1.1 sax: 1.4.3 + svgo@4.0.1: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.6.0 + system-architecture@0.1.0: {} tabbable@6.2.0: {} @@ -21493,7 +24229,7 @@ snapshots: terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -21523,6 +24259,8 @@ snapshots: tinybench@2.9.0: {} + tinyclip@0.1.12: {} + tinycolor2@1.6.0: {} tinyexec@0.3.2: {} @@ -21702,6 +24440,8 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 + type-level-regexp@0.1.17: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -21754,8 +24494,6 @@ snapshots: uc.micro@2.1.0: {} - ufo@1.6.1: {} - ufo@1.6.3: {} uid@2.0.2: @@ -21782,7 +24520,7 @@ snapshots: unctx@2.5.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 estree-walker: 3.0.3 magic-string: 0.30.21 unplugin: 2.3.11 @@ -21812,7 +24550,7 @@ snapshots: unenv@2.0.0-rc.17: dependencies: defu: 6.1.4 - exsolve: 1.0.7 + exsolve: 1.0.8 ohash: 2.0.11 pathe: 2.0.3 ufo: 1.6.3 @@ -21820,7 +24558,7 @@ snapshots: unenv@2.0.0-rc.21: dependencies: defu: 6.1.4 - exsolve: 1.0.7 + exsolve: 1.0.8 ohash: 2.0.11 pathe: 2.0.3 ufo: 1.6.3 @@ -21829,6 +24567,12 @@ snapshots: dependencies: pathe: 2.0.3 + unhead@2.1.13: + dependencies: + hookable: 6.1.0 + + unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} unified@11.0.5: @@ -21864,6 +24608,23 @@ snapshots: unplugin: 2.3.11 unplugin-utils: 0.3.1 + unimport@6.0.2: + dependencies: + acorn: 8.16.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.1 + pathe: 2.0.3 + picomatch: 4.0.4 + pkg-types: 2.3.0 + scule: 1.3.0 + strip-literal: 3.1.0 + tinyglobby: 0.2.15 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + unist-util-find-after@5.0.0: dependencies: '@types/unist': 3.0.3 @@ -21922,10 +24683,21 @@ snapshots: unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 + acorn: 8.16.0 + picomatch: 4.0.4 + webpack-virtual-modules: 0.6.2 + + unplugin@3.0.0: + dependencies: + '@jridgewell/remapping': 2.3.5 picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 + unrouting@0.1.7: + dependencies: + escape-string-regexp: 5.0.0 + ufo: 1.6.3 + unrs-resolver@1.11.1: dependencies: napi-postinstall: 0.3.2 @@ -21957,6 +24729,20 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' + unstorage@1.17.4(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0): + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.5 + lru-cache: 11.2.6 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.3 + optionalDependencies: + db0: 0.3.4(mysql2@3.18.2(@types/node@22.19.1)) + ioredis: 5.10.0 + unstorage@1.17.4(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0): dependencies: anymatch: 3.1.3 @@ -22048,7 +24834,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1): + vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.18.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -22082,7 +24868,7 @@ snapshots: unctx: 2.5.0 unenv: 1.10.0 unstorage: 1.17.4(db0@0.3.4(mysql2@3.18.2(@types/node@24.3.0)))(ioredis@5.10.0) - vite: 6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) zod: 4.3.6 transitivePeerDependencies: - '@azure/app-configuration' @@ -22130,13 +24916,23 @@ snapshots: - xml2js - yaml - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1): + vite-dev-rpc@1.1.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): + dependencies: + birpc: 2.4.0 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-hot-client: 2.1.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + + vite-hot-client@2.1.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): + dependencies: + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -22151,7 +24947,59 @@ snapshots: - tsx - yaml - vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)): + vite-node@5.3.0(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): + dependencies: + cac: 6.7.14 + es-module-lexer: 2.0.0 + obug: 2.1.1 + pathe: 2.0.3 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + vite-plugin-checker@0.12.0(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): + dependencies: + '@babel/code-frame': 7.29.0 + chokidar: 4.0.3 + npm-run-path: 6.0.0 + picocolors: 1.1.1 + picomatch: 4.0.4 + tiny-invariant: 1.3.3 + tinyglobby: 0.2.15 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vscode-uri: 3.1.0 + optionalDependencies: + optionator: 0.9.4 + typescript: 5.9.3 + + vite-plugin-inspect@11.3.3(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): + dependencies: + ansis: 4.2.0 + debug: 4.4.3 + error-stack-parser-es: 1.0.5 + ohash: 2.0.11 + open: 10.2.0 + perfect-debounce: 2.1.0 + sirv: 3.0.2 + unplugin-utils: 0.3.1 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-dev-rpc: 1.1.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) + optionalDependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + transitivePeerDependencies: + - supports-color + + vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): dependencies: '@babel/core': 7.29.0 '@types/babel__core': 7.20.5 @@ -22159,11 +25007,21 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.11 solid-refresh: 0.6.3(solid-js@1.9.11) - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vitefu: 1.1.1(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) transitivePeerDependencies: - supports-color + vite-plugin-vue-tracer@1.3.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)): + dependencies: + estree-walker: 3.0.3 + exsolve: 1.0.8 + magic-string: 0.30.21 + pathe: 2.0.3 + source-map-js: 1.2.1 + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vue: 3.5.32(typescript@5.9.3) + vite@5.4.19(@types/node@22.19.1)(lightningcss@1.30.1)(terser@5.46.0): dependencies: esbuild: 0.21.5 @@ -22175,7 +25033,7 @@ snapshots: lightningcss: 1.30.1 terser: 5.46.0 - vite@6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1): + vite@6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: esbuild: 0.25.5 fdir: 6.5.0(picomatch@4.0.4) @@ -22190,9 +25048,9 @@ snapshots: lightningcss: 1.30.1 terser: 5.46.0 tsx: 4.20.3 - yaml: 2.8.1 + yaml: 2.8.3 - vite@7.1.3(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1): + vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: esbuild: 0.25.5 fdir: 6.5.0(picomatch@4.0.3) @@ -22200,6 +25058,23 @@ snapshots: postcss: 8.5.6 rollup: 4.44.1 tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.3.0 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.30.1 + terser: 5.46.0 + tsx: 4.20.3 + yaml: 2.8.3 + + vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.9 + rollup: 4.59.0 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.1 fsevents: 2.3.3 @@ -22207,16 +25082,16 @@ snapshots: lightningcss: 1.30.1 terser: 5.46.0 tsx: 4.20.3 - yaml: 2.8.1 + yaml: 2.8.3 - vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1): + vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: - esbuild: 0.25.5 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.44.1 - tinyglobby: 0.2.14 + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.9 + rollup: 4.59.0 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 @@ -22224,23 +25099,27 @@ snapshots: lightningcss: 1.30.1 terser: 5.46.0 tsx: 4.20.3 - yaml: 2.8.1 + yaml: 2.8.3 + + vitefu@1.1.1(vite@6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): + optionalDependencies: + vite: 6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) - vitefu@1.1.1(vite@6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)): + vitefu@1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): optionalDependencies: - vite: 6.4.1(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) - vitefu@1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)): + vitefu@1.1.1(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) - vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.1.3(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)): + vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): dependencies: '@iconify-json/logos': 1.2.4 '@iconify-json/vscode-icons': 1.2.23 '@iconify/utils': 2.3.0 markdown-it: 14.1.0 - vite: 7.1.3(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -22263,14 +25142,14 @@ snapshots: - '@75lb/nature' - supports-color - vitepress-plugin-mermaid@2.0.17(mermaid@11.7.0)(vitepress@1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3)): + vitepress-plugin-mermaid@2.0.17(mermaid@11.7.0)(vitepress@1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(fuse.js@7.3.0)(lightningcss@1.30.1)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3)): dependencies: mermaid: 11.7.0 - vitepress: 1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3) + vitepress: 1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(fuse.js@7.3.0)(lightningcss@1.30.1)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3) optionalDependencies: '@mermaid-js/mermaid-mindmap': 9.3.0 - vitepress@1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3): + vitepress@1.6.3(@algolia/client-search@5.29.0)(@types/node@22.19.1)(@types/react@18.3.23)(fuse.js@7.3.0)(lightningcss@1.30.1)(postcss@8.5.9)(search-insights@2.17.3)(terser@5.46.0)(typescript@5.9.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.29.0)(@types/react@18.3.23)(search-insights@2.17.3) @@ -22283,7 +25162,7 @@ snapshots: '@vue/devtools-api': 7.7.7 '@vue/shared': 3.5.17 '@vueuse/core': 12.8.2(typescript@5.9.3) - '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)(typescript@5.9.3) + '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)(fuse.js@7.3.0)(typescript@5.9.3) focus-trap: 7.6.5 mark.js: 8.11.1 minisearch: 7.1.2 @@ -22291,7 +25170,7 @@ snapshots: vite: 5.4.19(@types/node@22.19.1)(lightningcss@1.30.1)(terser@5.46.0) vue: 3.5.17(typescript@5.9.3) optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.9 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -22319,11 +25198,11 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -22341,8 +25220,8 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -22378,10 +25257,41 @@ snapshots: vscode-uri@3.0.8: {} + vscode-uri@3.1.0: {} + + vue-bundle-renderer@2.2.0: + dependencies: + ufo: 1.6.3 + + vue-devtools-stub@0.1.0: {} + vue-resize@2.0.0-alpha.1(vue@3.5.17(typescript@5.9.3)): dependencies: vue: 3.5.17(typescript@5.9.3) + vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.32(typescript@5.9.3)): + dependencies: + '@babel/generator': 7.29.1 + '@vue-macros/common': 3.1.2(vue@3.5.32(typescript@5.9.3)) + '@vue/devtools-api': 8.1.1 + ast-walker-scope: 0.8.3 + chokidar: 5.0.0 + json5: 2.2.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.1 + muggle-string: 0.4.1 + pathe: 2.0.3 + picomatch: 4.0.4 + scule: 1.3.0 + tinyglobby: 0.2.15 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + vue: 3.5.32(typescript@5.9.3) + yaml: 2.8.3 + optionalDependencies: + '@vue/compiler-sfc': 3.5.32 + vue@3.5.17(typescript@5.9.3): dependencies: '@vue/compiler-dom': 3.5.17 @@ -22392,6 +25302,16 @@ snapshots: optionalDependencies: typescript: 5.9.3 + vue@3.5.32(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.32 + '@vue/compiler-sfc': 3.5.32 + '@vue/runtime-dom': 3.5.32 + '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@5.9.3)) + '@vue/shared': 3.5.32 + optionalDependencies: + typescript: 5.9.3 + wasm-feature-detect@1.8.0: {} web-namespaces@2.0.1: {} @@ -22458,6 +25378,10 @@ snapshots: dependencies: isexe: 3.1.1 + which@6.0.1: + dependencies: + isexe: 4.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -22547,6 +25471,12 @@ snapshots: ws@8.18.0: {} + ws@8.20.0: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + x-forwarded-fetch@0.2.0: {} xml-parse-from-string@1.0.1: {} @@ -22574,6 +25504,8 @@ snapshots: yaml@2.8.1: {} + yaml@2.8.3: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} @@ -22635,7 +25567,7 @@ snapshots: dependencies: '@poppinss/colors': 4.1.6 '@poppinss/dumper': 0.6.5 - '@speed-highlight/core': 1.2.12 + '@speed-highlight/core': 1.2.14 cookie: 1.1.1 youch-core: 0.3.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 59aeedee3..11356c65c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,13 +11,14 @@ packages: - packages/fedify - packages/fixture - packages/h3 -- packages/init - packages/hono +- packages/init - packages/koa - packages/lint - packages/mysql - packages/nestjs - packages/next +- packages/nuxt - packages/postgres - packages/redis - packages/relay @@ -69,6 +70,7 @@ catalog: "@types/koa": ^2.15.0 "@types/node": ^22.17.0 "@nestjs/common": ^11.0.1 + "@nuxt/kit": ^4.4.0 astro: ^5.0.0 amqplib: ^0.10.9 asn1js: ^3.0.6 @@ -88,6 +90,7 @@ catalog: next: ^15.4.6 pkijs: ^3.3.3 mysql2: ^3.18.0 + nuxt: ^4.4.2 postgres: ^3.4.7 tsdown: ^0.21.6 typescript: ^5.9.2 From 2d0f54e570f6e569c3974e0f187c8463e8f58909 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 03:02:51 +0000 Subject: [PATCH 03/30] Add pull request reference for Nuxt changelog entry --- CHANGES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 893479a76..968ba39f0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -54,10 +54,11 @@ To be released. supports shared-route content negotiation, and returns deferred `406 Not acceptable` when Fedify routes are requested without ActivityPub-compatible `Accept` headers and Nuxt has no matching page. - [[#149] by ChanHaeng Lee] + [[#149], [#674] by ChanHaeng Lee] [Nuxt]: https://nuxt.com/ [#149]: https://github.com/fedify-dev/fedify/issues/149 +[#674]: https://github.com/fedify-dev/fedify/pull/674 ### @fedify/init From 5d6b6f08cc010ab8bd834a9d9be4b8d6d31d849d Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 03:52:03 +0000 Subject: [PATCH 04/30] Fix imports - Use @fedify/fixture instead of node:test in mod.test.ts - Type event parameter as H3Event instead of unknown in middleware.ts Co-Authored-By: Claude (claude-opus-4-20250514) --- packages/nuxt/src/mod.test.ts | 2 +- packages/nuxt/src/mod.ts | 1 + packages/nuxt/src/runtime/server/middleware.ts | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/nuxt/src/mod.test.ts b/packages/nuxt/src/mod.test.ts index 650017d2a..61f5d2bce 100644 --- a/packages/nuxt/src/mod.test.ts +++ b/packages/nuxt/src/mod.test.ts @@ -1,5 +1,5 @@ import { strict as assert } from "node:assert"; -import { test } from "node:test"; +import { test } from "@fedify/fixture"; import { fetchWithFedify, resolveDeferredNotAcceptable, diff --git a/packages/nuxt/src/mod.ts b/packages/nuxt/src/mod.ts index 391bddf55..fc35d8288 100644 --- a/packages/nuxt/src/mod.ts +++ b/packages/nuxt/src/mod.ts @@ -5,6 +5,7 @@ import { createResolver, defineNuxtModule, resolveAlias, + type Nuxt, } from "@nuxt/kit"; import type { H3Event } from "h3"; diff --git a/packages/nuxt/src/runtime/server/middleware.ts b/packages/nuxt/src/runtime/server/middleware.ts index 0d6a8faa3..1e023528e 100644 --- a/packages/nuxt/src/runtime/server/middleware.ts +++ b/packages/nuxt/src/runtime/server/middleware.ts @@ -1,5 +1,5 @@ import type { Federation } from "@fedify/fedify/federation"; -import { defineEventHandler, toWebRequest } from "h3"; +import { defineEventHandler, toWebRequest, type H3Event } from "h3"; import { DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, fetchWithFedify, @@ -19,7 +19,7 @@ function assertFederation( export function createFedifyMiddleware( federation: unknown, - contextDataFactory?: (event: unknown, request: Request) => unknown, + contextDataFactory?: (event: H3Event, request: Request) => unknown, ) { assertFederation(federation); From a5bba6f4446fdde767505736982ca7b31b042149 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 03:55:14 +0000 Subject: [PATCH 05/30] Extract shared constants into lib.ts Move NOT_ACCEPTABLE_BODY and DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY into a shared lib.ts to avoid string duplication across logic.ts and plugin.ts. Co-Authored-By: Claude (claude-opus-4-20250514) --- packages/nuxt/src/mod.ts | 1 - packages/nuxt/src/runtime/server/lib.ts | 4 ++++ packages/nuxt/src/runtime/server/logic.ts | 8 ++++---- packages/nuxt/src/runtime/server/middleware.ts | 6 ++---- packages/nuxt/src/runtime/server/plugin.ts | 8 +++----- 5 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 packages/nuxt/src/runtime/server/lib.ts diff --git a/packages/nuxt/src/mod.ts b/packages/nuxt/src/mod.ts index fc35d8288..391bddf55 100644 --- a/packages/nuxt/src/mod.ts +++ b/packages/nuxt/src/mod.ts @@ -5,7 +5,6 @@ import { createResolver, defineNuxtModule, resolveAlias, - type Nuxt, } from "@nuxt/kit"; import type { H3Event } from "h3"; diff --git a/packages/nuxt/src/runtime/server/lib.ts b/packages/nuxt/src/runtime/server/lib.ts new file mode 100644 index 000000000..019673a7f --- /dev/null +++ b/packages/nuxt/src/runtime/server/lib.ts @@ -0,0 +1,4 @@ +export const NOT_ACCEPTABLE_BODY = "Not acceptable"; + +export const DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY = + "__fedify_deferred_not_acceptable__"; diff --git a/packages/nuxt/src/runtime/server/logic.ts b/packages/nuxt/src/runtime/server/logic.ts index 8b072197b..20b06d959 100644 --- a/packages/nuxt/src/runtime/server/logic.ts +++ b/packages/nuxt/src/runtime/server/logic.ts @@ -1,9 +1,12 @@ import type { FederationFetchOptions } from "@fedify/fedify/federation"; +import { NOT_ACCEPTABLE_BODY } from "./lib.ts"; + +export { DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY } from "./lib.ts"; const DUMMY_NOT_FOUND_RESPONSE = new Response("", { status: 404 }); const createNotAcceptableResponse = () => - new Response("Not acceptable", { + new Response(NOT_ACCEPTABLE_BODY, { status: 406, headers: { "Content-Type": "text/plain", @@ -11,9 +14,6 @@ const createNotAcceptableResponse = () => }, }); -export const DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY = - "__fedify_deferred_not_acceptable__"; - export type FetchResult = | { kind: "handled"; response: Response } | { kind: "not-found" } diff --git a/packages/nuxt/src/runtime/server/middleware.ts b/packages/nuxt/src/runtime/server/middleware.ts index 1e023528e..a7ae96ad1 100644 --- a/packages/nuxt/src/runtime/server/middleware.ts +++ b/packages/nuxt/src/runtime/server/middleware.ts @@ -1,9 +1,7 @@ import type { Federation } from "@fedify/fedify/federation"; import { defineEventHandler, toWebRequest, type H3Event } from "h3"; -import { - DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, - fetchWithFedify, -} from "./logic.ts"; +import { DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY } from "./lib.ts"; +import { fetchWithFedify } from "./logic.ts"; function assertFederation( federation: unknown, diff --git a/packages/nuxt/src/runtime/server/plugin.ts b/packages/nuxt/src/runtime/server/plugin.ts index a9c5eaebc..d9214ad45 100644 --- a/packages/nuxt/src/runtime/server/plugin.ts +++ b/packages/nuxt/src/runtime/server/plugin.ts @@ -1,9 +1,7 @@ import { getResponseStatus, setResponseHeader, setResponseStatus } from "h3"; import type { H3Event } from "h3"; -import { - DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, - resolveDeferredNotAcceptable, -} from "./logic.ts"; +import { DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, NOT_ACCEPTABLE_BODY } from "./lib.ts"; +import { resolveDeferredNotAcceptable } from "./logic.ts"; interface ResponsePayload { body?: unknown; @@ -39,7 +37,7 @@ const fedifyPlugin: NitroAppPlugin = (nitroApp: MinimalNitroApp) => { setResponseHeader(event, key, value); }); - payload.body = "Not acceptable"; + payload.body = NOT_ACCEPTABLE_BODY; }, ); }; From f909d0bbb6ee951d489cfeed90ad0ca01453d6ec Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 03:55:45 +0000 Subject: [PATCH 06/30] Fix docs - Close unclosed bash code fence in SKILL.md - Fix "can not" to "cannot" in SKILL.md - Use asterisk-wrapped file paths in README.md and integration.md Co-Authored-By: Claude (claude-opus-4-20250514) --- .agents/skills/create-example-app-with-integration/SKILL.md | 4 ++-- docs/manual/integration.md | 6 +++--- packages/nuxt/README.md | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.agents/skills/create-example-app-with-integration/SKILL.md b/.agents/skills/create-example-app-with-integration/SKILL.md index 8f23fdcba..ae0f00e42 100644 --- a/.agents/skills/create-example-app-with-integration/SKILL.md +++ b/.agents/skills/create-example-app-with-integration/SKILL.md @@ -175,10 +175,11 @@ is broken: mise test:examples ~~~~ -If the `test:examples` can not be run, just run the server and test with curl: +If the `test:examples` cannot be run, just run the server and test with curl: ~~~~ bash curl -H "Accept: application/activity+json" http://localhost:0000/users/demo +~~~~ Lint, format, and final checks @@ -190,4 +191,3 @@ root path. After implementation, run `mise run fmt && mise check`. If there are lint or format errors, fix them and run the command again until there are no errors. -~~~~ diff --git a/docs/manual/integration.md b/docs/manual/integration.md index 48696d05c..209b08496 100644 --- a/docs/manual/integration.md +++ b/docs/manual/integration.md @@ -394,7 +394,7 @@ bun add @fedify/nuxt ::: -Create your federation instance in _server/federation.ts_: +Create your federation instance in *server/federation.ts*: ~~~~ typescript import { createFederation, MemoryKvStore } from "@fedify/fedify"; @@ -406,7 +406,7 @@ const federation = createFederation({ export default federation; ~~~~ -Then enable the module in _nuxt.config.ts_: +Then enable the module in *nuxt.config.ts*: ~~~~ typescript export default defineNuxtConfig({ @@ -415,7 +415,7 @@ export default defineNuxtConfig({ ~~~~ By default, _@fedify/nuxt_ loads the federation instance from -`~/server/federation`. You can customize module paths using `fedify` options: +*~/server/federation*. You can customize module paths using `fedify` options: ~~~~ typescript export default defineNuxtConfig({ diff --git a/packages/nuxt/README.md b/packages/nuxt/README.md index 6c40a5606..2424c87e5 100644 --- a/packages/nuxt/README.md +++ b/packages/nuxt/README.md @@ -69,7 +69,7 @@ export default defineNuxtConfig({ ~~~~ By default, `@fedify/nuxt` loads your Federation instance from -`~/server/federation`. +*~/server/federation*. If your project uses a different file path or context data factory, configure the module options: From 55e5ca8d0a7cebb8fb9f3dd0102dc3ab4226e4a9 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 04:03:33 +0000 Subject: [PATCH 07/30] Format --- packages/nuxt/src/runtime/server/middleware.ts | 2 +- packages/nuxt/src/runtime/server/plugin.ts | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/nuxt/src/runtime/server/middleware.ts b/packages/nuxt/src/runtime/server/middleware.ts index a7ae96ad1..341dad13e 100644 --- a/packages/nuxt/src/runtime/server/middleware.ts +++ b/packages/nuxt/src/runtime/server/middleware.ts @@ -1,5 +1,5 @@ import type { Federation } from "@fedify/fedify/federation"; -import { defineEventHandler, toWebRequest, type H3Event } from "h3"; +import { defineEventHandler, type H3Event, toWebRequest } from "h3"; import { DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY } from "./lib.ts"; import { fetchWithFedify } from "./logic.ts"; diff --git a/packages/nuxt/src/runtime/server/plugin.ts b/packages/nuxt/src/runtime/server/plugin.ts index d9214ad45..d82e1d912 100644 --- a/packages/nuxt/src/runtime/server/plugin.ts +++ b/packages/nuxt/src/runtime/server/plugin.ts @@ -1,6 +1,9 @@ -import { getResponseStatus, setResponseHeader, setResponseStatus } from "h3"; import type { H3Event } from "h3"; -import { DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, NOT_ACCEPTABLE_BODY } from "./lib.ts"; +import { getResponseStatus, setResponseHeader, setResponseStatus } from "h3"; +import { + DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, + NOT_ACCEPTABLE_BODY, +} from "./lib.ts"; import { resolveDeferredNotAcceptable } from "./logic.ts"; interface ResponsePayload { From 7fec746f8525dc4674aca9fb571632961e7780bc Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 09:37:03 +0000 Subject: [PATCH 08/30] Remove `@nuxt/kit` from global packages and add `@nuxt/kit`, `@nuxt/schema` to `@fedify/nuxt` --- deno.lock | 23 ++++++++++++++++++++++- packages/nuxt/deno.json | 1 + packages/nuxt/package.json | 3 ++- pnpm-lock.yaml | 10 +++++----- pnpm-workspace.yaml | 1 - 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/deno.lock b/deno.lock index e9c65714f..d33aef597 100644 --- a/deno.lock +++ b/deno.lock @@ -79,6 +79,8 @@ "npm:@multiformats/base-x@^4.0.1": "4.0.1", "npm:@nestjs/common@^11.0.1": "11.1.17_reflect-metadata@0.2.2_rxjs@7.8.2", "npm:@nuxt/kit@4": "4.4.2", + "npm:@nuxt/schema@4": "4.4.2", + "npm:@nuxt/schema@^4.4.0": "4.4.2", "npm:@opentelemetry/api@^1.9.0": "1.9.1", "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", "npm:@opentelemetry/core@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", @@ -2416,6 +2418,16 @@ "untyped" ] }, + "@nuxt/schema@4.4.2": { + "integrity": "sha512-/q6C7Qhiricgi+PKR7ovBnJlKTL0memCbA1CzRT+itCW/oeYzUfeMdQ35mGntlBoyRPNrMXbzuSUhfDbSCU57w==", + "dependencies": [ + "@vue/shared", + "defu", + "pathe@2.0.3", + "pkg-types@2.3.0", + "std-env@4.0.0" + ] + }, "@opentelemetry/api@1.9.1": { "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==" }, @@ -3518,6 +3530,9 @@ "tinyrainbow" ] }, + "@vue/shared@3.5.32": { + "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==" + }, "abbrev@3.0.1": { "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==" }, @@ -9435,8 +9450,14 @@ "packages/nuxt": { "dependencies": [ "npm:@nuxt/kit@4", + "npm:@nuxt/schema@4", "npm:h3@^1.15.0" - ] + ], + "packageJson": { + "dependencies": [ + "npm:@nuxt/schema@^4.4.0" + ] + } }, "packages/relay": { "dependencies": [ diff --git a/packages/nuxt/deno.json b/packages/nuxt/deno.json index 56e52c515..bdc96f240 100644 --- a/packages/nuxt/deno.json +++ b/packages/nuxt/deno.json @@ -7,6 +7,7 @@ }, "imports": { "@nuxt/kit": "npm:@nuxt/kit@^4.0.0", + "@nuxt/schema": "npm:@nuxt/schema@^4.0.0", "h3": "npm:h3@^1.15.0" }, "exclude": [ diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 44cd82477..346ee42b8 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -51,12 +51,13 @@ ], "peerDependencies": { "@fedify/fedify": "workspace:^", - "@nuxt/kit": "catalog:", + "@nuxt/kit": "^4.4.0", "h3": "catalog:", "nuxt": "catalog:" }, "devDependencies": { "@types/node": "catalog:", + "@nuxt/schema": "^4.4.0", "tsdown": "catalog:", "typescript": "catalog:" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09dacd1d0..29d14e91d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,9 +27,6 @@ catalogs: '@nestjs/common': specifier: ^11.0.1 version: 11.1.4 - '@nuxt/kit': - specifier: ^4.4.0 - version: 4.4.2 '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -1399,7 +1396,7 @@ importers: specifier: workspace:^ version: link:../fedify '@nuxt/kit': - specifier: 'catalog:' + specifier: ^4.4.0 version: 4.4.2(magicast@0.5.2) h3: specifier: 'catalog:' @@ -1408,6 +1405,9 @@ importers: specifier: 'catalog:' version: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3) devDependencies: + '@nuxt/schema': + specifier: ^4.4.0 + version: 4.4.2 '@types/node': specifier: 'catalog:' version: 22.19.1 @@ -14633,7 +14633,7 @@ snapshots: dependencies: c12: 3.3.3(magicast@0.5.2) consola: 3.4.2 - defu: 6.1.4 + defu: 6.1.7 destr: 2.0.5 errx: 0.1.0 exsolve: 1.0.8 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 11356c65c..32d6a58f1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -70,7 +70,6 @@ catalog: "@types/koa": ^2.15.0 "@types/node": ^22.17.0 "@nestjs/common": ^11.0.1 - "@nuxt/kit": ^4.4.0 astro: ^5.0.0 amqplib: ^0.10.9 asn1js: ^3.0.6 From b0f4a23ee83deb70f5e0375dd1b0bbb5406f3eb1 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 09:54:47 +0000 Subject: [PATCH 09/30] Replace hard-coded type with imported type --- packages/nuxt/src/mod.ts | 131 +++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/packages/nuxt/src/mod.ts b/packages/nuxt/src/mod.ts index 391bddf55..fd01679d3 100644 --- a/packages/nuxt/src/mod.ts +++ b/packages/nuxt/src/mod.ts @@ -1,11 +1,12 @@ import { addServerHandler, addServerPlugin, - addTemplate, + addServerTemplate, createResolver, defineNuxtModule, resolveAlias, } from "@nuxt/kit"; +import type { Nuxt } from "@nuxt/schema"; import type { H3Event } from "h3"; /** @@ -39,77 +40,75 @@ export interface ModuleOptions { /** * Nuxt module to integrate Fedify with Nuxt/Nitro request handling. */ -const fedifyNuxtModule: ReturnType> = - defineNuxtModule({ - meta: { - name: "@fedify/nuxt", - configKey: "fedify", - }, - defaults: { - federationModule: "~/server/federation", - contextDataFactoryModule: undefined, - }, - setup( - options: ModuleOptions, - nuxt: { options: { alias: Record } }, - ) { - const resolver = createResolver(import.meta.url); - const federationModule = resolveAlias( - options.federationModule, - nuxt.options.alias, - ); - const contextDataFactoryModule = options.contextDataFactoryModule == null - ? undefined - : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); +const fedifyNuxtModule = defineNuxtModule({ + meta: { + name: "@fedify/nuxt", + configKey: "fedify", + }, + defaults: { + federationModule: "~/server/federation", + contextDataFactoryModule: undefined, + }, + setup(options: ModuleOptions, nuxt: Nuxt) { + const resolver = createResolver(import.meta.url); + const federationModule = resolveAlias( + options.federationModule, + nuxt.options.alias, + ); + const contextDataFactoryModule = options.contextDataFactoryModule == null + ? undefined + : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); - const middlewareTemplate = addTemplate({ - filename: "fedify-nuxt-options.mjs", - getContents: () => { - const imports = [ - `import * as federationModule from ${ - JSON.stringify(federationModule) - };`, - `import { createFedifyMiddleware } from ${ - JSON.stringify( - resolver.resolve("../src/runtime/server/middleware.ts"), - ) - };`, - ]; + const middlewareFilename = "fedify-nuxt-options.mjs"; - if (contextDataFactoryModule != null) { - imports.push( - `import * as contextFactoryModule from ${ - JSON.stringify(contextDataFactoryModule) - };`, - ); - } + addServerTemplate({ + filename: middlewareFilename, + getContents: () => { + const imports = [ + `import * as federationModule from ${ + JSON.stringify(federationModule) + };`, + `import { createFedifyMiddleware } from ${ + JSON.stringify( + resolver.resolve("../src/runtime/server/middleware.ts"), + ) + };`, + ]; - const contextFactoryResolver = contextDataFactoryModule == null - ? "const contextDataFactory = undefined;" - : [ - "const contextDataFactory =", - " contextFactoryModule.default ??", - " contextFactoryModule.contextDataFactory;", - ].join("\n"); + if (contextDataFactoryModule != null) { + imports.push( + `import * as contextFactoryModule from ${ + JSON.stringify(contextDataFactoryModule) + };`, + ); + } - return [ - ...imports, - "const federation = federationModule.default ?? federationModule.federation;", - contextFactoryResolver, - "export default createFedifyMiddleware(federation, contextDataFactory);", - "", + const contextFactoryResolver = contextDataFactoryModule == null + ? "const contextDataFactory = undefined;" + : [ + "const contextDataFactory =", + " contextFactoryModule.default ??", + " contextFactoryModule.contextDataFactory;", ].join("\n"); - }, - }); - addServerHandler({ - route: "", - middleware: true, - handler: middlewareTemplate.dst, - }); + return [ + ...imports, + "const federation = federationModule.default ?? federationModule.federation;", + contextFactoryResolver, + "export default createFedifyMiddleware(federation, contextDataFactory);", + "", + ].join("\n"); + }, + }); + + addServerHandler({ + route: "", + middleware: true, + handler: middlewareFilename, + }); - addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); - }, - }); + addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); + }, +}); export default fedifyNuxtModule; From 32b4dac36bf41d1877aa375e57f400e5ded73d3d Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 10:55:47 +0000 Subject: [PATCH 10/30] Include runtime server files in deno check scope --- packages/nuxt/deno.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nuxt/deno.json b/packages/nuxt/deno.json index bdc96f240..c0ff2eadd 100644 --- a/packages/nuxt/deno.json +++ b/packages/nuxt/deno.json @@ -22,6 +22,6 @@ }, "tasks": { "test": "deno test", - "check": "deno fmt --check && deno lint && deno check src/*.ts" + "check": "deno fmt --check && deno lint && deno check src/*.ts src/runtime/server/*.ts" } } From 58807b9207fcce97fac56fe1096af533e9f69462 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 10:58:43 +0000 Subject: [PATCH 11/30] Explicit type --- packages/nuxt/src/mod.ts | 129 ++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 64 deletions(-) diff --git a/packages/nuxt/src/mod.ts b/packages/nuxt/src/mod.ts index fd01679d3..9b4ddc30a 100644 --- a/packages/nuxt/src/mod.ts +++ b/packages/nuxt/src/mod.ts @@ -6,7 +6,7 @@ import { defineNuxtModule, resolveAlias, } from "@nuxt/kit"; -import type { Nuxt } from "@nuxt/schema"; +import type { Nuxt, NuxtModule } from "@nuxt/schema"; import type { H3Event } from "h3"; /** @@ -40,75 +40,76 @@ export interface ModuleOptions { /** * Nuxt module to integrate Fedify with Nuxt/Nitro request handling. */ -const fedifyNuxtModule = defineNuxtModule({ - meta: { - name: "@fedify/nuxt", - configKey: "fedify", - }, - defaults: { - federationModule: "~/server/federation", - contextDataFactoryModule: undefined, - }, - setup(options: ModuleOptions, nuxt: Nuxt) { - const resolver = createResolver(import.meta.url); - const federationModule = resolveAlias( - options.federationModule, - nuxt.options.alias, - ); - const contextDataFactoryModule = options.contextDataFactoryModule == null - ? undefined - : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); +const fedifyNuxtModule: NuxtModule = + defineNuxtModule({ + meta: { + name: "@fedify/nuxt", + configKey: "fedify", + }, + defaults: { + federationModule: "~/server/federation", + contextDataFactoryModule: undefined, + }, + setup(options: ModuleOptions, nuxt: Nuxt) { + const resolver = createResolver(import.meta.url); + const federationModule = resolveAlias( + options.federationModule, + nuxt.options.alias, + ); + const contextDataFactoryModule = options.contextDataFactoryModule == null + ? undefined + : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); - const middlewareFilename = "fedify-nuxt-options.mjs"; + const middlewareFilename = "fedify-nuxt-options.mjs"; - addServerTemplate({ - filename: middlewareFilename, - getContents: () => { - const imports = [ - `import * as federationModule from ${ - JSON.stringify(federationModule) - };`, - `import { createFedifyMiddleware } from ${ - JSON.stringify( - resolver.resolve("../src/runtime/server/middleware.ts"), - ) - };`, - ]; - - if (contextDataFactoryModule != null) { - imports.push( - `import * as contextFactoryModule from ${ - JSON.stringify(contextDataFactoryModule) + addServerTemplate({ + filename: middlewareFilename, + getContents: () => { + const imports = [ + `import * as federationModule from ${ + JSON.stringify(federationModule) + };`, + `import { createFedifyMiddleware } from ${ + JSON.stringify( + resolver.resolve("../src/runtime/server/middleware.ts"), + ) };`, - ); - } + ]; - const contextFactoryResolver = contextDataFactoryModule == null - ? "const contextDataFactory = undefined;" - : [ - "const contextDataFactory =", - " contextFactoryModule.default ??", - " contextFactoryModule.contextDataFactory;", - ].join("\n"); + if (contextDataFactoryModule != null) { + imports.push( + `import * as contextFactoryModule from ${ + JSON.stringify(contextDataFactoryModule) + };`, + ); + } - return [ - ...imports, - "const federation = federationModule.default ?? federationModule.federation;", - contextFactoryResolver, - "export default createFedifyMiddleware(federation, contextDataFactory);", - "", - ].join("\n"); - }, - }); + const contextFactoryResolver = contextDataFactoryModule == null + ? "const contextDataFactory = undefined;" + : [ + "const contextDataFactory =", + " contextFactoryModule.default ??", + " contextFactoryModule.contextDataFactory;", + ].join("\n"); + + return [ + ...imports, + "const federation = federationModule.default ?? federationModule.federation;", + contextFactoryResolver, + "export default createFedifyMiddleware(federation, contextDataFactory);", + "", + ].join("\n"); + }, + }); - addServerHandler({ - route: "", - middleware: true, - handler: middlewareFilename, - }); + addServerHandler({ + route: "", + middleware: true, + handler: middlewareFilename, + }); - addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); - }, -}); + addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); + }, + }); export default fedifyNuxtModule; From f5b22a1e4b4378818b61fa820802802b8817f55b Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 16:24:55 +0000 Subject: [PATCH 12/30] Validate contextDataFactory export type at startup --- packages/nuxt/deno.json | 2 +- packages/nuxt/src/mod.test.ts | 44 +++++++++++- packages/nuxt/src/mod.ts | 117 +------------------------------- packages/nuxt/src/module.ts | 124 ++++++++++++++++++++++++++++++++++ 4 files changed, 170 insertions(+), 117 deletions(-) create mode 100644 packages/nuxt/src/module.ts diff --git a/packages/nuxt/deno.json b/packages/nuxt/deno.json index c0ff2eadd..a4267d8c7 100644 --- a/packages/nuxt/deno.json +++ b/packages/nuxt/deno.json @@ -21,7 +21,7 @@ ] }, "tasks": { - "test": "deno test", + "test": "deno test --allow-env", "check": "deno fmt --check && deno lint && deno check src/*.ts src/runtime/server/*.ts" } } diff --git a/packages/nuxt/src/mod.test.ts b/packages/nuxt/src/mod.test.ts index 61f5d2bce..44b9b648f 100644 --- a/packages/nuxt/src/mod.test.ts +++ b/packages/nuxt/src/mod.test.ts @@ -1,5 +1,6 @@ -import { strict as assert } from "node:assert"; import { test } from "@fedify/fixture"; +import { strict as assert } from "node:assert"; +import { buildContextFactoryResolver } from "./module.ts"; import { fetchWithFedify, resolveDeferredNotAcceptable, @@ -87,3 +88,44 @@ test("framework response is preserved for shared HTML route", async () => { const negotiated = resolveDeferredNotAcceptable(true, 200); assert.equal(negotiated, undefined); }); + +test("contextFactoryResolver validates contextDataFactory export", () => { + // Evaluate the generated code with a mock contextFactoryModule + function evalResolver( + contextFactoryModule: Record | null, + ): unknown { + const code = buildContextFactoryResolver( + contextFactoryModule == null ? null : "~/factory", + ); + const fn = new Function( + "contextFactoryModule", + code + "\nreturn contextDataFactory;", + ); + return fn(contextFactoryModule); + } + + // 1. contextDataFactoryModule is null + assert.equal(evalResolver(null), undefined); + + // 2. default export is a function + const factory = () => ({}); + assert.equal(evalResolver({ default: factory }), factory); + + // 3. default export is not a function + assert.throws( + () => evalResolver({ default: "not-a-function" }), + TypeError, + ); + + // 4. named export contextDataFactory is a function + assert.equal( + evalResolver({ default: undefined, contextDataFactory: factory }), + factory, + ); + + // 5. named export contextDataFactory is not a function + assert.throws( + () => evalResolver({ default: undefined, contextDataFactory: 42 }), + TypeError, + ); +}); diff --git a/packages/nuxt/src/mod.ts b/packages/nuxt/src/mod.ts index 9b4ddc30a..7852cdc0b 100644 --- a/packages/nuxt/src/mod.ts +++ b/packages/nuxt/src/mod.ts @@ -1,115 +1,2 @@ -import { - addServerHandler, - addServerPlugin, - addServerTemplate, - createResolver, - defineNuxtModule, - resolveAlias, -} from "@nuxt/kit"; -import type { Nuxt, NuxtModule } from "@nuxt/schema"; -import type { H3Event } from "h3"; - -/** - * A factory function that creates context data for the Federation instance. - */ -export type ContextDataFactory = ( - event: H3Event, - request: Request, -) => TContextData | Promise; - -export interface ModuleOptions { - /** - * Path to a module that exports the configured Federation instance. - * - * The module must export either: - * - a default export of `Federation`, or - * - a named export `federation`. - */ - federationModule: string; - - /** - * Optional path to a module that exports context data factory. - * - * The module must export either: - * - a default export function, or - * - a named export `contextDataFactory`. - */ - contextDataFactoryModule?: string; -} - -/** - * Nuxt module to integrate Fedify with Nuxt/Nitro request handling. - */ -const fedifyNuxtModule: NuxtModule = - defineNuxtModule({ - meta: { - name: "@fedify/nuxt", - configKey: "fedify", - }, - defaults: { - federationModule: "~/server/federation", - contextDataFactoryModule: undefined, - }, - setup(options: ModuleOptions, nuxt: Nuxt) { - const resolver = createResolver(import.meta.url); - const federationModule = resolveAlias( - options.federationModule, - nuxt.options.alias, - ); - const contextDataFactoryModule = options.contextDataFactoryModule == null - ? undefined - : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); - - const middlewareFilename = "fedify-nuxt-options.mjs"; - - addServerTemplate({ - filename: middlewareFilename, - getContents: () => { - const imports = [ - `import * as federationModule from ${ - JSON.stringify(federationModule) - };`, - `import { createFedifyMiddleware } from ${ - JSON.stringify( - resolver.resolve("../src/runtime/server/middleware.ts"), - ) - };`, - ]; - - if (contextDataFactoryModule != null) { - imports.push( - `import * as contextFactoryModule from ${ - JSON.stringify(contextDataFactoryModule) - };`, - ); - } - - const contextFactoryResolver = contextDataFactoryModule == null - ? "const contextDataFactory = undefined;" - : [ - "const contextDataFactory =", - " contextFactoryModule.default ??", - " contextFactoryModule.contextDataFactory;", - ].join("\n"); - - return [ - ...imports, - "const federation = federationModule.default ?? federationModule.federation;", - contextFactoryResolver, - "export default createFedifyMiddleware(federation, contextDataFactory);", - "", - ].join("\n"); - }, - }); - - addServerHandler({ - route: "", - middleware: true, - handler: middlewareFilename, - }); - - addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); - }, - }); - -export default fedifyNuxtModule; +export { default } from "./module.ts"; +export type { ContextDataFactory, ModuleOptions } from "./module.ts"; diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts new file mode 100644 index 000000000..656eb1039 --- /dev/null +++ b/packages/nuxt/src/module.ts @@ -0,0 +1,124 @@ +import { + addServerHandler, + addServerPlugin, + addServerTemplate, + createResolver, + defineNuxtModule, + resolveAlias, +} from "@nuxt/kit"; +import type { Nuxt, NuxtModule } from "@nuxt/schema"; +import type { H3Event } from "h3"; + +/** + * A factory function that creates context data for the Federation instance. + */ +export type ContextDataFactory = ( + event: H3Event, + request: Request, +) => TContextData | Promise; + +export interface ModuleOptions { + /** + * Path to a module that exports the configured Federation instance. + * + * The module must export either: + * - a default export of `Federation`, or + * - a named export `federation`. + */ + federationModule: string; + + /** + * Optional path to a module that exports context data factory. + * + * The module must export either: + * - a default export function, or + * - a named export `contextDataFactory`. + */ + contextDataFactoryModule?: string; +} + +export function buildContextFactoryResolver( + contextDataFactoryModule: string | null, +): string { + if (contextDataFactoryModule == null) { + return "const contextDataFactory = undefined;"; + } + return ` +const contextDataFactory = + contextFactoryModule.default ?? + contextFactoryModule.contextDataFactory; +if (contextDataFactory != null && typeof contextDataFactory !== 'function') { + throw new TypeError( + \'@fedify/nuxt: contextDataFactoryModule must export a function as "default" or named "contextDataFactory".\' + ); +}`; +} + +/** + * Nuxt module to integrate Fedify with Nuxt/Nitro request handling. + */ +const fedifyNuxtModule: NuxtModule = + defineNuxtModule({ + meta: { + name: "@fedify/nuxt", + configKey: "fedify", + }, + defaults: { + federationModule: "~/server/federation", + contextDataFactoryModule: undefined, + }, + setup(options: ModuleOptions, nuxt: Nuxt) { + const resolver = createResolver(import.meta.url); + const federationModule = resolveAlias( + options.federationModule, + nuxt.options.alias, + ); + const contextDataFactoryModule = options.contextDataFactoryModule == null + ? undefined + : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); + + const middlewareFilename = "fedify-nuxt-options.mjs"; + + addServerTemplate({ + filename: middlewareFilename, + getContents: () => { + const imports = [ + `import * as federationModule from ${ + JSON.stringify(federationModule) + };`, + `import { createFedifyMiddleware } from ${ + JSON.stringify( + resolver.resolve("../src/runtime/server/middleware.ts"), + ) + };`, + ]; + + if (contextDataFactoryModule != null) { + imports.push( + `import * as contextFactoryModule from ${ + JSON.stringify(contextDataFactoryModule) + };`, + ); + } + + return [ + ...imports, + "const federation = federationModule.default ?? federationModule.federation;", + buildContextFactoryResolver(contextDataFactoryModule ?? null), + "export default createFedifyMiddleware(federation, contextDataFactory);", + "", + ].join("\n"); + }, + }); + + addServerHandler({ + route: "", + middleware: true, + handler: middlewareFilename, + }); + + addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); + }, + }); + +export default fedifyNuxtModule; From 1ec06ab92c91d40aa8fe68a5743c013b84622ca9 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 16:44:40 +0000 Subject: [PATCH 13/30] Fix typography and formatting in docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use en dash instead of hyphen in example README template title ("Fedify–프레임워크") - Wrap HTTP status codes in backticks and use official reason phrases in SKILL.md headings ("404 Not Found", "406 Not Acceptable") - Capitalize "Acceptable" in CHANGES.md to match the official HTTP status phrase https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- .../create-example-app-with-integration/example/README.md | 2 +- .agents/skills/create-integration-package/SKILL.md | 4 ++-- CHANGES.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.agents/skills/create-example-app-with-integration/example/README.md b/.agents/skills/create-example-app-with-integration/example/README.md index ae0210bc1..fbfb809e4 100644 --- a/.agents/skills/create-example-app-with-integration/example/README.md +++ b/.agents/skills/create-example-app-with-integration/example/README.md @@ -2,7 +2,7 @@ -Fedify-프레임워크 integration example application +Fedify–프레임워크 integration example application ================================================= A comprehensive example of building a federated server application using diff --git a/.agents/skills/create-integration-package/SKILL.md b/.agents/skills/create-integration-package/SKILL.md index 1cc07d5b8..c36581f97 100644 --- a/.agents/skills/create-integration-package/SKILL.md +++ b/.agents/skills/create-integration-package/SKILL.md @@ -93,14 +93,14 @@ When a request arrives, the integration middleware calls `application/activity+json`, Fedify generates and returns the JSON-LD response directly. Framework-side routing does not execute. -#### Fallthrough on 404 (not found) +#### Fallthrough on `404 Not Found` When `federation.fetch()` does not recognize the path, it invokes the `onNotFound` callback. The integration should delegate to the framework's next handler so that non-federation routes (HTML pages, API endpoints, etc.) are served normally. -#### Deferred 406 (not acceptable) +#### Deferred `406 Not Acceptable` When Fedify owns the route but the client does not accept an ActivityPub media type (e.g., a browser requesting `text/html`), it invokes the diff --git a/CHANGES.md b/CHANGES.md index 968ba39f0..2a2deb404 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -52,7 +52,7 @@ To be released. - Added `@fedify/nuxt` package for integrating Fedify with [Nuxt]. It provides a Nuxt module that delegates non-federation requests to Nuxt, supports shared-route content negotiation, and returns deferred - `406 Not acceptable` when Fedify routes are requested without + `406 Not Acceptable` when Fedify routes are requested without ActivityPub-compatible `Accept` headers and Nuxt has no matching page. [[#149], [#674] by ChanHaeng Lee] From 37c57d0a7b962273c538faa8d37efd7a761cb871 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 16:59:30 +0000 Subject: [PATCH 14/30] Add @fedify/fixture to nuxt devDependencies The test file imports from @fedify/fixture but it was missing from devDependencies, which would cause ERR_MODULE_NOT_FOUND in a clean install when running Node.js tests. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/package.json | 1 + pnpm-lock.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 346ee42b8..a5918cd60 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -56,6 +56,7 @@ "nuxt": "catalog:" }, "devDependencies": { + "@fedify/fixture": "workspace:^", "@types/node": "catalog:", "@nuxt/schema": "^4.4.0", "tsdown": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29d14e91d..15bc4f402 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1405,6 +1405,9 @@ importers: specifier: 'catalog:' version: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5)(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4(mysql2@3.18.2(@types/node@22.19.1)))(ioredis@5.10.0)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.18.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.12(@emnapi/core@1.4.3)(@emnapi/runtime@1.4.5))(rollup@4.59.0))(rollup@4.59.0)(terser@5.46.0)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3) devDependencies: + '@fedify/fixture': + specifier: workspace:^ + version: link:../fixture '@nuxt/schema': specifier: ^4.4.0 version: 4.4.2 From adff9f69bd691d7f5277787f1df68fd69d25c5b8 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 17:11:32 +0000 Subject: [PATCH 15/30] Add regression tests for PR review issues Add failing tests that reproduce four bugs identified in PR review comments: - logic.test.ts: handler-returned 406 is misclassified as "not-acceptable" instead of "handled" (review #5) - logic.test.ts: framework's intentional 404 on shared routes is rewritten to 406 by resolveDeferredNotAcceptable (review #6) - module.test.ts: resolveAlias does not resolve plain relative paths to absolute, breaking .nuxt/ imports (review #7) - module.test.ts: missing default/contextDataFactory exports silently return undefined instead of throwing (review #9) All four tests fail against the current implementation and will pass once the corresponding bugs are fixed. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 Add regression tests for PR review issues Add regression tests for PR review issues --- packages/nuxt/src/module.test.ts | 51 +++++++++++++++++++ .../nuxt/src/runtime/server/logic.test.ts | 50 ++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 packages/nuxt/src/module.test.ts create mode 100644 packages/nuxt/src/runtime/server/logic.test.ts diff --git a/packages/nuxt/src/module.test.ts b/packages/nuxt/src/module.test.ts new file mode 100644 index 000000000..f54a1247d --- /dev/null +++ b/packages/nuxt/src/module.test.ts @@ -0,0 +1,51 @@ +import { test } from "@fedify/fixture"; +import { equal, ok, throws } from "node:assert/strict"; +import { isAbsolute } from "node:path"; +import { buildContextFactoryResolver, resolveModulePath } from "./module.ts"; + +test( + "relative module path must resolve to absolute path", + () => { + const aliases = { "~": "/app", "@": "/app" }; + const rootDir = "/app"; + + // Aliased path works correctly + const aliased = resolveModulePath("~/server/federation", aliases, rootDir); + ok( + isAbsolute(aliased), + `aliased path should be absolute, got: ${aliased}`, + ); + + // Plain relative path must now also resolve to absolute + const relative = resolveModulePath( + "./server/federation", + aliases, + rootDir, + ); + ok( + isAbsolute(relative), + `relative path should be resolved to absolute, got: ${relative}`, + ); + equal(relative, "/app/server/federation"); + }, +); + +test( + "missing exports must throw, not silently return undefined", + () => { + const code = buildContextFactoryResolver("~/factory"); + const fn = new Function( + "contextFactoryModule", + code + "\nreturn contextDataFactory;", + ); + + // Module that exports neither `default` nor `contextDataFactory` + const emptyModule = { somethingElse: () => ({}) }; + + throws( + () => fn(emptyModule), + TypeError, + "should throw when module exports neither default nor contextDataFactory", + ); + }, +); diff --git a/packages/nuxt/src/runtime/server/logic.test.ts b/packages/nuxt/src/runtime/server/logic.test.ts new file mode 100644 index 000000000..3b98dfcfd --- /dev/null +++ b/packages/nuxt/src/runtime/server/logic.test.ts @@ -0,0 +1,50 @@ +import { test } from "@fedify/fixture"; +import { equal, ok, strictEqual } from "node:assert/strict"; +import { fetchWithFedify, resolveDeferredNotAcceptable } from "./logic.ts"; + +test( + "genuine handler 406 must be classified as handled", + async () => { + const handlerBody = JSON.stringify({ error: "custom reason" }); + const handlerResponse = new Response(handlerBody, { + status: 406, + headers: { "Content-Type": "application/json" }, + }); + + const result = await fetchWithFedify( + () => Promise.resolve(handlerResponse), + new Request("https://example.com/inbox"), + undefined, + ); + + equal(result.kind, "handled"); + if (result.kind === "handled") { + strictEqual(result.response, handlerResponse); + } + }, +); + +test( + "framework intentional 404 on shared route must not become 406", + () => { + // When a route handler ran (routeHandled=true), preserve the + // framework's 404 instead of rewriting it to 406. + const result = resolveDeferredNotAcceptable(true, 404, true); + equal( + result, + undefined, + "should preserve framework 404 when route was handled", + ); + }, +); + +test( + "deferred 406 fires when no route handler matched", + () => { + // When no route handler matched (routeHandled=false), the 404 + // is a genuine route miss and should be converted to 406. + const result = resolveDeferredNotAcceptable(true, 404, false); + ok(result, "should return 406 when no route handled the request"); + equal(result!.status, 406); + }, +); From 6cddda7d508b5cdd64abea1fc11b990b10a266fe Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 17:17:48 +0000 Subject: [PATCH 16/30] Use identity check for not-acceptable detection Replace the status-code-based check (response.status === 406) with an identity comparison against the synthetic response created by the onNotAcceptable callback. This prevents genuine handler-returned 406 responses from being misclassified as "not-acceptable". The fix mirrors the existing pattern used for not-found detection, where DUMMY_NOT_FOUND_RESPONSE is compared by reference. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/src/runtime/server/logic.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/runtime/server/logic.ts b/packages/nuxt/src/runtime/server/logic.ts index 20b06d959..562ef5a95 100644 --- a/packages/nuxt/src/runtime/server/logic.ts +++ b/packages/nuxt/src/runtime/server/logic.ts @@ -27,17 +27,22 @@ export async function fetchWithFedify( request: Request, contextData: unknown, ): Promise { + let notAcceptableResponse: Response | null = null; + const response = await fetcher(request, { contextData, onNotFound: () => DUMMY_NOT_FOUND_RESPONSE, - onNotAcceptable: createNotAcceptableResponse, + onNotAcceptable: () => { + notAcceptableResponse = createNotAcceptableResponse(); + return notAcceptableResponse; + }, }); if (response === DUMMY_NOT_FOUND_RESPONSE) { return { kind: "not-found" }; } - if (response.status === 406) { + if (notAcceptableResponse != null && response === notAcceptableResponse) { return { kind: "not-acceptable" }; } From 0dd8492fa466bcb19383eba0bd855aa8eb62edc2 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 17:20:58 +0000 Subject: [PATCH 17/30] Preserve framework 404 on shared routes Add a routeHandled parameter to resolveDeferredNotAcceptable so that it can distinguish a framework's intentional 404 (e.g., a matched page returning "user not found") from a genuine route miss. When routeHandled is true, the framework's 404 is preserved instead of being rewritten to 406. The plugin now passes event.context.matchedRoute to detect whether a Nitro route handler processed the request. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/src/runtime/server/logic.ts | 2 ++ packages/nuxt/src/runtime/server/plugin.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/nuxt/src/runtime/server/logic.ts b/packages/nuxt/src/runtime/server/logic.ts index 562ef5a95..2e02077f3 100644 --- a/packages/nuxt/src/runtime/server/logic.ts +++ b/packages/nuxt/src/runtime/server/logic.ts @@ -52,7 +52,9 @@ export async function fetchWithFedify( export function resolveDeferredNotAcceptable( isDeferred: boolean, frameworkStatus: number, + routeHandled?: boolean, ): Response | undefined { if (!isDeferred || frameworkStatus !== 404) return undefined; + if (routeHandled) return undefined; return createNotAcceptableResponse(); } diff --git a/packages/nuxt/src/runtime/server/plugin.ts b/packages/nuxt/src/runtime/server/plugin.ts index d82e1d912..d369a2269 100644 --- a/packages/nuxt/src/runtime/server/plugin.ts +++ b/packages/nuxt/src/runtime/server/plugin.ts @@ -32,6 +32,7 @@ const fedifyPlugin: NitroAppPlugin = (nitroApp: MinimalNitroApp) => { const negotiatedResponse = resolveDeferredNotAcceptable( deferred, getResponseStatus(event), + event.context.matchedRoute != null, ); if (negotiatedResponse == null) return; From 6d98b887ca4c0930d07ff690f4f059e1503cb205 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 17:22:55 +0000 Subject: [PATCH 18/30] Resolve relative module paths against Nuxt root resolveAlias() only expands aliases like ~ and @, leaving plain relative paths (./server/federation) unchanged. These paths then resolve against .nuxt/ at runtime instead of the project root, causing ERR_MODULE_NOT_FOUND. Add resolveModulePath() that wraps resolveAlias and falls back to path.resolve() against nuxt.options.rootDir for non-absolute results. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/src/module.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 656eb1039..1000ff32b 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -8,6 +8,7 @@ import { } from "@nuxt/kit"; import type { Nuxt, NuxtModule } from "@nuxt/schema"; import type { H3Event } from "h3"; +import { isAbsolute, resolve } from "node:path"; /** * A factory function that creates context data for the Federation instance. @@ -37,6 +38,16 @@ export interface ModuleOptions { contextDataFactoryModule?: string; } +export function resolveModulePath( + modulePath: string, + aliases: Record, + rootDir: string, +): string { + const resolved = resolveAlias(modulePath, aliases); + if (isAbsolute(resolved)) return resolved; + return resolve(rootDir, resolved); +} + export function buildContextFactoryResolver( contextDataFactoryModule: string | null, ): string { @@ -69,13 +80,19 @@ const fedifyNuxtModule: NuxtModule = }, setup(options: ModuleOptions, nuxt: Nuxt) { const resolver = createResolver(import.meta.url); - const federationModule = resolveAlias( + const rootDir = nuxt.options.rootDir; + const federationModule = resolveModulePath( options.federationModule, nuxt.options.alias, + rootDir, ); const contextDataFactoryModule = options.contextDataFactoryModule == null ? undefined - : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); + : resolveModulePath( + options.contextDataFactoryModule, + nuxt.options.alias, + rootDir, + ); const middlewareFilename = "fedify-nuxt-options.mjs"; From 12d3d772c53165f423cfb7b037be15b41f2090e8 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 17:23:36 +0000 Subject: [PATCH 19/30] Throw on missing contextDataFactory exports When contextDataFactoryModule is configured but exports neither a default function nor a named contextDataFactory, the resolver previously set contextDataFactory to undefined silently. This made misconfiguration hard to detect. Now it throws a descriptive TypeError when both exports are missing, matching the existing behavior for non-function exports. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/src/module.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 1000ff32b..f3f4c4f2a 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -58,7 +58,12 @@ export function buildContextFactoryResolver( const contextDataFactory = contextFactoryModule.default ?? contextFactoryModule.contextDataFactory; -if (contextDataFactory != null && typeof contextDataFactory !== 'function') { +if (contextDataFactory == null) { + throw new TypeError( + \'@fedify/nuxt: contextDataFactoryModule must export a function as "default" or named "contextDataFactory", but neither was found.\' + ); +} +if (typeof contextDataFactory !== 'function') { throw new TypeError( \'@fedify/nuxt: contextDataFactoryModule must export a function as "default" or named "contextDataFactory".\' ); From 5d421505ed5627ba0ea2318e1c0fd18266e071e6 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 19:31:42 +0000 Subject: [PATCH 20/30] Add Nuxt plugin regression tests Add plugin-level tests for the Nuxt beforeResponse hook. The new coverage verifies deferred 404 responses are rewritten to 406, ordinary 404 responses are left untouched when no deferred flag is present, and shared-route 404 responses remain unchanged when Nuxt matched the route. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:GPT-5.4 --- .../nuxt/src/runtime/server/plugin.test.ts | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 packages/nuxt/src/runtime/server/plugin.test.ts diff --git a/packages/nuxt/src/runtime/server/plugin.test.ts b/packages/nuxt/src/runtime/server/plugin.test.ts new file mode 100644 index 000000000..a75748ff4 --- /dev/null +++ b/packages/nuxt/src/runtime/server/plugin.test.ts @@ -0,0 +1,118 @@ +import { test } from "@fedify/fixture"; +import type { H3Event } from "h3"; +import { equal, ok } from "node:assert/strict"; +import { + DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY, + NOT_ACCEPTABLE_BODY, +} from "./lib.ts"; +import fedifyPlugin from "./plugin.ts"; + +interface MockResponse { + statusCode: number; + statusMessage?: string; + setHeader(name: string, value: string): void; + getHeader(name: string): string | undefined; +} + +function createMockResponse(statusCode: number): MockResponse { + const headers = new Map(); + return { + statusCode, + setHeader(name: string, value: string) { + headers.set(name.toLowerCase(), value); + }, + getHeader(name: string) { + return headers.get(name.toLowerCase()); + }, + }; +} + +function registerBeforeResponseHook() { + let callback: + | ((event: H3Event, payload: { body?: unknown }) => void) + | undefined; + + fedifyPlugin({ + hooks: { + hook(name, registeredCallback) { + equal(name, "beforeResponse"); + callback = registeredCallback; + }, + }, + }); + + ok(callback, "beforeResponse hook should be registered"); + return callback; +} + +test( + "plugin rewrites deferred 404 without matched route to 406", + () => { + const beforeResponse = registerBeforeResponseHook(); + const response = createMockResponse(404); + const payload = { body: "original body" }; + const event = { + context: { + [DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY]: true, + }, + node: { res: response }, + }; + + beforeResponse(event as unknown as H3Event, payload); + + equal(response.statusCode, 406); + equal(response.getHeader("content-type"), "text/plain"); + equal(response.getHeader("vary"), "Accept"); + equal(payload.body, NOT_ACCEPTABLE_BODY); + equal( + event.context[DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY], + undefined, + ); + }, +); + +test( + "plugin ignores 404 when deferred flag is absent", + () => { + const beforeResponse = registerBeforeResponseHook(); + const response = createMockResponse(404); + const payload = { body: "regular 404" }; + const event: H3Event = { + context: {}, + node: { res: response }, + } as unknown as H3Event; + + beforeResponse(event, payload); + + equal(response.statusCode, 404); + equal(response.getHeader("content-type"), undefined); + equal(payload.body, "regular 404"); + }, +); + +test( + "plugin preserves shared-route 404 when Nuxt matched the route", + () => { + const beforeResponse = registerBeforeResponseHook(); + const response = createMockResponse(404); + const payload = { body: "missing actor page" }; + const event = { + context: { + [DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY]: true, + matchedRoute: {}, + }, + node: { res: response }, + }; + + beforeResponse(event as unknown as H3Event, payload); + + equal(response.statusCode, 404); + equal(response.getHeader("content-type"), undefined); + equal(response.getHeader("vary"), undefined); + equal(payload.body, "missing actor page"); + equal( + event.context[DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY], + undefined, + ); + }, +); From 0986264afd623ea432f423a0672684a19f0fbff1 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 21:34:57 +0000 Subject: [PATCH 21/30] Replace `~~/server` to `#server` --- docs/manual/integration.md | 6 +++--- packages/nuxt/README.md | 6 +++--- packages/nuxt/src/module.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/manual/integration.md b/docs/manual/integration.md index 209b08496..31986c236 100644 --- a/docs/manual/integration.md +++ b/docs/manual/integration.md @@ -415,14 +415,14 @@ export default defineNuxtConfig({ ~~~~ By default, _@fedify/nuxt_ loads the federation instance from -*~/server/federation*. You can customize module paths using `fedify` options: +*#server/federation*. You can customize module paths using `fedify` options: ~~~~ typescript export default defineNuxtConfig({ modules: ["@fedify/nuxt"], fedify: { - federationModule: "~/server/federation", - contextDataFactoryModule: "~/server/fedify-context", + federationModule: "#server/federation", + contextDataFactoryModule: "#server/fedify-context", }, }); ~~~~ diff --git a/packages/nuxt/README.md b/packages/nuxt/README.md index 2424c87e5..7f8465299 100644 --- a/packages/nuxt/README.md +++ b/packages/nuxt/README.md @@ -69,7 +69,7 @@ export default defineNuxtConfig({ ~~~~ By default, `@fedify/nuxt` loads your Federation instance from -*~/server/federation*. +*#server/federation*. If your project uses a different file path or context data factory, configure the module options: @@ -78,8 +78,8 @@ configure the module options: export default defineNuxtConfig({ modules: ["@fedify/nuxt"], fedify: { - federationModule: "~/server/federation", - contextDataFactoryModule: "~/server/fedify-context", + federationModule: "#server/federation", + contextDataFactoryModule: "#server/fedify-context", }, }); ~~~~ diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index f3f4c4f2a..52119fdd9 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -80,7 +80,7 @@ const fedifyNuxtModule: NuxtModule = configKey: "fedify", }, defaults: { - federationModule: "~/server/federation", + federationModule: "#server/federation", contextDataFactoryModule: undefined, }, setup(options: ModuleOptions, nuxt: Nuxt) { From 4b23e69e264ffe7e09c7f3949e371810b6eece85 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 21:59:39 +0000 Subject: [PATCH 22/30] Preserve bare specifiers in resolveModulePath When resolveAlias() passes through a bare package specifier like "@acme/federation" unchanged, the previous code resolved it against rootDir, producing an invalid filesystem path such as "/app/@acme/federation". Now only explicit relative paths (./ or ../) are resolved against rootDir. Bare specifiers are returned as-is so the bundler can resolve them from node_modules. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/src/module.test.ts | 17 +++++++++++++++++ packages/nuxt/src/module.ts | 8 +++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/module.test.ts b/packages/nuxt/src/module.test.ts index f54a1247d..77d024c3c 100644 --- a/packages/nuxt/src/module.test.ts +++ b/packages/nuxt/src/module.test.ts @@ -30,6 +30,23 @@ test( }, ); +test( + "bare specifier must be preserved for bundler resolution", + () => { + const aliases = { "~": "/app", "@": "/app" }; + const rootDir = "/app"; + + equal( + resolveModulePath("@acme/federation", aliases, rootDir), + "@acme/federation", + ); + equal( + resolveModulePath("my-federation-pkg", aliases, rootDir), + "my-federation-pkg", + ); + }, +); + test( "missing exports must throw, not silently return undefined", () => { diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 52119fdd9..958ba79c1 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -45,7 +45,13 @@ export function resolveModulePath( ): string { const resolved = resolveAlias(modulePath, aliases); if (isAbsolute(resolved)) return resolved; - return resolve(rootDir, resolved); + if ( + resolved.startsWith("./") || resolved.startsWith("../") + ) { + return resolve(rootDir, resolved); + } + // Bare specifier (e.g. "@acme/federation") — pass through for the bundler + return resolved; } export function buildContextFactoryResolver( From ae96934d705e463bedd7ed8c3207d4623f70531a Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 22:01:19 +0000 Subject: [PATCH 23/30] Make fetchWithFedify() generic Add a TContextData type parameter (defaulting to unknown) so that typed context data produced by ContextDataFactory flows through the fetcher signature end-to-end instead of being erased to unknown at the helper boundary. https://github.com/fedify-dev/fedify/pull/674 Assisted-by: GitHub Copilot:claude-opus-4.6 --- packages/nuxt/src/runtime/server/logic.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nuxt/src/runtime/server/logic.ts b/packages/nuxt/src/runtime/server/logic.ts index 2e02077f3..57b99c240 100644 --- a/packages/nuxt/src/runtime/server/logic.ts +++ b/packages/nuxt/src/runtime/server/logic.ts @@ -19,13 +19,13 @@ export type FetchResult = | { kind: "not-found" } | { kind: "not-acceptable" }; -export async function fetchWithFedify( +export async function fetchWithFedify( fetcher: ( request: Request, - options: FederationFetchOptions, + options: FederationFetchOptions, ) => Promise, request: Request, - contextData: unknown, + contextData: TContextData, ): Promise { let notAcceptableResponse: Response | null = null; From 9aeb0766a21387fd74971a14e2dd493bfc290c12 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 22:18:11 +0000 Subject: [PATCH 24/30] Add benefits of developing with examples when using skills --- .agents/skills/commit/SKILL.md | 4 ++-- .../skills/create-integration-package/SKILL.md | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.agents/skills/commit/SKILL.md b/.agents/skills/commit/SKILL.md index a8b1f30c8..e7597e969 100644 --- a/.agents/skills/commit/SKILL.md +++ b/.agents/skills/commit/SKILL.md @@ -42,8 +42,8 @@ EOF Don't put `Generated with [Claude Code](https://claude.ai/code)`, or `Co-authored-by` trailers at the end of the commit message. Instead, -use the `Assiged-by` trailer to indicate that the commit was generated by -an AI assistant, if necessary. The format of the `Assiged-by` trailer should +use the `Assigned-by` trailer to indicate that the commit was generated by +an AI assistant, if necessary. The format of the `Assigned-by` trailer should be: ~~~~ diff --git a/.agents/skills/create-integration-package/SKILL.md b/.agents/skills/create-integration-package/SKILL.md index c36581f97..8fc57ddb1 100644 --- a/.agents/skills/create-integration-package/SKILL.md +++ b/.agents/skills/create-integration-package/SKILL.md @@ -61,7 +61,7 @@ Create the package directory inside the `packages/` directory. For example, if the framework is named “framework”, create the directory `packages/framework/`. Copy the template files from the [package/](./package/) directory into -the directory you created. Use this commands in the root path: +the directory you created. Use these commands in the root path: ~~~~ sh mkdir -p packages/framework @@ -259,7 +259,14 @@ Unless there are critical blockers (e.g., the package fails to build or tests do not pass), **strongly consider** proceeding immediately with the following two skills to complete the full integration: -1. **`add-to-fedify-init`**: Add the new package to the `fedify init` - command so users can select it when creating a new project. -2. **`create-example-app-with-integration`**: Create an example - application that demonstrates the integration. +1. [create-example-app-with-integration](../create-example-app-with-integration/SKILL.md): + Create an example application that demonstrates the integration. +2. [add-to-fedify-init](../add-to-fedify-init/SKILL.md): + Add the new package to the `@fedify/init` package so users can select + it when creating a new project. Also, you can test the package with + `fedify test:init` after adding it to `@fedify/init`. + +Developing the package while implementing examples allows you to catch package +errors early. However, to facilitate the review process, pull requests should +be submitted separately; therefore, please ensure your commits are logically +separated. [commit](../commit/SKILL.md) skill can help you with this. From 2401ef6f01f7ed6165eaf0c06d714f28c6dd7e56 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Sun, 12 Apr 2026 18:52:29 +0000 Subject: [PATCH 25/30] Add @fedify/nuxt to @fedify/init with GPT-5.4 --- packages/init/src/const.ts | 1 + packages/init/src/json/deps.json | 4 + .../src/templates/nuxt/nuxt.config.ts.tpl | 5 ++ .../templates/nuxt/server/federation.ts.tpl | 23 +++++ .../src/templates/nuxt/server/logging.ts.tpl | 23 +++++ .../nuxt/server/middleware/federation.ts.tpl | 24 ++++++ packages/init/src/test/port.ts | 14 ++++ packages/init/src/webframeworks/mod.ts | 2 + packages/init/src/webframeworks/nuxt.ts | 83 +++++++++++++++++++ 9 files changed, 179 insertions(+) create mode 100644 packages/init/src/templates/nuxt/nuxt.config.ts.tpl create mode 100644 packages/init/src/templates/nuxt/server/federation.ts.tpl create mode 100644 packages/init/src/templates/nuxt/server/logging.ts.tpl create mode 100644 packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl create mode 100644 packages/init/src/webframeworks/nuxt.ts diff --git a/packages/init/src/const.ts b/packages/init/src/const.ts index 363922a78..b4120a80d 100644 --- a/packages/init/src/const.ts +++ b/packages/init/src/const.ts @@ -13,6 +13,7 @@ export const WEB_FRAMEWORK = [ "elysia", "astro", "express", + "nuxt", "solidstart", ] as const; /** All supported message queue backend identifiers. */ diff --git a/packages/init/src/json/deps.json b/packages/init/src/json/deps.json index 414ded649..488d9b0f4 100644 --- a/packages/init/src/json/deps.json +++ b/packages/init/src/json/deps.json @@ -9,6 +9,7 @@ "npm:@dotenvx/dotenvx": "^1.59.1", "npm:@elysiajs/node": "^1.4.5", "npm:@hono/node-server": "^1.19.12", + "npm:@nuxt/kit": "^4.4.2", "npm:@sinclair/typebox": "^0.34.49", "npm:@solidjs/router": "^0.16.1", "npm:@solidjs/start": "^1.3.2", @@ -21,7 +22,10 @@ "npm:elysia": "^1.4.28", "npm:eslint": "^9.0.0", "npm:express": "^5.2.1", + "npm:h3": "^1.15.0", "npm:hono": "^4.12.9", + "npm:nuxi": "^3.34.0", + "npm:nuxt": "^4.4.2", "npm:openapi-types": "^12.1.3", "npm:solid-js": "^1.9.12", "npm:tsx": "^4.21.0", diff --git a/packages/init/src/templates/nuxt/nuxt.config.ts.tpl b/packages/init/src/templates/nuxt/nuxt.config.ts.tpl new file mode 100644 index 000000000..8d943e1b1 --- /dev/null +++ b/packages/init/src/templates/nuxt/nuxt.config.ts.tpl @@ -0,0 +1,5 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + ssr: false, + devtools: { enabled: true }, +}); diff --git a/packages/init/src/templates/nuxt/server/federation.ts.tpl b/packages/init/src/templates/nuxt/server/federation.ts.tpl new file mode 100644 index 000000000..fb80bd5f0 --- /dev/null +++ b/packages/init/src/templates/nuxt/server/federation.ts.tpl @@ -0,0 +1,23 @@ +import { createFederation } from "@fedify/fedify"; +import { MemoryKvStore } from "@fedify/fedify"; +import { Person } from "@fedify/vocab"; +import { getLogger } from "@logtape/logtape"; + +const logger = getLogger("nuxt"); + +const federation = createFederation({ + kv: new MemoryKvStore(), +}); + +federation.setActorDispatcher( + "/users/{identifier}", + async (ctx, identifier) => { + return new Person({ + id: ctx.getActorUri(identifier), + preferredUsername: identifier, + name: identifier, + }); + }, +); + +export default federation; diff --git a/packages/init/src/templates/nuxt/server/logging.ts.tpl b/packages/init/src/templates/nuxt/server/logging.ts.tpl new file mode 100644 index 000000000..5cd398f15 --- /dev/null +++ b/packages/init/src/templates/nuxt/server/logging.ts.tpl @@ -0,0 +1,23 @@ +import { configure, getConsoleSink } from "@logtape/logtape"; +import { AsyncLocalStorage } from "node:async_hooks"; + +await configure({ + contextLocalStorage: new AsyncLocalStorage(), + sinks: { + console: getConsoleSink(), + }, + filters: {}, + loggers: [ + { + category: "nuxt", + lowestLevel: "debug", + sinks: ["console"], + }, + { category: "fedify", lowestLevel: "info", sinks: ["console"] }, + { + category: ["logtape", "meta"], + lowestLevel: "warning", + sinks: ["console"], + }, + ], +}); diff --git a/packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl b/packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl new file mode 100644 index 000000000..36a074548 --- /dev/null +++ b/packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl @@ -0,0 +1,24 @@ +import { defineEventHandler } from "h3"; +import federation from "../federation"; + +export default defineEventHandler(async (event) => { + // Construct the full URL from headers + const proto = event.headers.get("x-forwarded-proto") || "http"; + const host = event.headers.get("host") || "localhost"; + const url = new URL(event.node.req.url || "", `${proto}://${host}`); + + const request = new Request(url, { + method: event.node.req.method, + headers: event.node.req.headers as Record, + body: ["GET", "HEAD", "DELETE"].includes(event.node.req.method) + ? undefined + : undefined, + }); + + const response = await federation.fetch(request, { + contextData: undefined, + }); + + if (response.status === 404) return; // Let Nuxt handle 404 + return response; +}); diff --git a/packages/init/src/test/port.ts b/packages/init/src/test/port.ts index ef63da9f8..f7b796daa 100644 --- a/packages/init/src/test/port.ts +++ b/packages/init/src/test/port.ts @@ -145,6 +145,20 @@ export async function replacePortInApp( return; } + if (wf === "nuxt") { + // Insert server.port into the Nuxt config (via nitro config in nuxt.config.ts) + const configPath = join(dir, "nuxt.config.ts"); + const content = await readFile(configPath, "utf8"); + await writeFile( + configPath, + content.replace( + "defineNuxtConfig({", + `defineNuxtConfig({\n nitro: { port: ${newPort} },`, + ), + ); + return; + } + printErrorMessage`Unknown framework ${wf} — cannot replace port.`; } diff --git a/packages/init/src/webframeworks/mod.ts b/packages/init/src/webframeworks/mod.ts index f5baa6855..eccde686c 100644 --- a/packages/init/src/webframeworks/mod.ts +++ b/packages/init/src/webframeworks/mod.ts @@ -6,6 +6,7 @@ import express from "./express.ts"; import hono from "./hono.ts"; import next from "./next.ts"; import nitro from "./nitro.ts"; +import nuxt from "./nuxt.ts"; import solidstart from "./solidstart.ts"; /** @@ -23,6 +24,7 @@ const webFrameworks: WebFrameworks = { hono, next, nitro, + nuxt, solidstart, } as const; diff --git a/packages/init/src/webframeworks/nuxt.ts b/packages/init/src/webframeworks/nuxt.ts new file mode 100644 index 000000000..476687bc7 --- /dev/null +++ b/packages/init/src/webframeworks/nuxt.ts @@ -0,0 +1,83 @@ +import { PACKAGE_MANAGER } from "../const.ts"; +import deps from "../json/deps.json" with { type: "json" }; +import { PACKAGE_VERSION, readTemplate } from "../lib.ts"; +import type { PackageManager, WebFrameworkDescription } from "../types.ts"; +import { defaultDenoDependencies, defaultDevDependencies } from "./const.ts"; +import { getInstruction } from "./utils.ts"; + +const nuxtDescription: WebFrameworkDescription = { + label: "Nuxt", + packageManagers: PACKAGE_MANAGER, + defaultPort: 3000, + init: async ({ packageManager: pm, testMode }) => ({ + command: Array.from(getInitCommand(pm)), + dependencies: getDeps(pm), + devDependencies: { + ...defaultDevDependencies, + "typescript": deps["npm:typescript"], + "@types/node": deps["npm:@types/node@25"], + }, + federationFile: "server/federation.ts", + loggingFile: "server/logging.ts", + env: testMode ? { HOST: "127.0.0.1" } : {} as Record, + files: { + "nuxt.config.ts": await readTemplate("nuxt/nuxt.config.ts"), + "server/federation.ts": await readTemplate("nuxt/server/federation.ts"), + "server/logging.ts": await readTemplate("nuxt/server/logging.ts"), + "server/middleware/federation.ts": await readTemplate( + "nuxt/server/middleware/federation.ts", + ), + ...(pm !== "deno" && { + "eslint.config.ts": await readTemplate("defaults/eslint.config.ts"), + }), + }, + tasks: pm !== "deno" + ? { "lint": "eslint ." } + : {} as Record, + instruction: getInstruction(pm, 3000), + }), +}; + +export default nuxtDescription; + +function* getInitCommand(pm: PackageManager) { + yield* getNuxtInitCommand(pm); + yield "init"; + yield "."; + yield "--template"; + yield "minimal"; + yield "--no-install"; + yield "--force"; + yield "--packageManager"; + yield pm; + yield "--no-gitInit"; + yield "--no-modules"; +} + +/** + * Returns the shell command array to scaffold a new Nuxt project + * in the current directory using the given package manager. + */ +const getNuxtInitCommand = (pm: PackageManager): string[] => + pm === "bun" + ? ["bunx", "nuxi"] + : pm === "deno" + ? ["deno", "-A", "npm:nuxi@latest"] + : pm === "npm" + ? ["npx", "nuxi"] + : [pm, "dlx", "nuxi"]; + +const getDeps = (pm: PackageManager): Record => + pm !== "deno" + ? { + "@fedify/nuxt": PACKAGE_VERSION, + "h3": deps["npm:h3"], + "nuxt": deps["npm:nuxt"], + } + : { + ...defaultDenoDependencies, + "@fedify/nuxt": PACKAGE_VERSION, + "npm:@nuxt/kit": deps["npm:@nuxt/kit"], + "npm:h3": deps["npm:h3"], + "npm:nuxt": deps["npm:nuxt"], + }; From 85003f0cb21d930914e67786330cfccfc33b052e Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 03:16:05 +0000 Subject: [PATCH 26/30] Add Nuxt support entry to @fedify/init changelog --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 2a2deb404..5bc246fbf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -68,8 +68,13 @@ To be released. `TypeError: Cannot read properties of undefined` from `mysql2`. [[#649], [#656] by ChanHaeng Lee] + - Supported [Nuxt] as a web framework option in `fedify init`, with + templates for federation setup, logging, and Nitro middleware. + [[#149], [#675] by ChanHaeng Lee] + [#649]: https://github.com/fedify-dev/fedify/issues/649 [#656]: https://github.com/fedify-dev/fedify/pull/656 +[#675]: https://github.com/fedify-dev/fedify/pull/675 Version 2.1.5 From b59bd93bf8d355d3b334dee0561f68a607b51e47 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 20:06:07 +0000 Subject: [PATCH 27/30] Ignore `replacePortInApp` for some web framework --- packages/init/src/test/port.ts | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/packages/init/src/test/port.ts b/packages/init/src/test/port.ts index f7b796daa..39068310b 100644 --- a/packages/init/src/test/port.ts +++ b/packages/init/src/test/port.ts @@ -100,6 +100,12 @@ const ENTRY_FILES: Partial> = { elysia: "src/index.ts", }; +const WF_READ_PORT_FROM_ENV: Set = new Set([ + "nuxt", + "nitro", + "solidstart", +]); + /** * Replace the hardcoded default port with `newPort` in the generated test * app's source files. Strategy varies by framework. @@ -110,6 +116,7 @@ export async function replacePortInApp( defaultPort: number, newPort: number, ): Promise { + if (WF_READ_PORT_FROM_ENV.has(wf)) return; if (defaultPort === newPort) return; const entryFile = ENTRY_FILES[wf]; @@ -125,12 +132,6 @@ export async function replacePortInApp( return; } - if (wf === "nitro") { - // Nitro reads PORT from .env - await appendFile(join(dir, ".env"), `\nPORT=${newPort}\n`); - return; - } - if (wf === "astro") { // Insert server.port into the Astro config const configPath = join(dir, "astro.config.ts"); @@ -145,20 +146,6 @@ export async function replacePortInApp( return; } - if (wf === "nuxt") { - // Insert server.port into the Nuxt config (via nitro config in nuxt.config.ts) - const configPath = join(dir, "nuxt.config.ts"); - const content = await readFile(configPath, "utf8"); - await writeFile( - configPath, - content.replace( - "defineNuxtConfig({", - `defineNuxtConfig({\n nitro: { port: ${newPort} },`, - ), - ); - return; - } - printErrorMessage`Unknown framework ${wf} — cannot replace port.`; } From deaaa620a17842fc2ef3f3c3cd929f17a8531ae7 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 22:09:09 +0000 Subject: [PATCH 28/30] Fix @fedify/init related with Nuxt --- .../src/templates/nuxt/nuxt.config.ts.tpl | 5 +-- .../templates/nuxt/server/federation.ts.tpl | 23 ------------ .../src/templates/nuxt/server/logging.ts.tpl | 23 ------------ .../nuxt/server/middleware/federation.ts.tpl | 24 ------------- packages/init/src/test/lookup.ts | 1 + packages/init/src/webframeworks/nuxt.ts | 35 ++++++++----------- 6 files changed, 19 insertions(+), 92 deletions(-) delete mode 100644 packages/init/src/templates/nuxt/server/federation.ts.tpl delete mode 100644 packages/init/src/templates/nuxt/server/logging.ts.tpl delete mode 100644 packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl diff --git a/packages/init/src/templates/nuxt/nuxt.config.ts.tpl b/packages/init/src/templates/nuxt/nuxt.config.ts.tpl index 8d943e1b1..989a2fce2 100644 --- a/packages/init/src/templates/nuxt/nuxt.config.ts.tpl +++ b/packages/init/src/templates/nuxt/nuxt.config.ts.tpl @@ -1,5 +1,6 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ - ssr: false, - devtools: { enabled: true }, + modules: ["@fedify/nuxt"], + fedify: { federationModule: "~~/server/federation" }, + ssr: true, }); diff --git a/packages/init/src/templates/nuxt/server/federation.ts.tpl b/packages/init/src/templates/nuxt/server/federation.ts.tpl deleted file mode 100644 index fb80bd5f0..000000000 --- a/packages/init/src/templates/nuxt/server/federation.ts.tpl +++ /dev/null @@ -1,23 +0,0 @@ -import { createFederation } from "@fedify/fedify"; -import { MemoryKvStore } from "@fedify/fedify"; -import { Person } from "@fedify/vocab"; -import { getLogger } from "@logtape/logtape"; - -const logger = getLogger("nuxt"); - -const federation = createFederation({ - kv: new MemoryKvStore(), -}); - -federation.setActorDispatcher( - "/users/{identifier}", - async (ctx, identifier) => { - return new Person({ - id: ctx.getActorUri(identifier), - preferredUsername: identifier, - name: identifier, - }); - }, -); - -export default federation; diff --git a/packages/init/src/templates/nuxt/server/logging.ts.tpl b/packages/init/src/templates/nuxt/server/logging.ts.tpl deleted file mode 100644 index 5cd398f15..000000000 --- a/packages/init/src/templates/nuxt/server/logging.ts.tpl +++ /dev/null @@ -1,23 +0,0 @@ -import { configure, getConsoleSink } from "@logtape/logtape"; -import { AsyncLocalStorage } from "node:async_hooks"; - -await configure({ - contextLocalStorage: new AsyncLocalStorage(), - sinks: { - console: getConsoleSink(), - }, - filters: {}, - loggers: [ - { - category: "nuxt", - lowestLevel: "debug", - sinks: ["console"], - }, - { category: "fedify", lowestLevel: "info", sinks: ["console"] }, - { - category: ["logtape", "meta"], - lowestLevel: "warning", - sinks: ["console"], - }, - ], -}); diff --git a/packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl b/packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl deleted file mode 100644 index 36a074548..000000000 --- a/packages/init/src/templates/nuxt/server/middleware/federation.ts.tpl +++ /dev/null @@ -1,24 +0,0 @@ -import { defineEventHandler } from "h3"; -import federation from "../federation"; - -export default defineEventHandler(async (event) => { - // Construct the full URL from headers - const proto = event.headers.get("x-forwarded-proto") || "http"; - const host = event.headers.get("host") || "localhost"; - const url = new URL(event.node.req.url || "", `${proto}://${host}`); - - const request = new Request(url, { - method: event.node.req.method, - headers: event.node.req.headers as Record, - body: ["GET", "HEAD", "DELETE"].includes(event.node.req.method) - ? undefined - : undefined, - }); - - const response = await federation.fetch(request, { - contextData: undefined, - }); - - if (response.status === 404) return; // Let Nuxt handle 404 - return response; -}); diff --git a/packages/init/src/test/lookup.ts b/packages/init/src/test/lookup.ts index e8064f530..e8ea62acb 100644 --- a/packages/init/src/test/lookup.ts +++ b/packages/init/src/test/lookup.ts @@ -31,6 +31,7 @@ const BANNED_LOOKUP_REASONS: Record = { "next,*,*,*": "Next.js doesn't support remote packages", "solidstart,deno,*,*": "Error occurred while loading submodules in Deno", "astro,deno,*,*": "Astro doesn't support remote packages in Deno", + "nuxt,deno,*,*": "Nuxt doesn't support remote packages in Deno", }; const BANNED_LOOKUP_CASES: LookupCasePattern[] = Object.keys( BANNED_LOOKUP_REASONS, diff --git a/packages/init/src/webframeworks/nuxt.ts b/packages/init/src/webframeworks/nuxt.ts index 476687bc7..2e02f4187 100644 --- a/packages/init/src/webframeworks/nuxt.ts +++ b/packages/init/src/webframeworks/nuxt.ts @@ -22,11 +22,6 @@ const nuxtDescription: WebFrameworkDescription = { env: testMode ? { HOST: "127.0.0.1" } : {} as Record, files: { "nuxt.config.ts": await readTemplate("nuxt/nuxt.config.ts"), - "server/federation.ts": await readTemplate("nuxt/server/federation.ts"), - "server/logging.ts": await readTemplate("nuxt/server/logging.ts"), - "server/middleware/federation.ts": await readTemplate( - "nuxt/server/middleware/federation.ts", - ), ...(pm !== "deno" && { "eslint.config.ts": await readTemplate("defaults/eslint.config.ts"), }), @@ -42,16 +37,21 @@ export default nuxtDescription; function* getInitCommand(pm: PackageManager) { yield* getNuxtInitCommand(pm); - yield "init"; - yield "."; - yield "--template"; - yield "minimal"; - yield "--no-install"; - yield "--force"; - yield "--packageManager"; - yield pm; - yield "--no-gitInit"; - yield "--no-modules"; + yield* [ + "init", + ".", + "--template", + "minimal", + "--no-install", + "--force", + "--packageManager", + pm, + "--no-gitInit", + "--no-modules", + "&&", + "rm", + "nuxt.config.ts", + ]; } /** @@ -71,13 +71,8 @@ const getDeps = (pm: PackageManager): Record => pm !== "deno" ? { "@fedify/nuxt": PACKAGE_VERSION, - "h3": deps["npm:h3"], - "nuxt": deps["npm:nuxt"], } : { ...defaultDenoDependencies, "@fedify/nuxt": PACKAGE_VERSION, - "npm:@nuxt/kit": deps["npm:@nuxt/kit"], - "npm:h3": deps["npm:h3"], - "npm:nuxt": deps["npm:nuxt"], }; From 7303fdbe9b9d2b34cfdf252fdf2102ef1121fa38 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Mon, 13 Apr 2026 22:22:21 +0000 Subject: [PATCH 29/30] Remove unused code --- packages/init/src/test/port.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/init/src/test/port.ts b/packages/init/src/test/port.ts index 39068310b..9b3804418 100644 --- a/packages/init/src/test/port.ts +++ b/packages/init/src/test/port.ts @@ -1,5 +1,5 @@ import { execFile } from "node:child_process"; -import { appendFile, readFile, writeFile } from "node:fs/promises"; +import { readFile, writeFile } from "node:fs/promises"; import { createConnection, createServer } from "node:net"; import { join } from "node:path"; import process from "node:process"; From bb22a016d65bf5ba361677c96bccfeb68a7f8864 Mon Sep 17 00:00:00 2001 From: ChanHaeng Lee <2chanhaeng@gmail.com> Date: Tue, 14 Apr 2026 21:30:12 +0000 Subject: [PATCH 30/30] Replace `~~/server` to `#server` --- packages/init/src/templates/nuxt/nuxt.config.ts.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/init/src/templates/nuxt/nuxt.config.ts.tpl b/packages/init/src/templates/nuxt/nuxt.config.ts.tpl index 989a2fce2..b45e801fa 100644 --- a/packages/init/src/templates/nuxt/nuxt.config.ts.tpl +++ b/packages/init/src/templates/nuxt/nuxt.config.ts.tpl @@ -1,6 +1,6 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ modules: ["@fedify/nuxt"], - fedify: { federationModule: "~~/server/federation" }, + fedify: { federationModule: "#server/federation" }, ssr: true, });