diff --git a/.gitignore b/.gitignore index 138a22d4b..35bfa1fa7 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ playwright-report/ # Skilld references (recreated by `skilld install`) .skilld + +.nuxt +.output diff --git a/docs/0.angular/schema-org/guides/get-started/0.installation.md b/docs/0.angular/schema-org/guides/get-started/0.installation.md index 7727841e5..098ccae28 100644 --- a/docs/0.angular/schema-org/guides/get-started/0.installation.md +++ b/docs/0.angular/schema-org/guides/get-started/0.installation.md @@ -69,7 +69,7 @@ useSchemaOrg([ ## Recommended: Vite Plugin -If you're using Vite, the [Vite plugin](/docs/head/guides/advanced/vite-plugin) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time. See the [Vite Plugin guide](/docs/head/guides/advanced/vite-plugin) for framework-specific setup. +If you're using Vite, the [Vite plugin](/docs/head/guides/build-plugins/overview) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time. See the [Build Plugins guide](/docs/head/guides/build-plugins/overview) for framework-specific setup. ## Optional: Auto-Imports diff --git a/docs/0.react/schema-org/guides/get-started/0.installation.md b/docs/0.react/schema-org/guides/get-started/0.installation.md index 632b1cb79..76427c0e2 100644 --- a/docs/0.react/schema-org/guides/get-started/0.installation.md +++ b/docs/0.react/schema-org/guides/get-started/0.installation.md @@ -67,14 +67,14 @@ useSchemaOrg([ ## Recommended: Vite Plugin -If you're using Vite, the [Vite plugin](/docs/head/guides/advanced/vite-plugin) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: +If you're using Vite, the [Vite plugin](/docs/head/guides/build-plugins/overview) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: ```ts import react from '@vitejs/plugin-react' -import unhead from '@unhead/react/vite' +import { Unhead } from '@unhead/react/vite' export default defineConfig({ - plugins: [react(), unhead()], + plugins: [react(), Unhead()], }) ``` diff --git a/docs/0.solid-js/schema-org/guides/get-started/0.installation.md b/docs/0.solid-js/schema-org/guides/get-started/0.installation.md index b1a128048..d4baf2508 100644 --- a/docs/0.solid-js/schema-org/guides/get-started/0.installation.md +++ b/docs/0.solid-js/schema-org/guides/get-started/0.installation.md @@ -117,14 +117,14 @@ See the [Schema.org Params](/docs/schema-org/guides/core-concepts/params) for al ## Recommended: Vite Plugin -If you're using Vite, the [Vite plugin](/docs/head/guides/advanced/vite-plugin) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: +If you're using Vite, the [Vite plugin](/docs/head/guides/build-plugins/overview) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: ```ts [vite.config.ts] import solid from 'vite-plugin-solid' -import unhead from '@unhead/solid-js/vite' +import { Unhead } from '@unhead/solid-js/vite' export default defineConfig({ - plugins: [unhead(), solid()], + plugins: [Unhead(), solid()], }) ``` diff --git a/docs/0.svelte/schema-org/guides/get-started/0.installation.md b/docs/0.svelte/schema-org/guides/get-started/0.installation.md index 1f8caed03..44f4ed5d0 100644 --- a/docs/0.svelte/schema-org/guides/get-started/0.installation.md +++ b/docs/0.svelte/schema-org/guides/get-started/0.installation.md @@ -67,14 +67,14 @@ useSchemaOrg([ ## Recommended: Vite Plugin -If you're using Vite, the [Vite plugin](/docs/head/guides/advanced/vite-plugin) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: +If you're using Vite, the [Vite plugin](/docs/head/guides/build-plugins/overview) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: ```ts import { svelte } from '@sveltejs/vite-plugin-svelte' -import unhead from '@unhead/svelte/vite' +import { Unhead } from '@unhead/svelte/vite' export default defineConfig({ - plugins: [unhead(), svelte()], + plugins: [Unhead(), svelte()], }) ``` diff --git a/docs/0.typescript/head/guides/0.get-started/1.installation.md b/docs/0.typescript/head/guides/0.get-started/1.installation.md index 23f035366..35994d69d 100644 --- a/docs/0.typescript/head/guides/0.get-started/1.installation.md +++ b/docs/0.typescript/head/guides/0.get-started/1.installation.md @@ -160,4 +160,4 @@ Your app is now setup for head management, congrats! Try next: 1. Learn more about app context in the [Wrapping Composables](/docs/typescript/head/guides/core-concepts/wrapping-composables) guide -2. Consider using the [Vite plugin](/docs/head/guides/advanced/vite-plugin) +2. Consider using the [Vite plugin](/docs/head/guides/build-plugins/overview) diff --git a/docs/0.typescript/schema-org/guides/get-started/0.installation.md b/docs/0.typescript/schema-org/guides/get-started/0.installation.md index 9fd9206b1..2f7363acb 100644 --- a/docs/0.typescript/schema-org/guides/get-started/0.installation.md +++ b/docs/0.typescript/schema-org/guides/get-started/0.installation.md @@ -67,7 +67,7 @@ useSchemaOrg([ ## Recommended: Vite Plugin -If you're using Vite, the [Vite plugin](/docs/head/guides/advanced/vite-plugin) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time. See the [Vite Plugin guide](/docs/head/guides/advanced/vite-plugin) for framework-specific setup. +If you're using Vite, the [Vite plugin](/docs/head/guides/build-plugins/overview) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time. See the [Build Plugins guide](/docs/head/guides/build-plugins/overview) for framework-specific setup. ## Optional: Auto-Imports diff --git a/docs/0.vue/schema-org/guides/0.get-started/0.installation.md b/docs/0.vue/schema-org/guides/0.get-started/0.installation.md index b889cf52d..fd89a8f9d 100644 --- a/docs/0.vue/schema-org/guides/0.get-started/0.installation.md +++ b/docs/0.vue/schema-org/guides/0.get-started/0.installation.md @@ -71,14 +71,14 @@ useSchemaOrg([ ## Recommended: Vite Plugin -If you're using Vite, the [Vite plugin](/docs/head/guides/advanced/vite-plugin) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: +If you're using Vite, the [Vite plugin](/docs/head/guides/build-plugins/overview) optimizes your production bundle by tree-shaking server-only code and transforming head composables at build time: ```ts import vue from '@vitejs/plugin-vue' -import unhead from '@unhead/vue/vite' +import { Unhead } from '@unhead/vue/vite' export default defineConfig({ - plugins: [vue(), unhead()], + plugins: [vue(), Unhead()], }) ``` diff --git a/docs/6.migration-guide/.navigation.yml b/docs/6.migration-guide/.navigation.yml new file mode 100644 index 000000000..e69de29bb diff --git a/docs/6.migration-guide/1.v3.md b/docs/6.migration-guide/1.v3.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/content/6.migration-guide/2.v2.md b/docs/6.migration-guide/2.v2.md similarity index 97% rename from docs/content/6.migration-guide/2.v2.md rename to docs/6.migration-guide/2.v2.md index 07d5eb3ad..8c5e5f247 100644 --- a/docs/content/6.migration-guide/2.v2.md +++ b/docs/6.migration-guide/2.v2.md @@ -74,7 +74,7 @@ useHead(unheadInstance, { For legacy support with Vue Meta we allowed end users to provide deprecated properties: `vmid`, `hid`, `children` and `body`. -You must update these properties to the appropriate replacement or remove them. See the [v3 migration guide](/docs/content/migration-guide/v3#legacy-property-names) for the replacements. +You must update these properties to the appropriate replacement or remove them. See the [v3 migration guide](/docs/migration-guide/v3#legacy-property-names) for the replacements. --- diff --git a/docs/content/6.migration-guide/1.v3.md b/docs/content/6.migration-guide/1.v3.md deleted file mode 100644 index 1eaff922e..000000000 --- a/docs/content/6.migration-guide/1.v3.md +++ /dev/null @@ -1,428 +0,0 @@ ---- -title: "Migrate to v3" -description: "Migrate from Unhead v2 to v3. Covers all breaking changes, removed APIs, and their replacements." -navigation: - title: "v3" ---- - -Unhead v3 removes all deprecated APIs and focuses on performance improvements. This guide covers the breaking changes. - -## Automated Migration Checks - -Add `ValidatePlugin` during your upgrade to automatically detect v2 patterns and get actionable warnings: - -```ts -import { ValidatePlugin } from 'unhead/plugins' - -const head = createHead({ - plugins: [ - ValidatePlugin() // Detects deprecated props, missing plugins, and more - ] -}) -``` - -The plugin will warn you about: -- **Missing `TemplateParamsPlugin`** : template params like `%siteName` are now opt-in and will appear literally without the plugin -- **Missing `AliasSortingPlugin`** : `before:`/`after:` tag priorities are now opt-in and will be silently ignored without the plugin -- **Deprecated property names** : `children`, `hid`, `vmid`, `body: true` are no longer auto-converted -- **Removed `mode` option** : `{ mode: 'server' }` on `head.push()` is silently ignored - -All rules use ESLint-style config and can be individually disabled: - -```ts -ValidatePlugin({ - rules: { - 'missing-template-params-plugin': 'off', - } -}) -``` - -Remove `ValidatePlugin` once your migration is complete, or keep it for ongoing validation. - ---- - -## Legacy Property Names - -🚦 Impact Level: **High** - -The `DeprecationsPlugin` that automatically converted legacy property names has been removed. You must update your head entries to use the current property names. - -### `children` → `innerHTML` - -```diff -useHead({ - script: [{ -- children: 'console.log("hello")', -+ innerHTML: 'console.log("hello")', - }] -}) -``` - -### `hid` / `vmid` → `key` - -```diff -useHead({ - meta: [{ -- hid: 'description', -+ key: 'description', - name: 'description', - content: 'My description' - }] -}) -``` - -```diff -useHead({ - meta: [{ -- vmid: 'og:title', -+ key: 'og:title', - property: 'og:title', - content: 'My Title' - }] -}) -``` - -### `body: true` → `tagPosition: 'bodyClose'` - -```diff -useHead({ - script: [{ - src: '/script.js', -- body: true, -+ tagPosition: 'bodyClose', - }] -}) -``` - -### Quick Reference - -| Old Property | New Property | -|-------------|--------------| -| `children` | `innerHTML` | -| `hid` | `key` | -| `vmid` | `key` | -| `body: true` | `tagPosition: 'bodyClose'` | - ---- - -## Schema.org Plugin - -🚦 Impact Level: **High** - -The `PluginSchemaOrg` and `SchemaOrgUnheadPlugin` exports have been removed. Use `UnheadSchemaOrg` instead. - -```diff -- import { PluginSchemaOrg } from '@unhead/schema-org' -+ import { UnheadSchemaOrg } from '@unhead/schema-org' - -const head = createHead({ - plugins: [ -- PluginSchemaOrg() -+ UnheadSchemaOrg() - ] -}) -``` - -For Vue users: - -```diff -- import { PluginSchemaOrg } from '@unhead/schema-org/vue' -+ import { UnheadSchemaOrg } from '@unhead/schema-org/vue' -``` - -### Schema.org Config Options - -The following config options have been removed: - -| Removed Option | Replacement | -|---------------|-------------| -| `canonicalHost` | `host` | -| `canonicalUrl` | `path` + `host` | -| `position` | Use `tagPosition` on individual schema entries | -| `defaultLanguage` | Use `inLanguage` on schema nodes | -| `defaultCurrency` | Use `priceCurrency` on schema nodes | - -```diff -UnheadSchemaOrg({ -- canonicalHost: 'https://example.com', -- canonicalUrl: 'https://example.com/page', -+ host: 'https://example.com', -+ path: '/page', -}) -``` - ---- - -## Server Composables Removed - -🚦 Impact Level: **Medium-High** - -The `useServerHead`, `useServerHeadSafe`, and `useServerSeoMeta` composables have been removed. Use the standard composables instead. - -```diff -- import { useServerHead, useServerSeoMeta } from 'unhead' -+ import { useHead, useSeoMeta } from 'unhead' - -- useServerHead({ title: 'My Page' }) -+ useHead({ title: 'My Page' }) - -- useServerSeoMeta({ description: 'My description' }) -+ useSeoMeta({ description: 'My description' }) -``` - -If you need server-only head management, use conditional logic: - -```ts -if (import.meta.server) { - useHead({ title: 'Server Only' }) -} -``` - ---- - -## Core API Changes - -🚦 Impact Level: **Medium** - -### `createHeadCore` → `createUnhead` - -```diff -- import { createHeadCore } from 'unhead' -+ import { createUnhead } from 'unhead' - -- const head = createHeadCore() -+ const head = createUnhead() -``` - -### `headEntries()` → `entries` Map - -```diff -- const entries = head.headEntries() -+ const entries = [...head.entries.values()] -``` - -### `mode` Option Removed - -The `mode` option on head entries has been removed. Runtime mode detection is no longer supported. - -```diff -head.push({ - title: 'My Page', -- }, { mode: 'server' }) -+ }) -``` - -Use the appropriate `createHead` function instead: - -```ts -// Client-side -import { createHead } from 'unhead/client' - -// Server-side -import { createHead } from 'unhead/server' -``` - ---- - -## Vue Legacy Exports - -🚦 Impact Level: **Medium** - -### `/legacy` Export Path Deprecated - -The `@unhead/vue/legacy` import still works but emits a runtime deprecation warning. Update to the explicit client or server import: - -```diff -- import { createHead } from '@unhead/vue/legacy' -+ import { createHead } from '@unhead/vue/client' -// or for SSR -+ import { createHead } from '@unhead/vue/server' -``` - -### `createHeadCore` Removed - -```diff -- import { createHeadCore } from '@unhead/vue' -+ import { createHead } from '@unhead/vue/server' -// or for client -+ import { createHead } from '@unhead/vue/client' -``` - ---- - -## Server Utilities - -🚦 Impact Level: **Low** - -### `extractUnheadInputFromHtml` → `parseHtmlForUnheadExtraction` - -The function has been moved from `unhead/server` to `unhead/parser`. - -```diff -- import { extractUnheadInputFromHtml } from 'unhead/server' -+ import { parseHtmlForUnheadExtraction } from 'unhead/parser' - -- const { input } = extractUnheadInputFromHtml(html) -+ const { input } = parseHtmlForUnheadExtraction(html) -``` - ---- - -## Hooks - -🚦 Impact Level: **Low** - -The following hooks have been removed: - -- `init` : No longer needed -- `dom:renderTag` : DOM rendering is now synchronous -- `dom:rendered` : Use the `onRendered` option on `useHead()` instead - -The `dom:beforeRender` hook is now synchronous and `renderDOMHead` no longer returns a Promise: - -```diff -- await renderDOMHead(head, { document }) -+ renderDOMHead(head, { document }) -``` - -The SSR hooks (`ssr:beforeRender`, `ssr:render`, `ssr:rendered`) are now synchronous and `renderSSRHead` no longer returns a Promise: - -```diff -- const head = await renderSSRHead(head) -+ const head = renderSSRHead(head) -``` - ---- - -## Type Changes - -🚦 Impact Level: **Low** - -| Removed Type | Replacement | -|-------------|-------------| -| `Head` | `HeadTag` or specific tag types | -| `ResolvedHead` | `ResolvedHeadTag` | -| `MergeHead` | Use generics directly | -| `MetaFlatInput` | `MetaFlat` | -| `ResolvedMetaFlat` | `MetaFlat` | -| `RuntimeMode` | Removed (no replacement needed) | - -```diff -- import type { Head, MetaFlatInput, RuntimeMode } from 'unhead' -+ import type { HeadTag, MetaFlat } from 'unhead' -``` - ---- - -## Strict Type Narrowing for Link, Script, and Meta - -🚦 Impact Level: **Medium** - -The `Link` and `Script` types are now strict discriminated unions. Known `rel` and `type` values enforce per-tag required properties at the type level. `GenericLink` and `GenericScript` are still exported for custom values. - -### Link Tags - -Known `rel` values now enforce their required properties. For example, preloading a font requires `crossorigin`: - -```diff -useHead({ - link: [{ - rel: 'preload', - as: 'font', - href: '/font.woff2', -+ crossorigin: 'anonymous', // now required for font preloads - }] -}) -``` - -For custom `rel` values not in the known set, use `satisfies GenericLink`: - -```ts -import type { GenericLink } from 'unhead/types' - -useHead({ - link: [ - { rel: 'me', href: 'https://mastodon.social/@me' } satisfies GenericLink, - ] -}) -``` - -### Script Tags - -Inline scripts must have `textContent` or `innerHTML` and cannot include `src`, `async`, or `defer`. For custom `type` values, use `satisfies GenericScript`: - -```ts -import type { GenericScript } from 'unhead/types' - -useHead({ - script: [ - { type: 'text/plain', textContent: '...' } satisfies GenericScript, - ] -}) -``` - -### Meta Content Required - -Meta `content` is now required on name, property, and http-equiv meta tags. Use `null` explicitly to remove a meta tag: - -```diff -- useHead({ meta: [{ name: 'description' }] }) // no longer valid -+ useHead({ meta: [{ name: 'description', content: null }] }) // removes the tag -``` - -### String Variables - -When `rel` or `type` comes from a variable typed as `string`, TypeScript cannot narrow the union. Use `as const` or `satisfies`: - -```ts -import type { GenericLink } from 'unhead/types' - -const rel = getRelFromConfig() // string, not a literal -useHead({ - link: [{ rel, href: '/path' } satisfies GenericLink] -}) - -// or use as const for literals -const link = { rel: 'canonical' as const, href: '/path' } -useHead({ link: [link] }) -``` - ---- - -## Other Removed APIs - -- `resolveScriptKey` : Internal utility, no longer exported -- `DeprecationsPlugin` : Update property names directly instead -- `resolveUnrefHeadInput` (Vue) : Reactive resolution now happens automatically -- `setHeadInjectionHandler` (Vue) : Head injection is handled automatically - ---- - -## Quick Reference: Import Changes - -```diff -// Legacy properties - update property names directly, no plugin needed -- import { DeprecationsPlugin } from 'unhead/plugins' - -// Schema.org -- import { PluginSchemaOrg, SchemaOrgUnheadPlugin } from '@unhead/schema-org' -+ import { UnheadSchemaOrg } from '@unhead/schema-org' - -// Server composables -- import { useServerHead, useServerHeadSafe, useServerSeoMeta } from 'unhead' -+ import { useHead, useHeadSafe, useSeoMeta } from 'unhead' - -// Core -- import { createHeadCore } from 'unhead' -+ import { createUnhead } from 'unhead' - -// Server utilities -- import { extractUnheadInputFromHtml } from 'unhead/server' -+ import { parseHtmlForUnheadExtraction } from 'unhead/parser' - -// Vue -- import { createHeadCore, resolveUnrefHeadInput, setHeadInjectionHandler } from '@unhead/vue' -- import { ... } from '@unhead/vue/legacy' -+ import { createHead } from '@unhead/vue/client' -+ import { createHead } from '@unhead/vue/server' -``` diff --git a/docs/content/7.releases/1.v3.md b/docs/content/7.releases/1.v3.md deleted file mode 100644 index 9edd6f8b3..000000000 --- a/docs/content/7.releases/1.v3.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: "Unhead v3" -description: "Unhead v3 release notes: streaming SSR, synchronous rendering, and significant performance improvements." -navigation: - title: "v3" ---- - -Unhead v3 rebuilds the rendering engine from the ground up. The motivation: **streaming SSR**. Frameworks like Nuxt, SolidStart, and SvelteKit stream HTML to the browser as data loads, but head tags were still stuck in a request/response model, resolved once and never updated. To fix this properly, we had to make rendering synchronous, pluggable, and side-effect free. The result is a faster, smaller, and more capable head manager. - -## Highlights - -### Streaming SSR - -Head tags now update dynamically as suspense boundaries resolve during streaming. As each chunk streams to the browser, new ``, `<meta>`, and `<link>` tags are pushed to a client-side queue and applied to the DOM. No waiting for the full page to load. - -```ts -// entry-server.ts -import { createStreamableHead } from '@unhead/vue/stream/server' - -const { head, wrapStream } = createStreamableHead() -app.use(head) - -// wraps the Vue stream, injecting head updates as chunks resolve -return wrapStream(renderToWebStream(app), template) -``` - -```ts -// entry-client.ts -import { createStreamableHead } from '@unhead/vue/stream/client' - -const head = createStreamableHead() -app.use(head) -``` - -Under the hood: a queue stub (`window.__unhead__`) collects head entries as they stream in before the main JS bundle loads. Once the client head instance initializes, it processes the queue and takes over. No entries are ever lost regardless of timing. - -Streaming is supported for Vue, React, Solid.js, Svelte, and vanilla TypeScript. See [PR #537](https://github.com/unjs/unhead/pull/537). - -### Synchronous Rendering - -Both `renderDOMHead()` and `renderSSRHead()` are now **fully synchronous**. The async tag resolution pipeline has been replaced with a composable `resolveTags()` that resolves in a single pass, eliminating race conditions, unnecessary microtask scheduling, and `await` overhead. - -```diff -- await renderDOMHead(head, { document }) -+ renderDOMHead(head, { document }) -``` - -The head instance now exposes a pluggable `render()` function, so framework integrations can swap in their own rendering pipeline (DOM, SSR, or streaming) without modifying core. - -See PRs [#619](https://github.com/unjs/unhead/pull/619), [#622](https://github.com/unjs/unhead/pull/622), [#628](https://github.com/unjs/unhead/pull/628), [#629](https://github.com/unjs/unhead/pull/629), [#630](https://github.com/unjs/unhead/pull/630). - -### `useHead()` Type Narrowing - -`useHead()` now narrows types based on input. Link, script, and meta tags resolve to specific subtypes instead of a generic union, so you get precise autocomplete and type errors when something is wrong. - -```ts -useHead({ - link: [ - // Narrows to StylesheetLink: requires href, offers media, integrity, etc. - { rel: 'stylesheet', href: '/styles.css' }, - // Narrows to PreloadLink: requires as attribute - { rel: 'preload', as: 'font', href: '/font.woff2', crossorigin: 'anonymous' }, - ], - script: [ - // Narrows to ModuleScript - { src: '/app.mjs', type: 'module' }, - // Narrows to JsonLdScript - { type: 'application/ld+json', innerHTML: '{}' }, - ], -}) -``` - -See [PR #627](https://github.com/unjs/unhead/pull/627), [#665](https://github.com/unjs/unhead/pull/665). - -### ValidatePlugin - -New optional `ValidatePlugin` that inspects resolved head output and warns about common mistakes: missing titles, duplicate meta tags, contradictory preload priorities, and more. Fully tree-shakeable. Rules use ESLint-style flat config: - -```ts -import { ValidatePlugin } from 'unhead/plugins' - -createHead({ - plugins: [ - ValidatePlugin({ - rules: { - 'missing-description': 'off', - } - }) - ] -}) -``` - -See PRs [#690](https://github.com/unjs/unhead/pull/690), [#691](https://github.com/unjs/unhead/pull/691). - -### Canonical Plugin - -New built-in `CanonicalPlugin` that auto-generates `<link rel="canonical">` tags and resolves relative URLs to absolute in `og:image`, `twitter:image`, and `og:url`. Essential for SEO and social sharing. - -```ts -import { CanonicalPlugin } from 'unhead/plugins' - -createHead({ - plugins: [ - CanonicalPlugin({ canonicalHost: 'https://mysite.com' }) - ] -}) -``` - -See [PR #492](https://github.com/unjs/unhead/pull/492). - -## Performance - -| Build | v3 size | v2 size | Delta gz | -|-----------|---------|---------|---------------| -| client | 10254 | 11513 | **-534 (-11.2%)** | -| server | 9894 | 10361 | -194 (-4.6%) | -| vueClient | 11323 | 12567 | -533 (-10.2%) | -| vueServer | 10849 | 11312 | -191 (-4.1%) | - -| Benchmark | v2 mean | v3 mean | Delta | -|-------------|----------|----------|------------| -| @unhead/vue | 0.106ms | 0.072ms | **32% faster** | -| core | 0.088ms | 0.073ms | **17% faster** | - -Key optimizations: - -- Client-only CAPO sorting ([#626](https://github.com/unjs/unhead/pull/626)) -- Pure, tree-shakeable core with no side effects ([#632](https://github.com/unjs/unhead/pull/632)) -- Minified internal DOM state properties ([#635](https://github.com/unjs/unhead/pull/635)) -- Migrated unplugins from `estree-walker`/`acorn-loose` to `oxc-walker` ([#663](https://github.com/unjs/unhead/pull/663)) -- Walker-based `transformHtmlTemplate` ([#581](https://github.com/unjs/unhead/pull/581)) -- `TemplateParamsPlugin` and `AliasSortingPlugin` made opt-in for smaller bundles ([#493](https://github.com/unjs/unhead/pull/493), [#494](https://github.com/unjs/unhead/pull/494)) - -## Schema.org - -- **12 new nodes**: `Dataset`, `MusicAlbum`, `MusicGroup`, `MusicPlaylist`, `MusicRecording`, `PodcastEpisode`, `PodcastSeason`, `PodcastSeries`, `Service`, `TVEpisode`, `TVSeason`, `TVSeries` ([#612](https://github.com/unjs/unhead/pull/612)) -- **Graph resolution rewrite** for correctness and performance ([#616](https://github.com/unjs/unhead/pull/616)) -- **Removed `ohash` and `defu` dependencies** ([#605](https://github.com/unjs/unhead/pull/605)) - -## Other Changes - -- `useHeadSafe()` now whitelists CSS styles ([#491](https://github.com/unjs/unhead/pull/491)) -- Support for `blocking` attribute on scripts and stylesheets ([#489](https://github.com/unjs/unhead/pull/489)) -- `useScript()` consolidated back into core, legacy support dropped ([#498](https://github.com/unjs/unhead/pull/498)) -- `fediverse:creator` meta tag support ([#703](https://github.com/unjs/unhead/pull/703)) -- Switched from `hookable` to lighter `HookableCore` with sync-only hooks ([#631](https://github.com/unjs/unhead/pull/631)) -- Deprecation warnings added to aliased packages (`@unhead/schema`, `@unhead/shared`) ([#678](https://github.com/unjs/unhead/pull/678)) -- `templateParams` extensible via module augmentation ([#679](https://github.com/unjs/unhead/pull/679)) -- Respect user-provided `twitter:card` in `InferSeoMetaPlugin` ([#681](https://github.com/unjs/unhead/pull/681)) -- Enforce `as` attribute for preload links ([#683](https://github.com/unjs/unhead/pull/683)) - -## Bug Fixes - -- Hydration race condition with deferred patches ([#634](https://github.com/unjs/unhead/pull/634)) -- Process pending patches even when dirty is false ([#636](https://github.com/unjs/unhead/pull/636)) -- Deduplicate matching tags inside same render cycle ([#668](https://github.com/unjs/unhead/pull/668)) -- Dedupe `<link rel="alternate">` correctly ([#655](https://github.com/unjs/unhead/pull/655), [#656](https://github.com/unjs/unhead/pull/656), [#658](https://github.com/unjs/unhead/pull/658)) -- React: dispose head entries on unmount in StrictMode ([#664](https://github.com/unjs/unhead/pull/664)) -- React: force invalidation on entry disposal ([#559](https://github.com/unjs/unhead/pull/559)) -- Vue: support computed getter trigger ([#638](https://github.com/unjs/unhead/pull/638)) -- Vue: expose `@unhead/vue/stream/iife` with correct types ([#707](https://github.com/unjs/unhead/pull/707)) -- Scripts: prevent scope disposal from aborting unrelated trigger ([#660](https://github.com/unjs/unhead/pull/660)) -- Schema.org: allow `null` to opt out of default values ([#680](https://github.com/unjs/unhead/pull/680)) - -## Breaking Changes - -For the full migration guide, see [Migrate to v3](/docs/content/migration-guide/v3). - -### Summary - -| Old | New | -|-----|-----| -| `children` | `innerHTML` | -| `hid` / `vmid` | `key` | -| `body: true` | `tagPosition: 'bodyClose'` | -| `useServerHead` / `useServerSeoMeta` | `useHead` / `useSeoMeta` | -| `createHeadCore` | `createUnhead` | -| `@unhead/vue/legacy` | `@unhead/vue/client` or `@unhead/vue/server` | -| `mode` option on entries | Use client/server `createHead` imports | - -- `renderDOMHead()` and `renderSSRHead()` are now synchronous (remove `await`) -- CJS removed, all packages are ESM-only -- `TemplateParamsPlugin` and `AliasSortingPlugin` are no longer included by default -- `init`, `dom:renderTag`, `dom:rendered` hooks removed; `dom:beforeRender` is now synchronous diff --git a/docs/content/7.releases/2.v2.md b/docs/content/7.releases/2.v2.md deleted file mode 100644 index 6af264fff..000000000 --- a/docs/content/7.releases/2.v2.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: "Unhead v2: The full-stack <head> package for any framework." -description: "Unhead v2 is here! With first-class support for all major frameworks, a complete core rewrite, and a focus on performance, Unhead is the ultimate <head> manager." -publishedAt: "2024-03-24" -updatedAt: "2024-03-24" -navigation: - title: "v2" ---- - -I'm thrilled to announce the release of Unhead v2, a major milestone in Unhead becoming _the_ most performant and feature-complete head manager for _all reactive JavaScript frameworks_. - -## TL;DR - -- **Multi-framework Support**: Added support for [React](https://react.dev), [Svelte](https://svelte.dev), Solid.js, and [Angular](https://angular.dev) -- **Performance**: 51% faster SSR, 64% faster page switching, 21% smaller bundle size -- **Capo.js Integration**: Automatic tag sorting for optimal page loading -- **Leaner Package**: 14kb reduction in node_modules, single dependency -- **New Docs**: 👋 - -## State of head management - -All JavaScript frameworks will run into the same challenge: how can they effectively manage tags and attributes outside the DOM entry -in a server-side rendered world? - -```html -<!DOCTYPE html> -<html> - <head> - <!-- JavaScript frameworks need to manage tags here server & client-side --> - </head> - <body> <!-- And probably body attributes --> - <!-- But also this --> - <div id="your-javascript-framework"></div> - <!-- and this... --> - <script src="/your-javascript-framework.js"></script> - </body> -</html> -``` - -As each framework has its unique constraints, they have all come up with their own solutions to this problem. Most of them converged -on a head provider pattern, where the framework allows you to wrap tags in a specific component (or provider) and they figure out -the rest. - -```vue [ComponentFoo] -<HeadProvider> - <title>My Page - - - -``` - -Seen as: ``{lang="html"}, ``{lang="html"}, ``{lang="html"} or more granular tags such as ``{lang="html"}, `<Meta>`{lang="html"}, `<Link>`{lang="html"}, etc. - -### Ecosystem - -Traditionally frameworks like React, [Vue](https://vuejs.org) and Angular have left it up to their respective ecosystems to solve this problem. Vue had [Vue Meta](https://vue-meta.nuxtjs.org/) and [VueUse Head](https://github.com/vueuse/head) and -React had and continues to have [React Helmet](https://github.com/nfl/react-helmet). - -We see some frameworks shifting towards providing simple support as part of their core, such as in [React v19](https://react.dev/blog/2024/12/05/react-19) -and in [Angular v14](https://angular.io/guide/releases#angular-v14-0-0). - -These solutions tend to be reliant on the component pattern, which is limited in its capabilities. - -## A quick recap on Unhead - -Unhead started out humbly 5 years ago as [`@vueuse/head`](https://github.com/vueuse/head). Since then it's joined -[UnJS](https://unjs.io/) as a high-quality, single-purpose package that works anywhere and is downloaded over ~100k times a day. - -:UnheadDownloads{class="my-10 lg:-mx-20 lg:w-[125%] rounded overflow-hidden"} - -Built from bullet-proof primitives such as `useHead()`{lang="ts"} and `useSeoMeta()`{lang="ts"}, Unhead is building out the ecosystem -of head management which is being realized through the v2 release. - -## v2 Release - -For the full changelog of changes please reference the [v2 roadmap](https://github.com/unjs/unhead/issues/395) GitHub Issue. - -### New Framework Supported - -Unhead started as a Vue-focused solution, but with v2, we've expanded to support all major frontend frameworks with -deep reactivity integrations. - -:FrameworkSelectorMinimal{ignore-redirect} - -```ts -import { useHead } from '@unhead/dynamic-import' - -useHead({ - title: '👋 @FRAMEWORK_NAME@' -}) -``` - -- **Vue** : `@unhead/vue`: [Installation](/docs/vue/head/guides/get-started/installation) & [Reactivity Guide](/docs/vue/head/guides/core-concepts/reactivity-and-context) -- **React** : `@unhead/react`: [Installation](/docs/react/head/guides/get-started/installation) & [Reactivity Guide](/docs/react/head/guides/core-concepts/reactivity) -- **Svelte** : `@unhead/svelte`: [Installation](/docs/svelte/head/guides/get-started/installation) & [Reactivity Guide](/docs/svelte/head/guides/core-concepts/reactivity) -- **Solid.js** : `@unhead/solid-js`: [Installation](/docs/solid-js/head/guides/get-started/installation) & [Reactivity Guide](/docs/solid-js/head/guides/core-concepts/reactivity) -- **Angular** : `@unhead/angular`: [Installation](/docs/angular/head/guides/get-started/installation) & [Reactivity Guide](/docs/angular/head/guides/core-concepts/reactivity) - -Each framework integration provides the same powerful features with idiomatic patterns for that ecosystem. - -### ⚡ Runtime Performance Improvements - -Every tenth of a millisecond counts performance. In this release, much of the core has been rewritten to improve performance and tree-shakability. - -**Rewritten Core**: With the [core being rewritten](https://github.com/unjs/unhead/pull/488), optimizations were done -to improve the fast-path times. - -- ✅ SSR **+51% Faster** 0.34ms ⇢ 0.20ms ([Benchmark: Medium Site](https://github.com/unjs/unhead/blob/main/bench/ssr-harlanzw-com-e2e.bench.ts)) - -**Faster INP**: Tag resolves are now [cached between DOM renders](https://github.com/unjs/unhead/pull/504). For large sites, this _can_ lead to lower INP when switching between pages. - -- ✅ CSR Page Switching **+64% Faster** 0.43ms ⇢ 0.22ms ([Benchmark: 10 Page Changes x useHead()](https://github.com/unjs/unhead/blob/main/packages/unhead/test/bench/ssr-perf.bench.ts)) - -**Leaner Core**: Through aggressive code optimizations and moving some features to opt-in, we see an improvement in the bundle size. - -- ✅ Client: **21% smaller** - 13.6 kB (gz 5.3 kB) ⇢ 10.7 kB (gz 4.5 kB) ([Minimal: useHead() + createUnhead()](https://github.com/nuxt/nuxt/pull/31169/files#diff-04a7585c5d6ddd5cf80321c69bc6e07cd85e9e86ae35fa5f9c036651f137c312R26) ) -- ✅ Server: **22% smaller** - 10.3 kB (gz 4.1 kB) ⇢ 8 kB (gz 3.4 kB) ([Minimal: useHead() + createUnhead()](https://github.com/nuxt/nuxt/pull/31169/files#diff-04a7585c5d6ddd5cf80321c69bc6e07cd85e9e86ae35fa5f9c036651f137c312R26)) - -Benchmarks do not reflect real-world performance. - -:UnheadTwoGraphs - -### Capo.js Sorting - -Unhead v2 now applies capo.js sorting to all tags by default which provides optimizations to improve the -performance of your site for end users. This sorting follows best practices for resource loading order in the document head. - -:CapoExample - -### 📦 Bundle Improvements - -**Single dependency** Unhead now relies on a single dependency, [hookable](https://github.com/unjs/hookable), used for pluggability. - -- ✅ **5 fewer** dependencies - -**ESM & dropped workspace packages** Only ESM is now published, workspace packages are deprecated for subpath exports. - -- ✅ **14kb reduction** in `node_modules` - -## 🔄 Upgrading to v2 - -The migration path is straightforward; Unhead provides a `legacy` subpath build to ease the transition. - -See the [Migrate to v2](/docs/content/migration-guide/v2) guide. - -## 🔮 The Future - -Now that Unhead has a battle-tested core and supports all major frameworks, we can start to build out the ecosystem of head management. Here's what's on our roadmap: - -### Short Term: Improved Tag Validation - -For several tags, the spec requires certain attributes when you use another attribute. For example, the `<link>`{lang="html"} tag -only requires an `as` attribute when you use `rel="preload"`{lang="html"}. - -The type system does not enforce this to avoid potential type juggling; however, it can lead to mistakes. - -To catch broken tags we have several options: -- Improve the type system for optionally required attributes -- Implement [ESLint](https://eslint.org) rules to catch anything the types haven't -- Use a runtime plugin in development to validate resolved tags - -### Medium Term: Third-Party Scripts - -While Unhead already has a lower-level way to work with third-party scripts `useScript()`{lang="ts"}, we can make them easier and more secure -to use by introducing higher-level composables, such as `useGoogleAnalytics()`{lang="ts"}, `useFacebookPixel()`{lang="ts"}, etc. - -These would hook into framework lifecycles to ensure optimal performance and security while providing improved developer experience. - -```ts -const { proxy } = useGoogleAnalytics({ - id: 'UA-123456789', -}) - -proxy.gtag('page_view', { - page_path: '/my-page', -}) -``` - -### Exploratory: OG Image - -Turn HTML templates into OG images with a simple composable. - -```ts -useOgImage('<div class="bg-red-500">my image :)</div>') -``` - -## 🙏 Thank You - -This release wouldn't be possible without our amazing community. Special thanks to all contributors who helped with code, testing, and documentation. diff --git a/docs/head/1.guides/0.get-started/0.overview.md b/docs/head/1.guides/0.get-started/0.overview.md index 4586955dc..2696652bb 100644 --- a/docs/head/1.guides/0.get-started/0.overview.md +++ b/docs/head/1.guides/0.get-started/0.overview.md @@ -51,13 +51,11 @@ Master the fundamental concepts behind Unhead's powerful head management. Take your head management to the next level with these advanced capabilities. -::div{class="grid grid-cols-3 gap-5"} - -:UPageCard{title="Extending Unhead" description="Create custom plugins and extend core functionality" to="/docs/head/guides/advanced/extending-unhead" icon="i-heroicons-cog-8-tooth" spotlight spotlight-color="warning"} +::div{class="grid grid-cols-2 gap-5"} -:UPageCard{title="Bundle Optimizations" description="Optimize your bundle size when using Unhead" to="/docs/head/guides/advanced/client-only-tags" icon="i-heroicons-computer-desktop" spotlight spotlight-color="warning"} +:UPageCard{title="Plugins API" description="Create custom plugins and extend core functionality" to="/docs/head/api/plugins" icon="i-heroicons-cog-8-tooth" spotlight spotlight-color="warning"} -:UPageCard{title="Build Plugins" description="Leverage build tools to optimize Unhead usage" to="/docs/head/guides/advanced/vite-plugin" icon="i-heroicons-puzzle-piece" spotlight spotlight-color="warning"} +:UPageCard{title="Build Plugins" description="Leverage build tools to optimize Unhead usage" to="/docs/head/guides/build-plugins/overview" icon="i-heroicons-puzzle-piece" spotlight spotlight-color="warning"} :: diff --git a/docs/head/1.guides/1.core-concepts/1.titles.md b/docs/head/1.guides/1.core-concepts/1.titles.md index 1222bea2f..b5a734c6f 100644 --- a/docs/head/1.guides/1.core-concepts/1.titles.md +++ b/docs/head/1.guides/1.core-concepts/1.titles.md @@ -240,9 +240,10 @@ Here are some practical examples for handling page titles in different scenarios Titles can be reactive, updating when your component data changes. Here's how this works in different frameworks: -::code-group +::FrameworkCode -```ts [Vue] +#vue +```ts import { useHead } from '@unhead/dynamic-import' import { ref } from 'vue' @@ -256,7 +257,8 @@ useHead({ }) ``` -```tsx [React] +#react +```tsx import { useHead } from '@unhead/dynamic-import' import { useState } from 'react' @@ -274,7 +276,8 @@ function ProductPage() { } ``` -```tsx [Solid] +#solid +```tsx import { useHead } from '@unhead/dynamic-import' import { createSignal } from 'solid-js' diff --git a/docs/head/1.guides/1.core-concepts/2.positions.md b/docs/head/1.guides/1.core-concepts/2.positions.md index 1806bf791..b885b1060 100644 --- a/docs/head/1.guides/1.core-concepts/2.positions.md +++ b/docs/head/1.guides/1.core-concepts/2.positions.md @@ -142,7 +142,7 @@ If you need full control over tag ordering, you can provide a custom `tagWeight` The default `capoTagWeight` function is exported from `unhead/server` so you can wrap it: ```ts -import { createHead, capoTagWeight } from 'unhead/server' +import { createHead, capoTagWeight } from '@unhead/dynamic-import/server' const head = createHead({ tagWeight(tag) { diff --git a/docs/head/1.guides/1.core-concepts/3.class-attr.md b/docs/head/1.guides/1.core-concepts/3.class-attr.md index 92d704f0d..1f9042956 100644 --- a/docs/head/1.guides/1.core-concepts/3.class-attr.md +++ b/docs/head/1.guides/1.core-concepts/3.class-attr.md @@ -42,7 +42,7 @@ useHead({ :: ::tip -If you're server-side rendering static tags, you can make use of [Client-Only Tags](/docs/head/guides/advanced/client-only-tags). +If you're server-side rendering static tags, you can use `import.meta.server` to conditionally add them only during SSR. :: ### Can I Use Arrays for Classes and Styles? @@ -125,4 +125,4 @@ useHead({ ## See Also - [useHead() API](/docs/head/api/composables/use-head) - Full API reference -- [Bundle Optimizations](/docs/head/guides/advanced/client-only-tags) - Client-only attributes +- [Build Plugins](/docs/head/guides/build-plugins/overview) - Build-time optimizations diff --git a/docs/head/1.guides/2.advanced/11.extending-unhead.md b/docs/head/1.guides/2.advanced/11.extending-unhead.md deleted file mode 100644 index c3e548546..000000000 --- a/docs/head/1.guides/2.advanced/11.extending-unhead.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: Extending Unhead -description: Create custom composables and plugins with Unhead's hooks API. Tap into tag resolution, DOM rendering, and SSR lifecycle events. -navigation.title: Extending Unhead ---- - -## Introduction - -Unhead is designed with extensibility in mind, providing lower-level primitives that can be composed to create powerful functionality. This guide explores how to extend Unhead using hooks and plugins to meet your specific requirements. - -## Understanding the Architecture - -Unhead uses a hooks-based architecture powered by [unjs/hookable](https://github.com/unjs/hookable), allowing you to tap into different parts of the head tag management lifecycle. This enables you to create custom features without modifying the core library. - -### Hook Execution Sequence - -Understanding the order in which hooks are executed is important for creating plugins that work well together. Here is the typical flow: - -1. **Entry Processing**: - -- `entries:updated` -- `entries:resolve` -- For each entry: `entries:normalize` -1. **Tag Processing**: - -- For each tag: `tag:normalise` -- `tags:beforeResolve` -- `tags:resolve` -- `tags:afterResolve` -1. **Client-side Rendering**: - -- `dom:beforeRender` -1. **Server-side Rendering**: - -- `ssr:beforeRender` -- `ssr:render` -- `ssr:rendered` -1. **Script Management**: - -- When applicable: `script:updated` - -### Available Hooks - -Unhead provides several hooks you can use to extend functionality: - -```ts -import { createHead, useHead } from '@unhead/dynamic-import' - -const head = createHead({ - hooks: { - 'entries:resolve': (ctx) => { - // Called when entries need to be resolved to tags - }, - 'tags:resolve': (ctx) => { - // Called when tags are being resolved for rendering - }, - 'tag:normalise': (ctx) => { - // Called when a tag is being normalized - }, - 'tag:generated': (ctx) => { - // Called after a tag has been generated - } - // See full list in the API reference - } -}) -``` - -## Accessing Head State - -The recommended way to access the head state is through the `resolveTags` function: - -```ts -import { injectHead, useHead } from '@unhead/dynamic-import' - -const head = injectHead() -const tags = head.resolveTags() - -// Now you can inspect or manipulate the tags -console.log(tags) -``` - -This gives you access to the fully processed tags that would be rendered to the DOM. - -## Creating Custom Composables - -Unhead's composables like `useHead()` and `useSeoMeta()` are built on top of primitive APIs. You can create your own composables for specific use cases. - -### Example: Creating useTitle Composable - -```ts -import { useHead } from '@unhead/dynamic-import' - -export function useTitle(title: string, options = {}) { - return useHead({ - title, - }, options) -} -``` - -### Example: Creating useBodyClass Composable - -```ts -import { useHead } from '@unhead/dynamic-import' - -export function useBodyClass(classes: string | string[]) { - const classList = Array.isArray(classes) ? classes : [classes] - - return useHead({ - bodyAttrs: { - class: classList.join(' ') - } - }) -} -``` - -## Building Plugins - -For more complex extensions, you can create plugins that hook into multiple parts of Unhead's lifecycle. - -### Example: Custom Deduplication Plugin - -```ts -import { defineHeadPlugin } from '@unhead/dynamic-import' - -export const customDedupePlugin = defineHeadPlugin({ - hooks: { - 'tags:resolve': (ctx) => { - // Custom logic to deduplicate tags - ctx.tags = deduplicateTagsWithCustomLogic(ctx.tags) - } - } -}) - -// Usage -const head = createHead({ - plugins: [ - customDedupePlugin() - ] -}) -``` - -## Common Use Cases - -### Example: Tailwind Class Deduplication - -This example shows how to deduplicate Tailwind CSS classes using `tailwind-merge`: - -```ts -import { defineHeadPlugin } from '@unhead/dynamic-import' -import { twMerge } from 'tailwind-merge' - -export const tailwindMergePlugin = defineHeadPlugin({ - hooks: { - 'tags:resolve': (ctx) => { - // Find body tags with class attributes - ctx.tags.forEach((tag) => { - if (tag.tag === 'bodyAttrs' && tag.props.class) { - // Deduplicate classes with tailwind-merge - tag.props.class = twMerge(tag.props.class) - } - }) - } - } -}) -``` - -### Example: Custom MetaInfo Provider - -Create a plugin that pulls meta information from a global store: - -```ts -import { defineHeadPlugin } from '@unhead/dynamic-import' - -export const storeMetaPlugin = defineHeadPlugin({ - hooks: { - 'entries:resolve': (ctx) => { - // Add entries from a store - const storeMetaInfo = getMetaFromStore() - ctx.entries.push(storeMetaInfo) - } - } -}) -``` - -## Best Practices - -::tip -When extending Unhead: - -- Keep extensions focused on a single concern -- Use typed hooks for better developer experience -- Document your extensions for team usage -- Consider performance implications in your hooks -- Test extensions with a variety of input cases -:: - -## API Reference - -For a complete list of available hooks and their signatures, refer to the hooks definitions in the source code: - -```ts -// From packages/unhead/src/types/hooks.ts -export interface HeadHooks { - 'entries:updated': (ctx: Unhead<any>) => HookResult - 'entries:resolve': (ctx: EntryResolveCtx<any>) => SyncHookResult - 'entries:normalize': (ctx: { tags: HeadTag[], entry: HeadEntry<any> }) => SyncHookResult - 'tag:normalise': (ctx: { tag: HeadTag, entry: HeadEntry<any>, resolvedOptions: CreateClientHeadOptions }) => SyncHookResult - 'tags:beforeResolve': (ctx: TagResolveContext) => SyncHookResult - 'tags:resolve': (ctx: TagResolveContext) => SyncHookResult - 'tags:afterResolve': (ctx: TagResolveContext) => SyncHookResult - 'dom:beforeRender': (ctx: DomBeforeRenderCtx) => SyncHookResult - // ...additional hooks -} -``` - -Note: `SyncHookResult` is `void` (synchronous only), while `HookResult` is `void | Promise<void>`. diff --git a/docs/head/1.guides/2.advanced/7.client-only-tags.md b/docs/head/1.guides/2.advanced/7.client-only-tags.md deleted file mode 100644 index f3512e08c..000000000 --- a/docs/head/1.guides/2.advanced/7.client-only-tags.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Bundle Optimizations -description: Reduce bundle size with client-only and server-only tags. Use mode option or import.meta guards for SSR/CSR optimization. -navigation.title: Bundle Optimizations ---- - -**Quick Answer:** To reduce bundle size, use `import.meta.client` to conditionally add tags only on the client. For Vite, use the Unhead Vite plugin to tree-shake server-only code. - -Unhead runs on both server and client. You can conditionally render tags in one environment to optimize bundle size. - -## How Do I Add Client-Only Tags? - -Client-only tags render exclusively in the browser, reducing server-side bundle size. - -### When to Use Client-Only Tags - -- Analytics scripts (Google Analytics, Plausible, etc.) -- User tracking and personalization scripts -- Client-side feature detection -- Progressive enhancement - -Use `import.meta.client` to conditionally add tags: - -```ts -import { useHead } from '@unhead/dynamic-import' - -// Using import.meta environment variables -if (import.meta.client) { - useHead({ - script: [ - { - src: 'https://example.com/analytics.js', - defer: true - } - ] - }) -} -``` - -## How Do I Add Server-Only Tags? - -Server-only tags render during SSR, reducing client-side bundle size. - -### When to Use Server-Only Tags - -- SEO metadata that doesn't need client reactivity -- Open Graph images and social media metadata -- Static metadata that appears on every page -- Schema.org structured data - -Use `import.meta.server` to conditionally add tags: - -```ts -import { useHead } from '@unhead/dynamic-import' - -if (import.meta.server) { - useHead({ - meta: [ - { - property: 'og:image', - content: 'https://example.com/my-image.jpg' - } - ] - }) -} -``` - -## Example Use Cases - -### Analytics After Hydration - -Load analytics only after the application has hydrated: - -```ts -import { useHead } from '@unhead/dynamic-import' - -if (import.meta.client) { - useHead({ - script: [ - { - src: 'https://example.com/analytics.js', - defer: true, - async: true - } - ] - }) -} -``` - -### Static SEO Tags on Server - -Add SEO metadata that doesn't need client updates: - -```ts -import { useHead } from '@unhead/dynamic-import' - -if (import.meta.server) { - useHead({ - meta: [ - { name: 'robots', content: 'index, follow' }, - { name: 'description', content: 'Site description' } - ] - }) -} -``` - -## What Are the Caveats? - -::warning -Some tags have dependencies that span client and server rendering: - -- `titleTemplate` affects `title` rendering - include on both client and server to avoid title flashing -- Tags with `tagPosition` or `tagPriority`{lang="ts"} may behave differently if not consistently applied -- Event handlers are only triggered in their respective environments -:: - -Ensure dependent tags are included in both environments when needed. - -## See Also - -- [Tag Positions](/docs/head/guides/core-concepts/positions) - Control tag placement -- [Vite Plugin](/docs/head/guides/advanced/vite-plugin) - Build-time optimizations -- [useHead() API](/docs/head/api/composables/use-head) - Full API reference diff --git a/docs/head/1.guides/2.advanced/9.vite-plugin.md b/docs/head/1.guides/2.advanced/9.vite-plugin.md deleted file mode 100644 index 82ad46e95..000000000 --- a/docs/head/1.guides/2.advanced/9.vite-plugin.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Vite Plugin -description: Unified Vite plugin for Unhead. Build optimizations, streaming SSR, tree-shaking, and useSeoMeta transforms in a single plugin call. -navigation.title: Vite Plugin ---- - -**Quick Answer:** Each framework package ships a unified Vite plugin at `@unhead/{framework}/vite` that handles build optimizations and optional streaming SSR. One import, one plugin call. - -## Setup - -Install your framework's unhead package (if you haven't already), then add the plugin to your Vite config: - -::code-group - -```ts [Vue] -import vue from '@vitejs/plugin-vue' -import unhead from '@unhead/vue/vite' - -export default defineConfig({ - plugins: [vue(), unhead()], -}) -``` - -```ts [React] -import react from '@vitejs/plugin-react' -import unhead from '@unhead/react/vite' - -export default defineConfig({ - plugins: [react(), unhead()], -}) -``` - -```ts [Svelte] -import { svelte } from '@sveltejs/vite-plugin-svelte' -import unhead from '@unhead/svelte/vite' - -export default defineConfig({ - plugins: [unhead(), svelte()], -}) -``` - -```ts [Solid] -import solid from 'vite-plugin-solid' -import unhead from '@unhead/solid-js/vite' - -export default defineConfig({ - // Must come before solid() to see JSX before compilation - plugins: [unhead(), solid()], -}) -``` - -```ts [Nuxt (automatic)] -// No configuration needed -``` - -:: - -## What Does It Do? - -The plugin performs several build-time optimizations automatically: - -- **Tree-shaking**: Removes server-only composables (`useServerHead`, `useServerSeoMeta`, `useSchemaOrg`) from client bundles -- **`useSeoMeta` transform**: Converts `useSeoMeta()` calls into raw `useHead()` calls at build time (~3kb savings) -- **Streaming SSR** (opt-in): Auto-injects streaming head components for SSR streaming support - -## Options - -```ts -unhead({ - // Disable server composable tree-shaking - treeshake: false, - // Disable useSeoMeta → useHead transform - transformSeoMeta: false, - // Enable streaming SSR - streaming: true, - // Streaming with custom mode - streaming: { mode: 'inline' }, - // Pre-minify inline script/style content - minify: { js: createJSMinifier(), css: createCSSMinifier() }, - // File filter (shared across all transforms) - filter: { exclude: [/some-file/] }, -}) -``` - -| Option | Type | Default | Description | -|--------|------|---------|-------------| -| `treeshake` | `object \| false` | enabled | Tree-shake server composables from client bundles | -| `transformSeoMeta` | `object \| false` | enabled | Transform `useSeoMeta()` to `useHead()` | -| `minify` | `object \| false` | disabled | Pre-minify static inline script/style. See [Minify Plugin](/docs/head/guides/plugins/minify#build-time-minification) | -| `streaming` | `true \| object \| false` | `false` | Enable streaming SSR support | -| `filter` | `object` | — | Shared include/exclude file filter | - -Every option accepts `false` to disable it entirely, or an object to configure it. - -## Streaming SSR - -When enabled, the streaming plugin auto-injects `<HeadStream />` components into your templates and sets up the hydration client: - -```ts -unhead({ streaming: true }) - -// Or configure the streaming mode -unhead({ - streaming: { - // 'async' (default) - non-blocking async script - // 'inline' - inline IIFE in HTML head (larger HTML, immediate execution) - // 'module' - ES module import (waits for bundle) - mode: 'async', - }, -}) -``` - -## Webpack - -For Webpack projects, use `@unhead/bundler/webpack` directly: - -```ts -import { UnheadWebpack } from '@unhead/bundler/webpack' - -export default { - plugins: [UnheadWebpack()], -} -``` - -## See Also - -- [Minify Plugin](/docs/head/guides/plugins/minify) - Inline script/style minification -- [Client-Only Tags](/docs/head/guides/advanced/client-only-tags) - Bundle optimizations -- [useHead() API](/docs/head/api/composables/use-head) - Full API reference diff --git a/docs/head/1.guides/build-plugins/0.overview.md b/docs/head/1.guides/build-plugins/0.overview.md new file mode 100644 index 000000000..7018fa35b --- /dev/null +++ b/docs/head/1.guides/build-plugins/0.overview.md @@ -0,0 +1,108 @@ +--- +title: Build Plugins +description: Unified Vite and Webpack plugins for Unhead. Build optimizations, tree-shaking, and useSeoMeta transforms in a single plugin call. +navigation.title: Overview +--- + +**Quick Answer:** Each framework package ships a unified Vite plugin at `@unhead/{framework}/vite` that handles build optimizations. One import, one plugin call. + +## Setup + +Install your framework's unhead package (if you haven't already), then add the plugin to your Vite config: + +::FrameworkCode + +#vue +```ts [vite.config.ts] +import vue from '@vitejs/plugin-vue' +import { Unhead } from '@unhead/vue/vite' + +export default defineConfig({ + plugins: [vue(), Unhead()], +}) +``` + +#react +```ts [vite.config.ts] +import react from '@vitejs/plugin-react' +import { Unhead } from '@unhead/react/vite' + +export default defineConfig({ + plugins: [react(), Unhead()], +}) +``` + +#svelte +```ts [vite.config.ts] +import { svelte } from '@sveltejs/vite-plugin-svelte' +import { Unhead } from '@unhead/svelte/vite' + +export default defineConfig({ + plugins: [Unhead(), svelte()], +}) +``` + +#solid +```ts [vite.config.ts] +import solid from 'vite-plugin-solid' +import { Unhead } from '@unhead/solid-js/vite' + +export default defineConfig({ + // Must come before solid() to see JSX before compilation + plugins: [Unhead(), solid()], +}) +``` + +#nuxt +```ts +// No configuration needed +``` + +:: + +## What Does It Do? + +The plugin combines several build-time optimizations: + +- **[Tree-shaking](/docs/head/guides/build-plugins/tree-shaking)**: Removes deprecated server composables and `useSchemaOrg` calls from client bundles +- **[useSeoMeta transform](/docs/head/guides/build-plugins/seo-meta-transform)**: Converts `useSeoMeta()` calls into raw `useHead()` calls at build time (~3kb savings) +- **[Minify transform](/docs/head/guides/build-plugins/minify-transform)**: Pre-minify static inline script/style content at build time +- **[Devtools](/docs/head/guides/build-plugins/devtools)**: Inspect head tags, entries, and SEO metadata in Vite DevTools (dev only, enabled by default) + +## Options + +```ts +Unhead({ + // Disable server composable tree-shaking + treeshake: false, + // Disable useSeoMeta → useHead transform + transformSeoMeta: false, + // Pre-minify inline script/style content + minify: { js: createJSMinifier(), css: createCSSMinifier() }, + // File filter (shared across all transforms) + filter: { exclude: [/some-file/] }, +}) +``` + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `treeshake` | `object \| false` | enabled | [Tree-shake server composables](/docs/head/guides/build-plugins/tree-shaking) from client bundles | +| `transformSeoMeta` | `object \| false` | enabled | [Transform `useSeoMeta()`](/docs/head/guides/build-plugins/seo-meta-transform) to `useHead()` | +| `minify` | `object \| false` | disabled | [Pre-minify static inline script/style](/docs/head/guides/build-plugins/minify-transform) | +| `devtools` | `object \| false` | enabled | [Vite DevTools integration](/docs/head/guides/build-plugins/devtools) (dev only) | +| `filter` | `object` | — | Shared include/exclude file filter | +| `sourcemap` | `boolean` | — | Enable sourcemap generation for transforms | + +Every option accepts `false` to disable it entirely, or an object to configure it. + +## Webpack + +For Webpack projects, use `@unhead/bundler/webpack` directly: + +```ts +import { Unhead } from '@unhead/bundler/webpack' + +export default { + plugins: [Unhead()], +} +``` diff --git a/docs/head/1.guides/build-plugins/1.tree-shaking.md b/docs/head/1.guides/build-plugins/1.tree-shaking.md new file mode 100644 index 000000000..fca50e78f --- /dev/null +++ b/docs/head/1.guides/build-plugins/1.tree-shaking.md @@ -0,0 +1,81 @@ +--- +title: Tree-Shaking +description: Automatically remove server-only composables from client bundles at build time. +navigation.title: Tree-Shaking +--- + +**Quick Answer:** The tree-shaking transform strips deprecated server composables and `useSchemaOrg` calls from client bundles so they never ship to the browser. Enabled by default. + +## What Does It Do? + +This transform removes calls to composables that should only run on the server. On client builds these calls are dead code; removing them reduces bundle size. + +Composables removed from client bundles: +- `useServerHead()` (deprecated, use `useHead()`) +- `useServerHeadSafe()` (deprecated, use `useHeadSafe()`) +- `useServerSeoMeta()` (deprecated, use `useSeoMeta()`) +- `useSchemaOrg()` + +::code-group + +```ts [Before (source)] +useHead({ title: 'My Page' }) + +useSchemaOrg([ + defineWebPage({ name: 'My Page' }), +]) +``` + +```ts [After (client build)] +useHead({ title: 'My Page' }) +``` + +:: + +::callout{type="info"} +`useServerHead`, `useServerHeadSafe`, and `useServerSeoMeta` are deprecated aliases. They exist for backwards compatibility and are identical to their non-server counterparts. New code should use `useHead`, `useHeadSafe`, and `useSeoMeta` directly. The tree-shaking transform still removes calls to the deprecated names for codebases that haven't migrated yet. +:: + +The transform only runs on client builds. SSR builds are left untouched. + +## Setup + +Tree-shaking is enabled by default when using the [unified Vite plugin](/docs/head/guides/build-plugins/overview): + +```ts +import { Unhead } from '@unhead/vue/vite' + +export default defineConfig({ + plugins: [Unhead()], +}) +``` + +### Disable + +```ts +Unhead({ + treeshake: false, +}) +``` + +## Options + +```ts +unhead({ + treeshake: { + // Override the shared file filter for this transform only + filter: { + include: [/my-special-file/], + exclude: [/some-file/], + }, + }, +}) +``` + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `filter` | `object` | inherited | Include/exclude file patterns (overrides the shared `filter`) | + +## How It Works + +The transform parses each file with [oxc-parser](https://github.com/nicolo-ribaudo/oxc-parser/tree/nicolo/oxc-parser) and walks the AST looking for `ExpressionStatement` nodes that call one of the server composable names. Matching statements are removed from the source using [magic-string](https://github.com/Rich-Harris/magic-string), preserving sourcemaps. diff --git a/docs/head/1.guides/build-plugins/2.seo-meta-transform.md b/docs/head/1.guides/build-plugins/2.seo-meta-transform.md new file mode 100644 index 000000000..5fea38378 --- /dev/null +++ b/docs/head/1.guides/build-plugins/2.seo-meta-transform.md @@ -0,0 +1,104 @@ +--- +title: useSeoMeta Transform +description: Convert useSeoMeta() calls to useHead() at build time, saving ~3kb from your client bundle. +navigation.title: useSeoMeta Transform +--- + +**Quick Answer:** The `useSeoMeta` transform rewrites `useSeoMeta()` calls into equivalent `useHead()` calls at build time. This removes the runtime meta-key resolution code (~3kb) from your bundle. Enabled by default. Also handles the deprecated `useServerSeoMeta()` for legacy code. + +## What Does It Do? + +At build time, `useSeoMeta()` calls with static or semi-static arguments are converted to `useHead()` with pre-resolved `meta` arrays: + +::code-group + +```ts [Before (source)] +useSeoMeta({ + title: 'My Title', + description: 'My Description', + ogImage: 'https://example.com/image.png', +}) +``` + +```ts [After (build output)] +useHead({ + title: 'My Title', + meta: [ + { name: 'description', content: 'My Description' }, + { property: 'og:image', content: 'https://example.com/image.png' }, + ], +}) +``` + +:: + +Import specifiers are also rewritten: `import { useSeoMeta } from 'unhead'` becomes `import { useHead } from 'unhead'`. + +## Setup + +The transform is enabled by default when using the [unified Vite plugin](/docs/head/guides/build-plugins/overview): + +```ts +import { Unhead } from '@unhead/vue/vite' + +export default defineConfig({ + plugins: [Unhead()], +}) +``` + +### Disable + +```ts +Unhead({ + transformSeoMeta: false, +}) +``` + +## Options + +```ts +unhead({ + transformSeoMeta: { + // Disable import specifier rewriting + imports: false, + // Extra import paths to recognize as useSeoMeta sources + importPaths: ['my-custom-package'], + // Override the shared file filter + filter: { + include: [/my-special-file/], + exclude: [/some-file/], + }, + }, +}) +``` + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `imports` | `boolean` | `true` | Rewrite import specifiers (`useSeoMeta` → `useHead`) | +| `importPaths` | `string[]` | — | Additional package names to treat as valid `useSeoMeta` sources | +| `filter` | `object` | inherited | Include/exclude file patterns (overrides the shared `filter`) | + +## Limitations + +The transform skips calls it cannot statically analyze: +- Spread elements in the options object (`useSeoMeta({ ...dynamicMeta })`) +- Non-identifier keys +- Properties with missing values +- Object-valued properties with non-static (non-string-literal) sub-properties + +In these cases, the original `useSeoMeta()` call is preserved and resolved at runtime. + +### Deprecated `useServerSeoMeta` + +The transform also handles the deprecated `useServerSeoMeta()`. When it includes `title` or `titleTemplate`, the transform splits the call into two: a `useHead()` call for the title fields and a `useServerHead()` call for the meta tags. + +```ts +// Input (deprecated) +useServerSeoMeta({ title: 'My Title', description: 'My Desc' }) + +// Output +useHead({ title: 'My Title' }); +useServerHead({ meta: [{ name: 'description', content: 'My Desc' }] }) +``` + +New code should use `useSeoMeta()` instead. diff --git a/docs/head/1.guides/build-plugins/3.minify-transform.md b/docs/head/1.guides/build-plugins/3.minify-transform.md new file mode 100644 index 000000000..b05f4da2c --- /dev/null +++ b/docs/head/1.guides/build-plugins/3.minify-transform.md @@ -0,0 +1,110 @@ +--- +title: Minify Transform +description: Pre-minify static inline script and style content inside useHead() calls at build time using rolldown, esbuild, or lightningcss. +navigation.title: Minify Transform +--- + +**Quick Answer:** The minify transform runs at build time and minifies static string literals inside `useHead()` script and style tags. Uses heavier tools (rolldown/esbuild for JS, lightningcss for CSS) that never enter your SSR runtime bundle. Disabled by default, requires a minifier to be provided. + +## What Does It Do? + +The transform finds `innerHTML` and `textContent` properties on `script` and `style` objects inside `useHead()` calls, then minifies them at build time: + +::code-group + +```ts [Before (source)] +useHead({ + script: [{ + innerHTML: ` + // Analytics initialization + window.dataLayer = window.dataLayer || []; + function gtag() { dataLayer.push(arguments); } + gtag('js', new Date()); + `, + }], +}) +``` + +```ts [After (build output)] +useHead({ + script: [{ + innerHTML: "window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag(\"js\",new Date)", + }], +}) +``` + +:: + +The transform automatically skips `application/json`, `application/ld+json`, `speculationrules`, and `importmap` script types, and ignores strings shorter than 20 characters. + +## Setup + +The minify transform is disabled by default. Enable it by providing minifier functions: + +```ts +import { Unhead } from '@unhead/vue/vite' +import { createJSMinifier } from '@unhead/bundler/minify/rolldown' +import { createCSSMinifier } from '@unhead/bundler/minify/lightningcss' + +export default defineConfig({ + plugins: [ + Unhead({ + minify: { + js: createJSMinifier(), + css: createCSSMinifier(), + }, + }), + ], +}) +``` + +## Available Minifier Backends + +| Package | Function | Use case | +|---------|----------|----------| +| `@unhead/bundler/minify/rolldown` | `createJSMinifier()` | JS minification (Vite 8+) | +| `@unhead/bundler/minify/esbuild` | `createJSMinifier()` | JS minification (Vite 7) | +| `@unhead/bundler/minify/lightningcss` | `createCSSMinifier()` | CSS minification | + +## Options + +```ts +unhead({ + minify: { + // Custom JS minifier, or false to disable + js: createJSMinifier(), + // Custom CSS minifier, or false to disable + css: createCSSMinifier(), + // Override the shared file filter + filter: { + include: [/my-special-file/], + exclude: [/some-file/], + }, + }, +}) +``` + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `js` | `false \| MinifyFn` | — | JS minifier function, or `false` to disable | +| `css` | `false \| MinifyFn` | — | CSS minifier function, or `false` to disable | +| `filter` | `object` | inherited | Include/exclude file patterns (overrides the shared `filter`) | + +### Custom Minifiers + +You can provide any async function that takes a string and returns the minified result (or `null` to skip): + +```ts +unhead({ + minify: { + js: async (code) => { + const result = await myMinifier(code) + return result.code + }, + }, +}) +``` + +## Runtime Minification + +For runtime SSR minification (not build-time), see the [Minify Plugin](/docs/head/guides/plugins/minify). The runtime plugin uses lightweight pure-JS minifiers suitable for edge and serverless environments. diff --git a/docs/head/1.guides/build-plugins/4.devtools.md b/docs/head/1.guides/build-plugins/4.devtools.md new file mode 100644 index 000000000..071b494a6 --- /dev/null +++ b/docs/head/1.guides/build-plugins/4.devtools.md @@ -0,0 +1,83 @@ +--- +title: Devtools +description: Inspect head tags, SEO metadata, entries, and source locations in the Vite DevTools panel. Enabled by default in development. +navigation.title: Devtools +--- + +**Quick Answer:** The Unhead devtools integration adds a panel to [Vite DevTools](https://github.com/nicolo-ribaudo/vite-devtools) showing all active head tags, entries, SEO overview, plugins, and source file locations. Enabled by default in dev mode, zero config required. + +## What Does It Do? + +The devtools plugin provides a real-time view of your head state during development: + +- **Entries** — every `useHead()` / `useSeoMeta()` call with its source file and line number +- **Tags** — all resolved tags (meta, link, script, style, etc.) with their props, position, priority, and dedupe keys +- **SEO overview** — title, description, canonical, robots, Open Graph at a glance +- **Scripts** — tracked `useScript()` instances with their load status +- **Plugins** — which Unhead plugins are active +- **Template params** — current template parameter values and separator +- **Validation** — warnings from the [Validate plugin](/docs/head/guides/plugins/validate) (if enabled) + +### Source Tracing + +The plugin injects `_source` metadata (file path and line number) into every `useHead()`, `useSeoMeta()`, `useHeadSafe()`, and `useScript()` call at transform time. This lets you click through from a tag in the devtools panel to the exact line that created it. + +## Setup + +Devtools are enabled by default when using the [unified Vite plugin](/docs/head/guides/build-plugins/overview). They only run in `vite dev` (not in builds). + +::FrameworkCode + +#vue +```ts [vite.config.ts] +import vue from '@vitejs/plugin-vue' +import { Unhead } from '@unhead/vue/vite' + +export default defineConfig({ + plugins: [vue(), Unhead()], +}) +``` + +#react +```ts [vite.config.ts] +import react from '@vitejs/plugin-react' +import { Unhead } from '@unhead/react/vite' + +export default defineConfig({ + plugins: [react(), Unhead()], +}) +``` + +#nuxt +```ts +// Enabled automatically +``` + +:: + +### Disable + +```ts +Unhead({ + devtools: false, +}) +``` + +## Requirements + +The devtools panel requires the `@vitejs/devtools-kit` peer dependency and the `@unhead/devtools-app` package (which provides the UI). Both are optional; the plugin degrades gracefully if they're missing. + +## How It Works + +The integration has three parts: + +1. **Vite transform** — injects `_source` metadata into composable calls and wraps `createHead()` to expose the instance on `window.__unhead_devtools__` +2. **Bridge script** — a client-side module (`/@unhead/bridge.mjs`) that reads the head instance, serializes its state, and syncs it to the Vite DevTools shared state via `@vitejs/devtools-kit/client` +3. **DevTools panel** — a static app (`@unhead/devtools-app`) served at `/__unhead/` and registered as a Vite DevTools dock panel + +State is synced on every `dom:rendered` hook, so the panel updates in real time as head tags change. + +## See Also + +- [Build Plugins Overview](/docs/head/guides/build-plugins/overview) - All build-time optimizations +- [Validate Plugin](/docs/head/guides/plugins/validate) - Catch SEO and head tag issues (shown in devtools) diff --git a/docs/head/1.guides/plugins/6.template-params.md b/docs/head/1.guides/plugins/6.template-params.md index 295f1a0c8..0e4c1ea05 100644 --- a/docs/head/1.guides/plugins/6.template-params.md +++ b/docs/head/1.guides/plugins/6.template-params.md @@ -17,8 +17,8 @@ Add the plugin to your Unhead configuration: ::code-block ```ts [Input] -import { createHead } from 'unhead' -import { TemplateParamsPlugin } from 'unhead/plugins' +import { createHead } from '@unhead/dynamic-import' +import { TemplateParamsPlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ diff --git a/docs/head/1.guides/plugins/alias-sorting.md b/docs/head/1.guides/plugins/alias-sorting.md index 912c9c499..afb7978ad 100644 --- a/docs/head/1.guides/plugins/alias-sorting.md +++ b/docs/head/1.guides/plugins/alias-sorting.md @@ -27,8 +27,8 @@ Add the plugin to your Unhead configuration: ::code-block ```ts [Input] -import { createHead } from 'unhead' -import { AliasSortingPlugin } from 'unhead/plugins' +import { createHead } from '@unhead/dynamic-import' +import { AliasSortingPlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ diff --git a/docs/head/1.guides/plugins/canonical.md b/docs/head/1.guides/plugins/canonical.md index f33384398..b1bdd63f3 100644 --- a/docs/head/1.guides/plugins/canonical.md +++ b/docs/head/1.guides/plugins/canonical.md @@ -54,7 +54,7 @@ Install the plugin in both your server & client entries: ::code-block ```ts [Input] -import { CanonicalPlugin } from 'unhead/plugins' +import { CanonicalPlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ @@ -237,15 +237,14 @@ CanonicalPlugin({ ## Framework Setup Guides -### Nuxt - -Nuxt has built-in Unhead support. Register the plugin in a [Nuxt plugin](https://nuxt.com/docs/guide/directory-structure/plugins): +Register the plugin when creating your head instance: -::code-block +::FrameworkCode +#nuxt ```ts [plugins/canonical.ts] import { injectHead } from '@unhead/vue' -import { CanonicalPlugin } from 'unhead/plugins' +import { CanonicalPlugin } from '@unhead/dynamic-import/plugins' export default defineNuxtPlugin(() => { const head = injectHead() @@ -255,14 +254,7 @@ export default defineNuxtPlugin(() => { }) ``` -:: - -### Vue - -Register the plugin when creating your head instance: - -::code-block - +#vue ```ts [main.ts] import { createHead } from '@unhead/vue/client' import { CanonicalPlugin } from 'unhead/plugins' @@ -278,14 +270,7 @@ const head = createHead({ app.use(head) ``` -:: - -### React - -Register the plugin in your app entry: - -::code-block - +#react ```tsx [app.tsx] import { createHead } from '@unhead/react/client' import { CanonicalPlugin } from 'unhead/plugins' @@ -299,14 +284,7 @@ const head = createHead({ }) ``` -:: - -### Svelte - -Register the plugin when creating the head instance in your entry file: - -::code-block - +#svelte ```ts [src/entry-client.ts] import { createHead, UnheadContextKey } from '@unhead/svelte/client' import { CanonicalPlugin } from 'unhead/plugins' @@ -317,14 +295,7 @@ head.use(CanonicalPlugin({ })) ``` -:: - -### Angular - -Register the plugin via `provideClientHead` options: - -::code-block - +#angular ```ts [app.config.ts] import { provideClientHead } from '@unhead/angular' import { CanonicalPlugin } from 'unhead/plugins' diff --git a/docs/head/1.guides/plugins/infer-seo-meta-tags.md b/docs/head/1.guides/plugins/infer-seo-meta-tags.md index d4ff4f59e..7348210fa 100644 --- a/docs/head/1.guides/plugins/infer-seo-meta-tags.md +++ b/docs/head/1.guides/plugins/infer-seo-meta-tags.md @@ -45,7 +45,7 @@ Add the plugin to your Unhead configuration: ::code-block ```ts [Input] -import { InferSeoMetaPlugin } from 'unhead/plugins' +import { InferSeoMetaPlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ @@ -98,7 +98,7 @@ Remove site name suffix from Open Graph titles: ::code-block ```ts [Input] -import { InferSeoMetaPlugin } from 'unhead/plugins' +import { InferSeoMetaPlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ diff --git a/docs/head/1.guides/plugins/minify.md b/docs/head/1.guides/plugins/minify.md index 0307c9bf9..c5b350fc2 100644 --- a/docs/head/1.guides/plugins/minify.md +++ b/docs/head/1.guides/plugins/minify.md @@ -22,7 +22,7 @@ Register the plugin when creating your head instance: ::code-block ```ts [Input] -import { MinifyPlugin } from 'unhead/plugins' +import { MinifyPlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ @@ -84,19 +84,19 @@ Note: The `ssr:render` hook runs synchronously, so custom minifiers must be sync ## Build-Time Minification -For build-time minification of static string literals inside `useHead()` / `useServerHead()` calls, enable the `minify` option on the [unified Vite plugin](/docs/head/guides/advanced/vite-plugin). This runs at build time using heavier tools (rolldown/esbuild for JS, lightningcss for CSS) that never enter your SSR runtime bundle. +For build-time minification of static string literals inside `useHead()` / `useServerHead()` calls, enable the `minify` option on the [unified Vite plugin](/docs/head/guides/build-plugins/minify-transform). This runs at build time using heavier tools (rolldown/esbuild for JS, lightningcss for CSS) that never enter your SSR runtime bundle. ::code-block ```ts [vite.config.ts] import vue from '@vitejs/plugin-vue' -import unhead from '@unhead/vue/vite' +import { Unhead } from '@unhead/vue/vite' import { createJSMinifier } from '@unhead/bundler/minify/rolldown' import { createCSSMinifier } from '@unhead/bundler/minify/lightningcss' export default defineConfig({ plugins: [ vue(), - unhead({ + Unhead({ minify: { js: createJSMinifier(), css: createCSSMinifier(), @@ -121,7 +121,7 @@ The built-in minifiers are also available as standalone functions for use in cus ::code-block ```ts [Input] -import { minifyCSS, minifyJS, minifyJSON } from 'unhead/minify' +import { minifyCSS, minifyJS, minifyJSON } from '@unhead/dynamic-import/minify' const minifiedJS = minifyJS('// comment\nvar x = 1;') const minifiedCSS = minifyCSS('body { margin: 0; }') @@ -131,6 +131,6 @@ const minifiedJSON = minifyJSON('{ "name": "test" }') ## Related -- [Build Plugins](/docs/head/guides/advanced/vite-plugin) - Vite and Webpack build optimizations +- [Build Plugins](/docs/head/guides/build-plugins/overview) - Vite and Webpack build optimizations - [Validate Plugin](/docs/head/guides/plugins/validate) - Catch common SEO and head tag mistakes - [Inner Content](/docs/head/guides/core-concepts/inner-content) - Working with innerHTML and textContent diff --git a/docs/head/1.guides/plugins/validate.md b/docs/head/1.guides/plugins/validate.md index 89423003d..a778e662a 100644 --- a/docs/head/1.guides/plugins/validate.md +++ b/docs/head/1.guides/plugins/validate.md @@ -23,7 +23,7 @@ Register the plugin when you want head tag validation — it's fully tree-shakea ::code-block ```ts [Input] -import { ValidatePlugin } from 'unhead/plugins' +import { ValidatePlugin } from '@unhead/dynamic-import/plugins' const head = createHead({ plugins: [ diff --git a/docs/head/7.api/0.get-started/overview.md b/docs/head/7.api/0.get-started/overview.md index b9405bae7..599994b28 100644 --- a/docs/head/7.api/0.get-started/overview.md +++ b/docs/head/7.api/0.get-started/overview.md @@ -16,6 +16,10 @@ description: 'Unhead API reference for useHead(), useSeoMeta(), useScript() comp :: +## How do I create plugins? + +See the [Plugins API](/docs/head/api/plugins) for creating custom plugins with `defineHeadPlugin`. + ## What hooks can I use? ### Entry Hooks diff --git a/docs/head/7.api/composables/0.use-head.md b/docs/head/7.api/composables/0.use-head.md index e730adca4..73456c3f8 100644 --- a/docs/head/7.api/composables/0.use-head.md +++ b/docs/head/7.api/composables/0.use-head.md @@ -209,14 +209,14 @@ Works with all composables that accept `HeadEntryOptions` — `useHead()`, `useS ## Reactivity -::VueOnly - ### Automatic Reactivity The `useHead()`{lang="ts"} composable automatically integrates with your framework's reactivity system: +::FrameworkCode + +#vue ```ts -// Vue example with reactive data import { useHead } from '@unhead/dynamic-import' import { computed, ref } from 'vue' @@ -230,12 +230,54 @@ useHead({ }) ``` -Framework integrations like Vue automatically: +#react +```tsx +import { useHead } from '@unhead/dynamic-import' +import { useState } from 'react' + +function MyPage() { + const [title, setTitle] = useState('Dynamic Title') + + useHead({ + title: () => title, + meta: [ + { name: 'description', content: () => `Description for ${title}` } + ] + }) + + return <div>My Page</div> +} +``` + +#solid +```tsx +import { useHead } from '@unhead/dynamic-import' +import { createSignal } from 'solid-js' + +function MyPage() { + const [title, setTitle] = createSignal('Dynamic Title') + + useHead({ + title: () => title(), + meta: [ + { name: 'description', content: () => `Description for ${title()}` } + ] + }) + + return <div>My Page</div> +} +``` + +:: + +::VueOnly -- Track reactive data changes with `watchEffect` -- Resolve refs, computed props, and reactive objects -- Clean up head entries on component unmount -- Handle special cases like keep-alive components +Vue automatically: + +- Tracks reactive data changes with `watchEffect` +- Resolves refs, computed props, and reactive objects +- Cleans up head entries on component unmount +- Handles special cases like keep-alive components :: @@ -325,7 +367,7 @@ declare module '@unhead/schema' { ::code-group ```ts [Custom Link rel] -import type { GenericLink } from 'unhead/types' +import type { GenericLink } from '@unhead/dynamic-import/types' useHead({ link: [ @@ -336,7 +378,7 @@ useHead({ ``` ```ts [Custom Script type] -import type { GenericScript } from 'unhead/types' +import type { GenericScript } from '@unhead/dynamic-import/types' useHead({ script: [ @@ -486,16 +528,17 @@ This pattern is commonly used to implement layouts with defaults and page-specif ### Async Data Loading +::FrameworkCode + +#vue ```ts import { useHead } from '@unhead/dynamic-import' import { computed, ref } from 'vue' -// Initial setup const data = ref(null) const loading = ref(true) -const error = ref(null) -const headControl = useHead({ +useHead({ title: computed(() => data.value ? `${data.value.name} - Product` : loading.value @@ -503,21 +546,57 @@ const headControl = useHead({ : 'Product Not Found') }) -// Fetch data and update head async function fetchProduct(id) { - try { - loading.value = true - data.value = await api.getProduct(id) - } - catch (err) { - error.value = err - } - finally { - loading.value = false - } + loading.value = true + data.value = await api.getProduct(id) + loading.value = false } ``` +#react +```tsx +import { useHead } from '@unhead/dynamic-import' +import { useState } from 'react' + +function ProductPage({ id }) { + const [data, setData] = useState(null) + const [loading, setLoading] = useState(true) + + useHead({ + title: () => data + ? `${data.name} - Product` + : loading + ? 'Loading...' + : 'Product Not Found' + }) + + return <div>Product Page</div> +} +``` + +#solid +```tsx +import { useHead } from '@unhead/dynamic-import' +import { createSignal } from 'solid-js' + +function ProductPage(props) { + const [data, setData] = createSignal(null) + const [loading, setLoading] = createSignal(true) + + useHead({ + title: () => data() + ? `${data().name} - Product` + : loading() + ? 'Loading...' + : 'Product Not Found' + }) + + return <div>Product Page</div> +} +``` + +:: + ::note This pattern works well with data fetching libraries and state management solutions. :: diff --git a/docs/head/7.api/composables/3.use-seo-meta.md b/docs/head/7.api/composables/3.use-seo-meta.md index a11b69ec3..f1639a50f 100644 --- a/docs/head/7.api/composables/3.use-seo-meta.md +++ b/docs/head/7.api/composables/3.use-seo-meta.md @@ -71,9 +71,12 @@ useSeoMeta({ ### Dynamic Meta Tags +::FrameworkCode + +#vue ```ts import { useSeoMeta } from '@unhead/dynamic-import' -import { computed } from 'vue' // or equivalent in your framework +import { computed, ref } from 'vue' const product = ref({ name: 'Awesome Product', @@ -88,6 +91,52 @@ useSeoMeta({ }) ``` +#react +```tsx +import { useSeoMeta } from '@unhead/dynamic-import' +import { useState } from 'react' + +function ProductPage() { + const [product] = useState({ + name: 'Awesome Product', + description: 'This product is amazing', + image: 'https://example.com/image.png' + }) + + useSeoMeta({ + title: () => `${product.name} - Your Brand`, + description: () => product.description, + ogImage: () => product.image, + }) + + return <div>Product Page</div> +} +``` + +#solid +```tsx +import { useSeoMeta } from '@unhead/dynamic-import' +import { createSignal } from 'solid-js' + +function ProductPage() { + const [product] = createSignal({ + name: 'Awesome Product', + description: 'This product is amazing', + image: 'https://example.com/image.png' + }) + + useSeoMeta({ + title: () => `${product().name} - Your Brand`, + description: () => product().description, + ogImage: () => product().image, + }) + + return <div>Product Page</div> +} +``` + +:: + ## How it works The `useSeoMeta` composable is powered by the [zhead](https://github.com/harlan-zw/zhead) schema and `unpackMeta` function. Unhead knows which meta tags belong where, as well as handling all the browser quirks for you. diff --git a/docs/head/7.api/plugins.md b/docs/head/7.api/plugins.md new file mode 100644 index 000000000..f85a88ae0 --- /dev/null +++ b/docs/head/7.api/plugins.md @@ -0,0 +1,88 @@ +--- +title: Plugins +description: Create custom plugins with defineHeadPlugin to hook into Unhead's tag resolution, DOM rendering, and SSR lifecycle. +--- + +Unhead uses a hooks based architecture powered by [unjs/hookable](https://github.com/unjs/hookable). Plugins let you tap into different parts of the head tag management lifecycle. + +## defineHeadPlugin + +A type helper for creating plugins. A plugin is an object with a `key` and optional `hooks`. + +```ts +import { defineHeadPlugin } from 'unhead/plugins' + +export const myPlugin = defineHeadPlugin({ + key: 'my-plugin', + hooks: { + 'tags:resolve': (ctx) => { + // modify ctx.tags before rendering + } + } +}) +``` + +Plugins can also be a function that receives the `Unhead` instance: + +```ts +import { defineHeadPlugin } from 'unhead/plugins' + +export const myPlugin = defineHeadPlugin((head) => ({ + key: 'my-plugin', + hooks: { + 'entries:updated': () => { + const tags = head.resolveTags() + console.log('Current tags:', tags) + } + } +})) +``` + +### Registering Plugins + +Pass plugins when creating the head instance, or add them later with `head.use()`. + +```ts +import { createHead } from 'unhead' + +const head = createHead({ + plugins: [myPlugin] +}) + +// or later +head.use(myPlugin) +``` + +## Custom Composables + +Unhead's composables are built on top of `useHead()`. You can create your own for common patterns. + +```ts +import { useHead } from 'unhead' + +export function useBodyClass(classes: string | string[]) { + const classList = Array.isArray(classes) ? classes : [classes] + return useHead({ + bodyAttrs: { + class: classList.join(' ') + } + }) +} +``` + +## Plugin Type + +```ts +type HeadPluginInput = + | (HeadPluginOptions & { key: string }) + | ((head: Unhead) => HeadPluginOptions & { key: string }) + +interface HeadPluginOptions { + hooks?: Record<string, (...args: any[]) => any> +} +``` + +## See Also + +- [Hooks API](/docs/head/api/hooks) for the full list of available hooks and their signatures +- [Built-in Plugins](/docs/head/guides/plugins) for plugins that ship with Unhead diff --git a/examples/angular/package.json b/examples/angular/package.json index f778a9e82..e50114efc 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -12,16 +12,16 @@ }, "private": true, "dependencies": { - "@angular/animations": "^21.2.7", - "@angular/common": "^21.2.7", - "@angular/compiler": "^21.2.7", - "@angular/core": "^21.2.7", - "@angular/forms": "^21.2.7", - "@angular/platform-browser": "^21.2.7", - "@angular/platform-browser-dynamic": "^21.2.7", - "@angular/platform-server": "^21.2.7", - "@angular/router": "^21.2.7", - "@angular/ssr": "^21.2.6", + "@angular/animations": "^21.2.8", + "@angular/common": "^21.2.8", + "@angular/compiler": "^21.2.8", + "@angular/core": "^21.2.8", + "@angular/forms": "^21.2.8", + "@angular/platform-browser": "^21.2.8", + "@angular/platform-browser-dynamic": "^21.2.8", + "@angular/platform-server": "^21.2.8", + "@angular/router": "^21.2.8", + "@angular/ssr": "^21.2.7", "@unhead/angular": "workspace:*", "express": "^5.2.1", "rxjs": "~7.8.2", @@ -29,10 +29,10 @@ "zone.js": "~0.16.1" }, "devDependencies": { - "@angular-devkit/build-angular": "^21.2.6", - "@angular/build": "^21.2.6", - "@angular/cli": "^21.2.6", - "@angular/compiler-cli": "^21.2.7", + "@angular-devkit/build-angular": "^21.2.7", + "@angular/build": "^21.2.7", + "@angular/cli": "^21.2.7", + "@angular/compiler-cli": "^21.2.8", "@types/express": "^5.0.6", "@types/node": "^25.5.2", "ng-packagr": "^21.2.2", diff --git a/examples/vite-ssr-react-streaming/package.json b/examples/vite-ssr-react-streaming/package.json index 73464de0b..0ce15c3ca 100644 --- a/examples/vite-ssr-react-streaming/package.json +++ b/examples/vite-ssr-react-streaming/package.json @@ -16,8 +16,8 @@ "@unhead/react": "workspace:*", "compression": "^1.8.1", "express": "^5.2.1", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-router-dom": "^7.14.0" }, "devDependencies": { @@ -29,6 +29,6 @@ "@vitejs/plugin-react": "^6.0.1", "cross-env": "^10.1.0", "typescript": "5.8.3", - "vite": "^8.0.5" + "vite": "^8.0.8" } } diff --git a/examples/vite-ssr-react-ts/package.json b/examples/vite-ssr-react-ts/package.json index 67f2af7fd..e4f0ec0ef 100644 --- a/examples/vite-ssr-react-ts/package.json +++ b/examples/vite-ssr-react-ts/package.json @@ -15,8 +15,8 @@ "@unhead/schema-org": "workspace:*", "compression": "^1.8.1", "express": "^5.2.1", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-router-dom": "^7.14.0", "sirv": "^3.0.2" }, @@ -28,6 +28,6 @@ "@vitejs/plugin-react": "^6.0.1", "cross-env": "^10.1.0", "typescript": "5.8.3", - "vite": "^8.0.5" + "vite": "^8.0.8" } } diff --git a/examples/vite-ssr-solidjs-streaming/package.json b/examples/vite-ssr-solidjs-streaming/package.json index e8ae0145a..ec173b08e 100644 --- a/examples/vite-ssr-solidjs-streaming/package.json +++ b/examples/vite-ssr-solidjs-streaming/package.json @@ -24,7 +24,7 @@ "@types/node": "^25.5.2", "cross-env": "^10.1.0", "typescript": "5.8.3", - "vite": "^8.0.5", + "vite": "^8.0.8", "vite-plugin-solid": "^2.11.12" } } diff --git a/examples/vite-ssr-svelte-streaming/package.json b/examples/vite-ssr-svelte-streaming/package.json index 4152c81c8..783ee451d 100644 --- a/examples/vite-ssr-svelte-streaming/package.json +++ b/examples/vite-ssr-svelte-streaming/package.json @@ -24,9 +24,9 @@ "@types/express": "^5.0.6", "@types/node": "^25.5.2", "cross-env": "^10.1.0", - "svelte": "^5.55.1", + "svelte": "^5.55.2", "tslib": "^2.8.1", "typescript": "5.8.3", - "vite": "^8.0.5" + "vite": "^8.0.8" } } diff --git a/examples/vite-ssr-svelte/package.json b/examples/vite-ssr-svelte/package.json index a13acc682..66f3addb4 100644 --- a/examples/vite-ssr-svelte/package.json +++ b/examples/vite-ssr-svelte/package.json @@ -24,10 +24,10 @@ "@types/express": "^5.0.6", "@types/node": "^25.5.2", "cross-env": "^10.1.0", - "svelte": "^5.55.1", + "svelte": "^5.55.2", "svelte-check": "^4.4.6", "tslib": "^2.8.1", "typescript": "5.8.3", - "vite": "^8.0.5" + "vite": "^8.0.8" } } diff --git a/examples/vite-ssr-ts/package.json b/examples/vite-ssr-ts/package.json index 9451589be..973ff97d0 100644 --- a/examples/vite-ssr-ts/package.json +++ b/examples/vite-ssr-ts/package.json @@ -20,6 +20,6 @@ "@types/node": "^25.5.2", "cross-env": "^10.1.0", "typescript": "5.8.3", - "vite": "^8.0.5" + "vite": "^8.0.8" } } diff --git a/examples/vite-ssr-vue-prerender/package.json b/examples/vite-ssr-vue-prerender/package.json index 4b7d8d6d3..ddb729162 100644 --- a/examples/vite-ssr-vue-prerender/package.json +++ b/examples/vite-ssr-vue-prerender/package.json @@ -19,7 +19,7 @@ "pinia": "^3.0.4", "unhead": "workspace:*", "unplugin-auto-import": "^21.0.0", - "vite": "^8.0.5", + "vite": "^8.0.8", "vue-router": "^5.0.4" }, "devDependencies": { diff --git a/examples/vite-ssr-vue-prerender/vite.config.js b/examples/vite-ssr-vue-prerender/vite.config.js index 9d0d7cef7..d7e12b474 100644 --- a/examples/vite-ssr-vue-prerender/vite.config.js +++ b/examples/vite-ssr-vue-prerender/vite.config.js @@ -3,7 +3,7 @@ import vuePlugin from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import AutoImport from 'unplugin-auto-import/vite' import { unheadVueComposablesImports } from '@unhead/vue' -import UnheadPlugin from '@unhead/bundler/vite' +import { Unhead } from '@unhead/vue/vite' import Inspect from 'vite-plugin-inspect' const virtualFile = '@virtual-file' @@ -30,7 +30,7 @@ export default defineConfig(({ command, ssrBuild }) => ({ build: true, outputDir: '.vite-inspect' }), - UnheadPlugin(), + Unhead(), vuePlugin(), vueJsx(), { diff --git a/examples/vite-ssr-vue-streaming/package.json b/examples/vite-ssr-vue-streaming/package.json index 077c56450..3b4fb4ed5 100644 --- a/examples/vite-ssr-vue-streaming/package.json +++ b/examples/vite-ssr-vue-streaming/package.json @@ -24,9 +24,10 @@ "@playwright/test": "^1.59.1", "@types/express": "^5.0.6", "@types/node": "^25.5.2", + "@vitejs/devtools": "^0.1.13", "@vitejs/plugin-vue": "latest", "cross-env": "^10.1.0", "typescript": "5.8.3", - "vite": "^8.0.5" + "vite": "^8.0.8" } } diff --git a/examples/vite-ssr-vue-streaming/vite.config.ts b/examples/vite-ssr-vue-streaming/vite.config.ts index f890f0b71..e1145279f 100644 --- a/examples/vite-ssr-vue-streaming/vite.config.ts +++ b/examples/vite-ssr-vue-streaming/vite.config.ts @@ -1,12 +1,18 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' -import unhead from '@unhead/vue/vite' +import { DevTools } from '@vitejs/devtools' +import { Unhead } from '@unhead/vue/vite' export default defineConfig({ plugins: [ + DevTools(), vue(), - unhead({ streaming: true }), + Unhead({ streaming: true }), ], + devtools: { + enabled: true, + clientAuth: false, + }, build: { minify: false, }, diff --git a/examples/vite-ssr-vue/package.json b/examples/vite-ssr-vue/package.json index 1e3626147..1623641ff 100644 --- a/examples/vite-ssr-vue/package.json +++ b/examples/vite-ssr-vue/package.json @@ -12,21 +12,26 @@ "check": "vue-tsc" }, "dependencies": { + "@unhead/schema-org": "workspace:*", "@unhead/vue": "workspace:*", "compression": "^1.8.1", "express": "^5.2.1", "rollup-plugin-visualizer": "^7.0.1", "sirv": "^3.0.2", "vite-bundle-analyzer": "^1.3.7", - "vue": "^3.5.32" + "vue": "^3.5.32", + "vue-router": "^5.0.4" }, "devDependencies": { "@types/express": "^5.0.6", "@types/node": "^25.5.2", + "@unhead/bundler": "workspace:*", + "@vitejs/devtools": "^0.1.13", "@vitejs/plugin-vue": "^6.0.5", "cross-env": "^10.1.0", "typescript": "5.8.3", - "vite": "^8.0.5", + "unplugin-auto-import": "^21.0.0", + "vite": "^8.0.8", "vue-tsc": "^3.2.6" } } diff --git a/examples/vite-ssr-vue/src/App.vue b/examples/vite-ssr-vue/src/App.vue index 7f29dec28..8d051dc09 100644 --- a/examples/vite-ssr-vue/src/App.vue +++ b/examples/vite-ssr-vue/src/App.vue @@ -1,36 +1,57 @@ <script setup lang="ts"> -// This starter template is using Vue 3 <script setup> SFCs -// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup -import HelloWorld from './components/HelloWorld.vue' -import { useHead } from '@unhead/vue' +import { RouterLink, RouterView } from 'vue-router' useHead({ - title: 'hello from app.vue' + titleTemplate: '%s | Unhead Demo', + templateParams: { + separator: '|', + }, + htmlAttrs: { lang: 'en' }, + meta: [ + { charset: 'utf-8' }, + { name: 'viewport', content: 'width=device-width, initial-scale=1' }, + { name: 'color-scheme', content: 'light dark' }, + { name: 'theme-color', content: '#4f46e5', media: '(prefers-color-scheme: light)' }, + { name: 'theme-color', content: '#818cf8', media: '(prefers-color-scheme: dark)' }, + ], + link: [ + { rel: 'icon', type: 'image/svg+xml', href: '/vite.svg' }, + { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/favicon-32x32.png' }, + { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' }, + ], }) </script> <template> - <div> - <a href="https://vite.dev" target="_blank"> - <img src="/vite.svg" class="logo" alt="Vite logo" /> - </a> - <a href="https://vuejs.org/" target="_blank"> - <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" /> - </a> - </div> - <HelloWorld msg="Vite + Vue" /> +<div id="layout"> + <nav class="site-nav"> + <RouterLink to="/">Home</RouterLink> + <RouterLink to="/about">About</RouterLink> + <RouterLink to="/blog">Blog</RouterLink> + <RouterLink to="/scripts">Scripts</RouterLink> + </nav> + <main> + <RouterView /> + </main> +</div> </template> <style scoped> -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; +.site-nav { + display: flex; + gap: 1rem; + padding: 1rem; + border-bottom: 1px solid #e5e7eb; } -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); +.site-nav a { + color: #4f46e5; + text-decoration: none; + font-weight: 500; } -.logo.vue:hover { - filter: drop-shadow(0 0 2em #42b883aa); +.site-nav a:hover { + text-decoration: underline; +} +main { + padding: 2rem; } </style> diff --git a/examples/vite-ssr-vue/src/components/HelloWorld.vue b/examples/vite-ssr-vue/src/components/HelloWorld.vue deleted file mode 100644 index 5f8819854..000000000 --- a/examples/vite-ssr-vue/src/components/HelloWorld.vue +++ /dev/null @@ -1,43 +0,0 @@ -<script setup lang="ts"> -import { ref } from 'vue' -import { useHead } from '@unhead/vue' - -defineProps<{ msg: string }>() - -const count = ref(0) - -useHead({ - title: () => count.value ? `Count: ${count.value}` : undefined, -}) -</script> - -<template> -<h1>{{ msg }}</h1> - -<div class="card"> - <button type="button" @click="count++">count is {{ count }}</button> - <p> - Edit - <code>components/HelloWorld.vue</code> to test HMR - </p> -</div> - -<p> - Check out - <a href="https://vuejs.org/guide/quick-start.html#local" target="_blank" - >create-vue</a - >, the official Vue + Vite starter -</p> -<p> - Install - <a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a> - in your IDE for a better DX -</p> -<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p> -</template> - -<style scoped> -.read-the-docs { - color: #888; -} -</style> diff --git a/examples/vite-ssr-vue/src/entry-client.ts b/examples/vite-ssr-vue/src/entry-client.ts index 4ddd79122..075826651 100644 --- a/examples/vite-ssr-vue/src/entry-client.ts +++ b/examples/vite-ssr-vue/src/entry-client.ts @@ -2,8 +2,10 @@ import './style.css' import { createApp } from './main' import { createHead } from '@unhead/vue/client' -const { app } = createApp() +const { app, router } = createApp() const head = createHead() app.use(head) -app.mount('#app') +router.isReady().then(() => { + app.mount('#app') +}) diff --git a/examples/vite-ssr-vue/src/entry-server.ts b/examples/vite-ssr-vue/src/entry-server.ts index f3ee11424..4b64c7c1f 100644 --- a/examples/vite-ssr-vue/src/entry-server.ts +++ b/examples/vite-ssr-vue/src/entry-server.ts @@ -1,19 +1,16 @@ import { renderToString } from 'vue/server-renderer' import { createApp } from './main' import { createHead } from '@unhead/vue/server' -import { useSeoMeta } from '@unhead/vue' -export async function render(_url: string) { - const { app } = createApp() +export async function render(url: string) { + const { app, router } = createApp() const head = createHead() app.use(head) - // no client-side hydration needed - useSeoMeta({ - title: 'My Awesome Site', - description: 'My awesome site description', - }, { head }) - const ctx = {} - const html = await renderToString(app, ctx) + + router.push(url) + await router.isReady() + + const html = await renderToString(app) return { html, head } } diff --git a/examples/vite-ssr-vue/src/main.ts b/examples/vite-ssr-vue/src/main.ts index ff091f8e0..0c0587f6f 100644 --- a/examples/vite-ssr-vue/src/main.ts +++ b/examples/vite-ssr-vue/src/main.ts @@ -1,10 +1,10 @@ import { createSSRApp } from 'vue' import App from './App.vue' +import { createRouter } from './router' -// SSR requires a fresh app instance per request, therefore we export a function -// that creates a fresh app instance. If using Vuex, we'd also be creating a -// fresh store here. export function createApp() { const app = createSSRApp(App) - return { app } + const router = createRouter() + app.use(router) + return { app, router } } diff --git a/examples/vite-ssr-vue/src/pages/AboutPage.vue b/examples/vite-ssr-vue/src/pages/AboutPage.vue new file mode 100644 index 000000000..6b4b82f70 --- /dev/null +++ b/examples/vite-ssr-vue/src/pages/AboutPage.vue @@ -0,0 +1,37 @@ +<script setup lang="ts"> +useHead({ + title: 'About', + link: [ + { rel: 'canonical', href: 'https://example.com/about' }, + ], +}) + +useSeoMeta({ + description: 'Learn more about the Unhead demo site and how it showcases head management features.', + ogTitle: 'About the Unhead Demo', + ogDescription: 'Learn more about the Unhead demo site.', + ogUrl: 'https://example.com/about', +}) + +useSchemaOrg([ + defineWebPage({ + '@type': 'AboutPage', + name: 'About the Unhead Demo', + description: 'Learn more about the Unhead demo site and how it showcases head management features.', + }), + defineBreadcrumb({ + itemListElement: [ + { name: 'Home', item: 'https://example.com/' }, + { name: 'About' }, + ], + }), +]) +</script> + +<template> + <div> + <h1>About</h1> + <p>This page exercises the Identity and Tags devtools tabs.</p> + <p>Check the Identity tab to see favicons, theme colors, and color scheme metadata configured in App.vue.</p> + </div> +</template> diff --git a/examples/vite-ssr-vue/src/pages/BlogPage.vue b/examples/vite-ssr-vue/src/pages/BlogPage.vue new file mode 100644 index 000000000..8e4afd0f1 --- /dev/null +++ b/examples/vite-ssr-vue/src/pages/BlogPage.vue @@ -0,0 +1,90 @@ +<script setup lang="ts"> +useHead({ + title: 'Blog Post: Getting Started with Unhead', + link: [ + { rel: 'canonical', href: 'https://example.com/blog' }, + ], +}) + +useSchemaOrg([ + defineArticle({ + '@type': 'BlogPosting', + 'headline': 'Getting Started with Unhead', + 'description': 'Learn how to manage document head tags with Unhead in your Vue application.', + 'datePublished': '2025-01-15', + 'dateModified': '2025-03-01', + 'image': 'https://unhead.unjs.io/og.png', + 'author': [ + definePerson({ + name: 'Harlan Wilton', + url: 'https://harlanzw.com', + }), + ], + }), + defineBreadcrumb({ + itemListElement: [ + { name: 'Home', item: 'https://example.com/' }, + { name: 'Blog' }, + ], + }), + defineQuestion({ + name: 'What is Unhead?', + acceptedAnswer: 'Unhead is a document head manager for any JavaScript framework.', + }), + defineQuestion({ + name: 'Does Unhead support SSR?', + acceptedAnswer: 'Yes, Unhead has first-class SSR support with streaming capabilities.', + }), +]) + +useSeoMeta({ + description: 'Learn how to manage document head tags with Unhead in your Vue application.', + ogTitle: 'Getting Started with Unhead', + ogDescription: 'Learn how to manage document head tags with Unhead.', + ogType: 'article', + ogUrl: 'https://example.com/blog', + ogImage: 'https://unhead.unjs.io/og.png', + articlePublishedTime: '2025-01-15', + articleModifiedTime: '2025-03-01', + articleAuthor: 'Harlan Wilton', +}) +</script> + +<template> + <div> + <h1>Getting Started with Unhead</h1> + <p class="meta">Published Jan 15, 2025 by Harlan Wilton</p> + + <article> + <p>This page demonstrates Schema.org structured data in the devtools.</p> + <p>Open the Schema.org tab to see BlogPosting, WebSite, BreadcrumbList, and FAQPage nodes.</p> + + <h2>FAQ</h2> + <dl> + <dt>What is Unhead?</dt> + <dd>Unhead is a document head manager for any JavaScript framework.</dd> + <dt>Does Unhead support SSR?</dt> + <dd>Yes, Unhead has first class SSR support with streaming capabilities.</dd> + </dl> + </article> + </div> +</template> + +<style scoped> +.meta { + color: #6b7280; + font-size: 0.875rem; +} +article { + margin-top: 1.5rem; + line-height: 1.7; +} +dt { + font-weight: 600; + margin-top: 1rem; +} +dd { + margin-left: 0; + color: #4b5563; +} +</style> diff --git a/examples/vite-ssr-vue/src/pages/HomePage.vue b/examples/vite-ssr-vue/src/pages/HomePage.vue new file mode 100644 index 000000000..5a416c6ed --- /dev/null +++ b/examples/vite-ssr-vue/src/pages/HomePage.vue @@ -0,0 +1,89 @@ +<script setup lang="ts"> +const count = ref(0) + +useHead({ + title: 'Home', + link: [ + { rel: 'canonical', href: 'https://example.com/' }, + ], +}) + +useSeoMeta({ + description: 'A demo site showcasing Unhead for Vue with SSR, featuring SEO meta tags, social sharing, and structured data.', + ogTitle: 'Unhead Demo: Head Management for Vue', + ogDescription: 'Explore powerful head management with Unhead. SSR support, social previews, and structured data out of the box.', + ogImage: 'https://unhead.unjs.io/og.png', + ogUrl: 'https://example.com/', + ogType: 'website', + ogSiteName: 'Unhead Demo', + twitterCard: 'summary_large_image', + twitterTitle: 'Unhead Demo: Head Management for Vue', + twitterDescription: 'Explore powerful head management with Unhead.', + twitterImage: 'https://unhead.unjs.io/og.png', +}) + +useSchemaOrg([ + defineWebSite({ + name: 'Unhead Demo', + url: 'https://example.com/', + inLanguage: 'en', + potentialAction: [ + defineSearchAction({ + target: { + '@type': 'EntryPoint', + urlTemplate: 'https://example.com/search?q={search_term_string}', + }, + }), + ], + }), + defineWebPage({ + '@type': 'WebPage', + name: 'Unhead Vite SSR Demo', + description: 'A demo site showcasing Unhead for Vue with SSR, featuring SEO meta tags, social sharing, and structured data.', + }), + defineOrganization({ + name: 'UnJS', + url: 'https://unjs.io', + logo: 'https://unhead.unjs.io/logo.png', + }), +]) + +// Client-only: analytics/tracking meta +if (typeof window !== 'undefined') { + useHead({ + meta: [ + { name: 'client-rendered', content: 'true' }, + ], + }) +} + +// Server-only: bot hints +if (typeof window === 'undefined') { + useHead({ + meta: [ + { name: 'server-timing', content: 'ssr;desc="Server Rendered"' }, + ], + }) +} +</script> + +<template> + <div> + <h1>Unhead Vite SSR Demo</h1> + <p>This page demonstrates social meta tags and SERP preview in devtools.</p> + + <div class="card"> + <button type="button" @click="count++">count is {{ count }}</button> + <p> + Edit + <code>pages/HomePage.vue</code> to test HMR + </p> + </div> + </div> +</template> + +<style scoped> +.card { + padding: 2rem; +} +</style> diff --git a/examples/vite-ssr-vue/src/pages/ScriptsPage.vue b/examples/vite-ssr-vue/src/pages/ScriptsPage.vue new file mode 100644 index 000000000..c53e8dcfe --- /dev/null +++ b/examples/vite-ssr-vue/src/pages/ScriptsPage.vue @@ -0,0 +1,52 @@ +<script setup lang="ts"> +useHead({ + title: 'Scripts Demo', +}) + +useScript('https://www.googletagmanager.com/gtag/js?id=G-DEMO123456', { + trigger: 'client', +}) + +const { $script: confetti } = useScript<{ confetti: (opts: any) => void }>({ + src: 'https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.3/dist/confetti.browser.min.js', +}, { + trigger: 'manual', + use: () => ({ confetti: window.confetti }), +}) + +function fireConfetti() { + confetti.load().then(() => { + window.confetti({ + particleCount: 150, + spread: 80, + origin: { y: 0.6 }, + }) + }) +} +</script> + +<template> + <div> + <h1>Scripts Demo</h1> + <p>This page demonstrates third-party script loading with <code>useScript</code>.</p> + + <div class="card"> + <h2>Google Analytics</h2> + <p>Loaded via <code>useScript</code> on client hydration. Check the network tab to verify.</p> + </div> + + <div class="card"> + <h2>Confetti</h2> + <p>Loaded manually on demand.</p> + <button type="button" @click="fireConfetti"> + Fire Confetti 🎉 + </button> + </div> + </div> +</template> + +<style scoped> +.card { + padding: 2rem; +} +</style> diff --git a/examples/vite-ssr-vue/src/router.ts b/examples/vite-ssr-vue/src/router.ts new file mode 100644 index 000000000..a3ac78764 --- /dev/null +++ b/examples/vite-ssr-vue/src/router.ts @@ -0,0 +1,33 @@ +import { + createRouter as _createRouter, + createMemoryHistory, + createWebHistory, +} from 'vue-router' + +const routes = [ + { + path: '/', + component: () => import('./pages/HomePage.vue'), + }, + { + path: '/about', + component: () => import('./pages/AboutPage.vue'), + }, + { + path: '/blog', + component: () => import('./pages/BlogPage.vue'), + }, + { + path: '/scripts', + component: () => import('./pages/ScriptsPage.vue'), + }, +] + +export function createRouter() { + return _createRouter({ + history: import.meta.env.SSR + ? createMemoryHistory() + : createWebHistory(), + routes, + }) +} diff --git a/examples/vite-ssr-vue/vite.config.ts b/examples/vite-ssr-vue/vite.config.ts index 91591fc3f..fb78ad241 100644 --- a/examples/vite-ssr-vue/vite.config.ts +++ b/examples/vite-ssr-vue/vite.config.ts @@ -1,17 +1,33 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' +import { DevTools } from '@vitejs/devtools' import { unheadVueComposablesImports } from '@unhead/vue' +import { schemaAutoImports } from '@unhead/schema-org' import AutoImport from 'unplugin-auto-import/vite' +import { Unhead } from '@unhead/vue/vite' // https://vite.dev/config/ export default defineConfig({ plugins: [ + DevTools(), AutoImport({ imports: [ unheadVueComposablesImports, 'vue', + 'vue-router', + { '@unhead/vue': ['useScript'] }, + { '@unhead/schema-org/vue': schemaAutoImports }, ], }), - vue() + vue(), + Unhead(), ], + optimizeDeps: { + include: ['vue-router'], + }, + devtools: { + enabled: true, + clientAuth: false, + clientAuthTokens: ['123'], + } }) diff --git a/packages-aliased/addons/src/vite.ts b/packages-aliased/addons/src/vite.ts index 3fc5d7889..d43fbefaf 100644 --- a/packages-aliased/addons/src/vite.ts +++ b/packages-aliased/addons/src/vite.ts @@ -1,4 +1,4 @@ console.warn('[unhead] `@unhead/addons/vite` is deprecated. Please migrate to `@unhead/bundler/vite` instead.') -export { default } from '@unhead/bundler/vite' -export * from '@unhead/bundler/vite' +export { Unhead as default } from '@unhead/bundler/vite' +export type * from '@unhead/bundler/vite' diff --git a/packages/bundler/README.md b/packages/bundler/README.md index a94922d42..8fa063f6c 100644 --- a/packages/bundler/README.md +++ b/packages/bundler/README.md @@ -31,13 +31,13 @@ pnpm add @unhead/bundler ### Vite Plugin ```ts -import UnheadVite from '@unhead/bundler/vite' // vite.config.ts import { defineConfig } from 'vite' +import { Unhead } from '@unhead/bundler/vite' export default defineConfig({ plugins: [ - UnheadVite({ + Unhead({ // Options }) ] @@ -48,11 +48,11 @@ export default defineConfig({ ```js // webpack.config.js -const UnheadWebpack = require('@unhead/bundler/webpack') +const { Unhead } = require('@unhead/bundler/webpack') module.exports = { plugins: [ - UnheadWebpack({ + Unhead({ // Options }) ] diff --git a/packages/bundler/build.config.ts b/packages/bundler/build.config.ts index 5d73f2434..ed7076187 100644 --- a/packages/bundler/build.config.ts +++ b/packages/bundler/build.config.ts @@ -10,6 +10,7 @@ export default defineBuildConfig({ { input: 'src/minify/rolldown', name: 'minify/rolldown' }, { input: 'src/minify/esbuild', name: 'minify/esbuild' }, { input: 'src/minify/lightningcss', name: 'minify/lightningcss' }, + { input: 'src/devtools/bridge', name: 'devtools/bridge' }, ], externals: [ 'vite', @@ -23,5 +24,8 @@ export default defineBuildConfig({ 'esbuild', 'lightningcss', 'rolldown', + '@vitejs/devtools-kit', + '@vitejs/devtools-kit/client', + '@unhead/devtools-app', ], }) diff --git a/packages/bundler/package.json b/packages/bundler/package.json index a0120d441..5e906cd6e 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -97,6 +97,7 @@ }, "dependencies": { "@rollup/pluginutils": "catalog:", + "@unhead/devtools-app": "workspace:*", "magic-string": "catalog:", "oxc-parser": "catalog:", "oxc-walker": "catalog:", @@ -104,6 +105,7 @@ "unplugin": "catalog:" }, "devDependencies": { + "@vitejs/devtools-kit": "catalog:", "rollup": "catalog:", "unhead": "workspace:*", "vite": "catalog:" diff --git a/packages/bundler/src/devtools/bridge.ts b/packages/bundler/src/devtools/bridge.ts new file mode 100644 index 000000000..16d710a42 --- /dev/null +++ b/packages/bundler/src/devtools/bridge.ts @@ -0,0 +1,388 @@ +import type { SeoOverview, SerializedScript, SerializedTag, SerializedValidationRule, TagRenderMode, UnheadDevtoolsState } from './rpc/types' + +const __UNHEAD_VERSION__ = '' // replaced at serve-time by the Vite plugin + +declare global { + interface Window { + __unhead__?: { + _head?: any + _q?: any[] + push?: (e: any) => void + } + __unhead_devtools__?: any + } +} + +function extractSeoOverview(tags: SerializedTag[], title: string): SeoOverview { + const seo: SeoOverview = { + title, + description: '', + canonical: '', + robots: '', + ogTitle: '', + ogDescription: '', + ogImage: '', + } + for (const t of tags) { + if (t.tag === 'meta') { + const name = t.props.name + const property = t.props.property + const content = t.props.content || '' + if (name === 'description') + seo.description = content + else if (name === 'robots') + seo.robots = content + else if (property === 'og:title') + seo.ogTitle = content + else if (property === 'og:description') + seo.ogDescription = content + else if (property === 'og:image') + seo.ogImage = content + } + else if (t.tag === 'link' && t.props.rel === 'canonical') { + seo.canonical = t.props.href || '' + } + } + return seo +} + +/** + * Serializes a value preserving type information for non-serializable types. + * Functions become "ƒ functionName()", null stays null, undefined becomes "⊘ undefined". + */ +function safeSerialize(value: any, seen = new WeakSet()): any { + if (value === null) + return null + if (value === undefined) + return '⊘ undefined' + if (typeof value === 'function') + return `ƒ ${value.name || 'anonymous'}()` + if (typeof value === 'symbol') + return `Symbol(${value.description || ''})` + if (typeof value !== 'object') + return value + if (seen.has(value)) + return '⊘ circular' + seen.add(value) + if (Array.isArray(value)) + return value.map(v => safeSerialize(v, seen)) + const result: Record<string, any> = {} + for (const key in value) { + if (key === '__proto__' || key === 'constructor' || key === 'prototype') + continue + result[key] = safeSerialize(value[key], seen) + } + return result +} + +function resolveEntryMode(entry: any, wasSSR: boolean, ssrSources: Set<string>): TagRenderMode { + if (entry._devtoolsMode) + return entry._devtoolsMode + if (!wasSSR) + return 'client' + // Match against SSR payload sources to determine if this entry was server-rendered + const source = entry.options?._source + if (source && ssrSources.has(source)) + return 'hydrated' + return 'client' +} + +function readSSRDevtoolsPayload(): { entries: any[], tags?: any[] } | null { + const el = document.head.querySelector('script[id="unhead:devtools"]') + if (!el?.innerHTML) + return null + try { + return JSON.parse(el.innerHTML) + } + catch { + return null + } +} + +function serializeHeadState(head: any, wasSSR = false, ssrPayload: { entries: any[], tags?: any[] } | null = null): UnheadDevtoolsState { + const entries: UnheadDevtoolsState['entries'] = [] + const allTags: UnheadDevtoolsState['tags'] = [] + const tagTypeCounts: Record<string, number> = {} + const weightFn = head.resolvedOptions?._tagWeight || ((tag: any) => typeof tag.tagPriority === 'number' ? tag.tagPriority : 100) + + // Build set of sources that existed on the server + const ssrSources = new Set<string>() + if (ssrPayload?.entries) { + for (const e of ssrPayload.entries) { + if (e.source) + ssrSources.add(e.source) + } + } + + // Collect client entry IDs to find server-only entries + const clientEntryIds = new Set<number>() + + if (head.entries) { + for (const [id, entry] of head.entries) { + clientEntryIds.add(id) + const tags = entry._tags || [] + const mode = resolveEntryMode(entry, wasSSR, ssrSources) + entries.push({ + id, + source: entry.options?._source, + input: safeSerialize(entry.input || {}), + tagCount: tags.length, + mode, + }) + for (const tag of tags) { + const tagName = tag.tag + tagTypeCounts[tagName] = (tagTypeCounts[tagName] || 0) + 1 + const weight = tag._w ?? weightFn(tag) + allTags.push({ + tag: tagName, + props: { ...tag.props }, + innerHTML: tag.innerHTML, + textContent: tag.textContent, + position: tag.tagPosition, + priority: weight, + order: tag._p, + dedupeKey: tag._d, + source: tag._source || entry.options?._source, + mode, + }) + } + } + } + + // Patch JSON-LD tags with resolved innerHTML from the DOM. + // The schema-org plugin sets innerHTML during tags:resolve which operates + // on copies, so entry._tags never receives it. + for (const el of document.querySelectorAll('script[type="application/ld+json"]')) { + if (el.id === 'unhead:devtools' || el.id === 'unhead:payload') + continue + const innerHTML = el.innerHTML + if (!innerHTML) + continue + // Find the matching serialized tag and patch it + const dedupeKey = el.getAttribute('data-hid') || '' + const matched = allTags.find( + t => t.tag === 'script' && t.props.type === 'application/ld+json' && !t.innerHTML + && (dedupeKey ? (t.dedupeKey?.includes(dedupeKey) || t.props['data-hid'] === dedupeKey) : true), + ) + if (matched) { + matched.innerHTML = innerHTML + } + else { + // DOM has a JSON-LD script not in entry._tags (e.g. fully plugin-managed) + allTags.push({ + tag: 'script', + props: { type: 'application/ld+json', ...(dedupeKey ? { 'data-hid': dedupeKey } : {}) }, + innerHTML, + mode: 'client' as TagRenderMode, + } as any) + tagTypeCounts.script = (tagTypeCounts.script || 0) + 1 + } + } + + // Merge server-only data from SSR payload + if (ssrPayload) { + // Server-only entries + if (ssrPayload.entries) { + for (const ssrEntry of ssrPayload.entries) { + if (!clientEntryIds.has(ssrEntry.id)) { + entries.push({ + id: ssrEntry.id, + source: ssrEntry.source, + input: ssrEntry.input || {}, + tagCount: ssrEntry.tagCount, + mode: 'server' as TagRenderMode, + }) + } + } + } + // Server-only tags (not present in client) + if (ssrPayload.tags) { + const tagFingerprint = (t: any) => t.dedupeKey || `${t.tag}:${JSON.stringify(t.props || {})}` + const clientTagKeys = new Set(allTags.map(t => tagFingerprint(t))) + for (const ssrTag of ssrPayload.tags) { + if (clientTagKeys.has(tagFingerprint(ssrTag))) + continue + const tagName = ssrTag.tag + tagTypeCounts[tagName] = (tagTypeCounts[tagName] || 0) + 1 + allTags.push({ + tag: tagName, + props: ssrTag.props || {}, + innerHTML: ssrTag.innerHTML, + textContent: ssrTag.textContent, + position: ssrTag.position, + priority: ssrTag.priority, + dedupeKey: ssrTag.dedupeKey, + source: ssrTag.source, + mode: 'server' as TagRenderMode, + }) + } + } + } + + const plugins: string[] = [] + if (head.plugins) { + for (const [key] of head.plugins) { + plugins.push(key) + } + } + + const scripts: SerializedScript[] = [] + if (head._scripts) { + for (const [id, script] of Object.entries(head._scripts)) { + const s = script as any + scripts.push({ + id, + src: s.src || s.input?.src || '', + status: s.status || 'unknown', + warmupStrategy: s._warmupEl ? (s._warmupStrategy || 'preload') : undefined, + events: s._events || [], + fetchpriority: s.input?.fetchpriority, + crossorigin: s.input?.crossorigin, + defer: s.input?.defer, + async: s.input?.async, + }) + } + } + + let templateParams: Record<string, any> | null = null + if (head._templateParams) { + try { + templateParams = JSON.parse(JSON.stringify(head._templateParams)) + } + catch {} + } + + const title = head._title || document.title || '' + + // Read validation rules stored by ValidatePlugin (if active) + const validationRules: SerializedValidationRule[] = (head._validationRules || []).map((r: any) => ({ + id: r.id, + message: r.message, + severity: r.severity, + source: r.source, + tagDedupeKey: r.tag?._d || r.tag?._h || undefined, + })) + + return { + version: __UNHEAD_VERSION__, + entries, + tags: allTags.sort((a, b) => (a.priority ?? 100) === (b.priority ?? 100) ? (a.order ?? 0) - (b.order ?? 0) : (a.priority ?? 100) - (b.priority ?? 100)), + plugins, + title, + scripts, + seo: extractSeoOverview(allTags, title), + titleTemplate: head._titleTemplate + ? (typeof head._titleTemplate === 'function' ? String(head._titleTemplate) : head._titleTemplate) + : null, + templateParams, + separator: head._separator || '|', + ssr: !!head.ssr, + dirty: !!head.dirty, + domElementCount: head._dom?._e?.size || 0, + tagTypeCounts, + validationRules, + } +} + +function detectSSR(): boolean { + // Check if the page has server-rendered head elements (meta/link with content) + const headEl = document.head + return !!( + headEl.querySelector('meta[name="description"]') + || headEl.querySelector('meta[property]') + || headEl.querySelector('link[rel="canonical"]') + || headEl.querySelector('script[id="unhead:payload"]') + ) +} + +function connectBridge(head: any) { + let sharedState: any + + const wasSSR = detectSSR() + const ssrPayload = readSSRDevtoolsPayload() + + function syncToSharedState() { + if (!sharedState) + return + const newState = serializeHeadState(head, wasSSR, ssrPayload) + sharedState.mutate((draft: any) => { + Object.assign(draft, newState) + }) + } + + async function init() { + const { getDevToolsClientContext } = await import('@vitejs/devtools-kit/client') + + // Retry until DevTools client context is available + let ctx = getDevToolsClientContext() + if (!ctx) { + let retries = 0 + await new Promise<void>((resolve) => { + const timer = globalThis.setInterval(() => { + ctx = getDevToolsClientContext() + if (ctx || ++retries > 50) { + globalThis.clearInterval(timer) + if (!ctx) + console.warn('[unhead bridge] gave up waiting for DevTools context after 50 retries') + resolve() + } + }, 100) + }) + } + if (!ctx) { + console.warn('[unhead bridge] no DevTools client context, aborting') + return + } + + sharedState = await (ctx.rpc.sharedState as any).get('unhead:state', { + initialValue: serializeHeadState(head, wasSSR, ssrPayload), + }) + + if (head.hooks) + head.hooks.hook('dom:rendered', syncToSharedState) + + // Initial sync after a short delay to capture early entries + setTimeout(syncToSharedState, 500) + } + + init().catch((err) => { + console.error('[unhead bridge] init failed:', err) + }) +} + +function findHead(): any { + // 1. Streaming plugin pattern: window.__unhead__._head + if (window.__unhead__?._head) + return window.__unhead__._head + + // 2. Devtools-exposed pattern: window.__unhead_devtools__ + if (window.__unhead_devtools__) + return window.__unhead_devtools__ + + return null +} + +function pollForHead() { + let attempts = 0 + const handle = globalThis.setInterval(() => { + const h = findHead() + if (h) { + globalThis.clearInterval(handle) + connectBridge(h) + } + if (++attempts > 50) { + globalThis.clearInterval(handle) + console.warn('[unhead bridge] gave up polling for head after 50 attempts') + } + }, 100) +} + +if (typeof window !== 'undefined') { + const head = findHead() + if (head) { + connectBridge(head) + } + else { + pollForHead() + } +} diff --git a/packages/bundler/src/devtools/plugin.ts b/packages/bundler/src/devtools/plugin.ts new file mode 100644 index 000000000..ab7e4b097 --- /dev/null +++ b/packages/bundler/src/devtools/plugin.ts @@ -0,0 +1,75 @@ +import type { HeadPluginInput } from 'unhead/types' + +/** + * Unhead plugin that propagates source location metadata from entry options to tags. + * + * On the server, it also serializes the full devtools state into a + * `<script id="unhead:devtools">` payload so the client bridge can display + * server-only entries. + */ +export function devtoolsPlugin(): HeadPluginInput { + return (head: any) => { + return { + key: 'devtools', + hooks: { + 'entries:normalize': function ({ tags, entry }: { tags: any[], entry: any }) { + const source = entry.options?._source + if (!source) + return + for (const tag of tags) { + if (!tag._source) + tag._source = source + } + }, + 'tags:resolve': function (ctx: any) { + if (!head.ssr) + return + // Serialize SSR entries into a payload for the client bridge + const entries: any[] = [] + for (const [id, entry] of head.entries) { + let input: Record<string, any> = {} + try { + input = JSON.parse(JSON.stringify(entry.input || {}, (_k, v) => { + if (typeof v === 'function') + return `ƒ ${v.name || 'anonymous'}()` + if (typeof v === 'undefined') + return '⊘ undefined' + return v + })) + } + catch {} + entries.push({ + id, + source: entry.options?._source, + input, + tagCount: (entry._tags || []).length, + mode: 'server', + }) + } + // Serialize resolved tags (exclude the devtools payload script itself) + const tags: any[] = [] + for (const tag of ctx.tags) { + if (tag.props?.id === 'unhead:devtools' || tag.props?.id === 'unhead:payload') + continue + tags.push({ + tag: tag.tag, + props: { ...tag.props }, + innerHTML: tag.innerHTML, + textContent: tag.textContent, + position: tag.tagPosition, + priority: tag._w, + dedupeKey: tag._d, + source: tag._source, + mode: 'server', + }) + } + ctx.tags.push({ + tag: 'script', + innerHTML: JSON.stringify({ entries, tags }), + props: { id: 'unhead:devtools', type: 'application/json' }, + }) + }, + }, + } + } +} diff --git a/packages/bundler/src/devtools/rpc/functions/get-config.ts b/packages/bundler/src/devtools/rpc/functions/get-config.ts new file mode 100644 index 000000000..c01c445f1 --- /dev/null +++ b/packages/bundler/src/devtools/rpc/functions/get-config.ts @@ -0,0 +1,12 @@ +import { defineRpcFunction } from '@vitejs/devtools-kit' + +export const getConfigRpc = defineRpcFunction({ + name: 'unhead:get-config', + type: 'static', + setup: ctx => ({ + handler: () => ({ + cwd: ctx.cwd, + mode: ctx.mode, + }), + }), +}) diff --git a/packages/bundler/src/devtools/rpc/index.ts b/packages/bundler/src/devtools/rpc/index.ts new file mode 100644 index 000000000..581c788d1 --- /dev/null +++ b/packages/bundler/src/devtools/rpc/index.ts @@ -0,0 +1 @@ +export { getConfigRpc } from './functions/get-config' diff --git a/packages/bundler/src/devtools/rpc/types.ts b/packages/bundler/src/devtools/rpc/types.ts new file mode 100644 index 000000000..b484fe171 --- /dev/null +++ b/packages/bundler/src/devtools/rpc/types.ts @@ -0,0 +1,70 @@ +export type TagRenderMode = 'server' | 'client' | 'hydrated' + +export interface SerializedEntry { + id: number + source?: string + input: Record<string, any> + tagCount: number + mode: TagRenderMode +} + +export interface SerializedTag { + tag: string + props: Record<string, string> + innerHTML?: string + textContent?: string + position?: string + priority?: number + order?: number + dedupeKey?: string + source?: string + mode: TagRenderMode +} + +export interface SerializedScript { + id: string + src: string + status: string + warmupStrategy?: string + events: { type: string, timestamp: number }[] + fetchpriority?: string + crossorigin?: string + defer?: boolean + async?: boolean +} + +export interface SeoOverview { + title: string + description: string + canonical: string + robots: string + ogTitle: string + ogDescription: string + ogImage: string +} + +export interface SerializedValidationRule { + id: string + message: string + severity: 'warn' | 'info' + source?: string + tagDedupeKey?: string +} + +export interface UnheadDevtoolsState { + version: string + entries: SerializedEntry[] + tags: SerializedTag[] + plugins: string[] + title: string + scripts: SerializedScript[] + seo: SeoOverview + titleTemplate: string | null + templateParams: Record<string, any> | null + separator: string + ssr: boolean + dirty: boolean + domElementCount: number + tagTypeCounts: Record<string, number> + validationRules: SerializedValidationRule[] +} diff --git a/packages/bundler/src/devtools/vite.ts b/packages/bundler/src/devtools/vite.ts new file mode 100644 index 000000000..2e84a033a --- /dev/null +++ b/packages/bundler/src/devtools/vite.ts @@ -0,0 +1,199 @@ +/// <reference types="@vitejs/devtools-kit" /> +import type { Plugin } from 'vite' +import type { HeadTransformContext } from '../unplugin/CreateHeadTransform' +import type { UnheadDevtoolsOptions } from '../unplugin/types' +import { existsSync, readFileSync } from 'node:fs' +import { resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import MagicString from 'magic-string' +import { parseAndWalk } from 'oxc-walker' +import { getConfigRpc } from './rpc' + +const HEAD_COMPOSABLES = ['useHead', 'useSeoMeta', 'useHeadSafe', 'useScript'] +const FILE_RE = /\.(vue|tsx?|jsx?|svelte)$/ +const LEADING_SLASH_RE = /^\// + +const UNHEAD_ICON = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3E%3Cstop offset='0%25' stop-color='%23FBBF24'/%3E%3Cstop offset='100%25' stop-color='%23f0db4f'/%3E%3C/linearGradient%3E%3Cmask id='m'%3E%3Crect width='100%25' height='100%25' fill='white'/%3E%3Cpath d='M12 32 L1 32 L15 15 Z' fill='black'/%3E%3C/mask%3E%3C/defs%3E%3Cpath fill='none' stroke='url(%23g)' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 4v14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4' mask='url(%23m)'/%3E%3C/svg%3E` + +const DEVTOOLS_UI_ROUTE = '/__unhead/' + +/** + * Transforms source code to inject `_source` metadata into head composable calls. + */ +function transformSourceLocations(code: string, id: string, root: string): { code: string, map: any } | undefined { + if (!HEAD_COMPOSABLES.some(c => code.includes(c))) + return + + const s = new MagicString(code) + let transformed = false + + const relativePath = id.startsWith(root) + ? id.slice(root.length).replace(LEADING_SLASH_RE, '') + : id + + parseAndWalk(code, id, { + parseOptions: { lang: 'ts' }, + enter(node: any) { + if (node.type !== 'CallExpression') + return + const callee = node.callee + if (!callee) + return + + const name = callee.type === 'Identifier' + ? callee.name + : callee.type === 'MemberExpression' && callee.property?.type === 'Identifier' + ? callee.property.name + : null + + if (!name || !HEAD_COMPOSABLES.includes(name)) + return + + const args = node.arguments + if (!args || args.length === 0) + return + + const lineNumber = code.slice(0, node.start).split('\n').length + const sourceValue = `${relativePath}:${lineNumber}` + + if (args.length === 1) { + const argEnd = args[0].end + s.appendRight(argEnd, `, { _source: ${JSON.stringify(sourceValue)} }`) + transformed = true + } + else if (args.length >= 2 && args[1].type === 'ObjectExpression') { + const objStart = args[1].start + 1 + s.appendRight(objStart, ` _source: ${JSON.stringify(sourceValue)},`) + transformed = true + } + }, + }) + + if (!transformed) + return + + return { + code: s.toString(), + map: s.generateMap({ includeContent: true, source: id }), + } +} + +export interface UnheadDevtoolsInternalOptions extends UnheadDevtoolsOptions { + _ctx?: HeadTransformContext +} + +export function unheadDevtools(options?: UnheadDevtoolsInternalOptions): Plugin { + let root = '' + let enabled = false + let bridgeCode: string | undefined + let unheadVersion = '' + const pkgDir = fileURLToPath(new URL('..', import.meta.url)) + + return { + name: '@unhead/devtools', + apply: 'serve', + + configResolved(config) { + root = config.root + enabled = config.plugins.some(p => p.name?.startsWith('vite:devtools')) + if (!enabled) + return + + // Register runtime plugins via the shared context + if (options?._ctx) { + options._ctx.addRuntimePlugin({ + import: { name: 'devtoolsPlugin', source: '@unhead/bundler', as: '__unhead_devtoolsPlugin' }, + client: 'window.__unhead_devtools__=_h', + server: '_h.use(__unhead_devtoolsPlugin())', + }) + } + + // Resolve unhead version for the devtools UI + try { + const unheadPkg = resolve(pkgDir, 'node_modules/unhead/package.json') + if (existsSync(unheadPkg)) + unheadVersion = JSON.parse(readFileSync(unheadPkg, 'utf-8')).version || '' + } + catch {} + + const bridgePath = resolve(pkgDir, 'dist/devtools/bridge.mjs') + if (existsSync(bridgePath)) + bridgeCode = readFileSync(bridgePath, 'utf-8') + }, + + configureServer(server) { + if (!enabled) + return + // Bridge middleware + server.middlewares.use('/@unhead/bridge.mjs', async (_req, res) => { + const result = await server.transformRequest('/@unhead/bridge.mjs') + res.setHeader('Content-Type', 'application/javascript') + res.end(result?.code || 'console.warn("[unhead devtools] bridge not built")') + }) + }, + + resolveId(id) { + if (!enabled) + return + if (id === '/@unhead/bridge.mjs') + return id + }, + + load(id) { + if (!enabled || id !== '/@unhead/bridge.mjs') + return + if (!bridgeCode) + return 'console.warn("[unhead devtools] bridge not built")' + let code = bridgeCode + // Inject unhead version + if (unheadVersion) + code = code.replace(`__UNHEAD_VERSION__ = ''`, `__UNHEAD_VERSION__ = '${unheadVersion}'`) + const kitClientPath = resolve(pkgDir, 'node_modules/@vitejs/devtools-kit/dist/client.js') + if (existsSync(kitClientPath)) + return code.replace(`'@vitejs/devtools-kit/client'`, `'${kitClientPath}'`) + return code + }, + + transform: { + filter: { id: FILE_RE }, + handler(code, id) { + if (!enabled) + return + return transformSourceLocations(code, id, root) + }, + }, + + transformIndexHtml() { + if (!enabled) + return [] + return [{ + tag: 'script', + attrs: { type: 'module' }, + children: `import("/@unhead/bridge.mjs")`, + injectTo: 'body', + }] + }, + + devtools: { + setup(ctx) { + // devtools-app dist is in a sibling package + const clientPath = resolve(pkgDir, 'node_modules/@unhead/devtools-app/dist') + if (existsSync(clientPath)) { + ctx.views.hostStatic(DEVTOOLS_UI_ROUTE, clientPath) + } + + ctx.docks.register({ + id: 'unhead', + title: 'Unhead', + icon: UNHEAD_ICON, + type: 'iframe', + url: DEVTOOLS_UI_ROUTE, + }) + + ctx.rpc.register(getConfigRpc) + }, + }, + } +} + +export default unheadDevtools diff --git a/packages/bundler/src/index.ts b/packages/bundler/src/index.ts index 014378dca..d8cacf62b 100644 --- a/packages/bundler/src/index.ts +++ b/packages/bundler/src/index.ts @@ -1,3 +1,4 @@ export * from './constants' +export { devtoolsPlugin } from './devtools/plugin' export { InferSeoMetaPlugin } from 'unhead/plugins' diff --git a/packages/bundler/src/unplugin/CreateHeadTransform.ts b/packages/bundler/src/unplugin/CreateHeadTransform.ts new file mode 100644 index 000000000..cc061547d --- /dev/null +++ b/packages/bundler/src/unplugin/CreateHeadTransform.ts @@ -0,0 +1,104 @@ +import type { Plugin } from 'vite' +import MagicString from 'magic-string' +import { parseAndWalk } from 'oxc-walker' + +const HEAD_FACTORIES = ['createHead'] +const FILE_RE = /\.(vue|tsx?|jsx?|svelte)$/ + +export interface RuntimePluginRegistration { + /** Import to inject */ + import: { name: string, source: string, as: string } + /** Expression using `_h` (the head instance). Only emitted in client builds. */ + client?: string + /** Expression using `_h` (the head instance). Only emitted in server builds. */ + server?: string +} + +export interface HeadTransformContext { + addRuntimePlugin: (reg: RuntimePluginRegistration) => void + getRegistrations: () => RuntimePluginRegistration[] +} + +export function createHeadTransformContext(): HeadTransformContext { + const registrations: RuntimePluginRegistration[] = [] + return { + addRuntimePlugin(reg) { + registrations.push(reg) + }, + getRegistrations() { + return registrations + }, + } +} + +export function CreateHeadTransform(ctx: HeadTransformContext): Plugin { + let root = '' + + return { + name: '@unhead/create-head-transform', + apply: 'serve', + + configResolved(config) { + root = config.root + }, + + transform: { + filter: { id: FILE_RE }, + handler(code, id) { + const registrations = ctx.getRegistrations() + if (!registrations.length) + return + if (!HEAD_FACTORIES.some(f => code.includes(f))) + return + + const isServer = this.environment?.config?.consumer === 'server' + const envRegistrations = registrations.filter(r => isServer ? r.server : r.client) + if (!envRegistrations.length) + return + + const s = new MagicString(code) + let transformed = false + + parseAndWalk(code, id, { + parseOptions: { lang: 'ts' }, + enter(node: any) { + if (node.type !== 'CallExpression') + return + const callee = node.callee + if (!callee) + return + + const name = callee.type === 'Identifier' + ? callee.name + : callee.type === 'MemberExpression' && callee.property?.type === 'Identifier' + ? callee.property.name + : null + + if (!name || !HEAD_FACTORIES.includes(name)) + return + + const statements = envRegistrations + .map(r => (isServer ? r.server! : r.client!).replace(/__ROOT__/g, JSON.stringify(root))) + .join(',') + + s.prependLeft(node.start, `((_h)=>(${statements},_h))(`) + s.appendRight(node.end, `)`) + transformed = true + }, + }) + + if (!transformed) + return + + for (const reg of envRegistrations) { + s.prepend(`import { ${reg.import.name} as ${reg.import.as} } from '${reg.import.source}';\n`) + } + + return { + code: s.toString(), + map: s.generateMap({ includeContent: true, source: id }), + } + }, + }, + } +} diff --git a/packages/bundler/src/unplugin/SSRStaticReplace.ts b/packages/bundler/src/unplugin/SSRStaticReplace.ts new file mode 100644 index 000000000..ea1030f83 --- /dev/null +++ b/packages/bundler/src/unplugin/SSRStaticReplace.ts @@ -0,0 +1,51 @@ +import type { ConfigEnv, UserConfig } from 'vite' +import MagicString from 'magic-string' +import { createUnplugin } from 'unplugin' + +const UNHEAD_MODULE_RE = /[\\/]node_modules[\\/](?:@unhead[\\/][^\\/]+|unhead)[\\/]/ +const HEAD_SSR_RE = /\bhead\.ssr\b/g +const JS_RE = /\.(?:c|m)?js$/ + +export const SSRStaticReplace = createUnplugin<Record<string, never>, false>(() => { + let ssr = false + + return { + name: 'unhead:ssr-static-replace', + enforce: 'pre', + + transformInclude(id) { + if (!UNHEAD_MODULE_RE.test(id)) + return false + return JS_RE.test(id) + }, + + transform(code) { + if (!code.includes('head.ssr')) + return + + const s = new MagicString(code) + for (const match of code.matchAll(HEAD_SSR_RE)) { + s.overwrite(match.index!, match.index! + match[0].length, String(ssr)) + } + + if (s.hasChanged()) { + return { + code: s.toString(), + map: s.generateMap({ includeContent: true }), + } + } + }, + + webpack(ctx) { + if (ctx.name === 'server') + ssr = true + }, + vite: { + apply(_config: UserConfig, env: ConfigEnv) { + if (env.isSsrBuild) + ssr = true + return false + }, + }, + } +}) diff --git a/packages/bundler/src/unplugin/UseSeoMetaTransform.ts b/packages/bundler/src/unplugin/UseSeoMetaTransform.ts index 99a2e8d58..b003f06a3 100644 --- a/packages/bundler/src/unplugin/UseSeoMetaTransform.ts +++ b/packages/bundler/src/unplugin/UseSeoMetaTransform.ts @@ -159,8 +159,13 @@ export const UseSeoMetaTransform = createUnplugin<UseSeoMetaTransformOptions, fa } } if (originalName === 'useServerSeoMeta') { - if (output.length) - output.push('});') + if (output.length) { + const secondArg = node.arguments[1] + if (secondArg) + output.push(`}, ${code.substring(secondArg.start, secondArg.end)});`) + else + output.push('});') + } output.push('useServerHead({') } @@ -233,7 +238,14 @@ export const UseSeoMetaTransform = createUnplugin<UseSeoMetaTransformOptions, fa if (output) { if (meta.length) output.push(' ]') - output.push('})') + // Preserve the second argument (options like { head }) if present + if (node.arguments.length >= 2) { + const optionsArg = code.substring(node.arguments[1].start, node.arguments[1].end) + output.push(`}, ${optionsArg})`) + } + else { + output.push('})') + } s.overwrite(node.start, node.end, output.join('\n')) // Track import for rewriting diff --git a/packages/bundler/src/unplugin/types.ts b/packages/bundler/src/unplugin/types.ts index d83b46f4e..793830fcb 100644 --- a/packages/bundler/src/unplugin/types.ts +++ b/packages/bundler/src/unplugin/types.ts @@ -15,3 +15,14 @@ export interface UnpluginOptions extends BaseTransformerTypes { transformSeoMeta?: UseSeoMetaTransformOptions | false minify?: MinifyTransformOptions | false } + +export interface VitePluginOptions extends UnpluginOptions { + /** Vite DevTools integration (dev-only). Enabled by default, set `false` to disable. */ + devtools?: UnheadDevtoolsOptions | false + /** Inject ValidatePlugin in dev to surface head tag warnings in the console. Enabled by default, set `false` to disable. */ + validate?: boolean + /** @internal */ + _framework?: string +} + +export interface UnheadDevtoolsOptions {} diff --git a/packages/bundler/src/unplugin/vite.ts b/packages/bundler/src/unplugin/vite.ts index 1884209a6..25ac196cd 100644 --- a/packages/bundler/src/unplugin/vite.ts +++ b/packages/bundler/src/unplugin/vite.ts @@ -1,13 +1,19 @@ import type { Plugin } from 'vite' -import type { UnpluginOptions } from './types' +import type { VitePluginOptions } from './types' +import { unheadDevtools } from '../devtools/vite' +import { CreateHeadTransform, createHeadTransformContext } from './CreateHeadTransform' import { MinifyTransform } from './MinifyTransform' +import { SSRStaticReplace } from './SSRStaticReplace' import { TreeshakeServerComposables } from './TreeshakeServerComposables' import { UseSeoMetaTransform } from './UseSeoMetaTransform' -export type { UnpluginOptions } +export type { VitePluginOptions } -export default (options: UnpluginOptions = {}): Plugin[] => { +export function Unhead(options: VitePluginOptions = {}): Plugin[] { const plugins: Plugin[] = [] + const ctx = createHeadTransformContext() + const framework = options._framework + if (options.treeshake !== false) { const treeshakeOpts = typeof options.treeshake === 'object' ? options.treeshake : {} plugins.push(TreeshakeServerComposables.vite({ filter: options.filter, sourcemap: options.sourcemap, ...treeshakeOpts })) @@ -22,5 +28,27 @@ export default (options: UnpluginOptions = {}): Plugin[] => { plugins.push(MinifyTransform.vite({ filter: options.filter, sourcemap: options.sourcemap, ...minifyOpts })) } } + + // Register runtime plugins into the shared context + if (options.validate !== false) { + const pluginsSource = framework ? `${framework}/plugins` : 'unhead/plugins' + ctx.addRuntimePlugin({ + import: { name: 'ValidatePlugin', source: pluginsSource, as: '__unhead_validate' }, + client: '_h.use(__unhead_validate({ root: __ROOT__ }))', + }) + } + + // Devtools registers its own runtime plugins via ctx during configResolved + if (options.devtools !== false) { + const devtoolsOpts = typeof options.devtools === 'object' ? options.devtools : {} + plugins.push(unheadDevtools({ ...devtoolsOpts, _ctx: ctx })) + } + + // Replace head.ssr with static boolean for tree-shaking + plugins.push(SSRStaticReplace.vite({})) + + // Single transform handles all createHead() wrapping + plugins.push(CreateHeadTransform(ctx)) + return plugins } diff --git a/packages/bundler/src/unplugin/webpack.ts b/packages/bundler/src/unplugin/webpack.ts index d4e9e78f6..5f69184da 100644 --- a/packages/bundler/src/unplugin/webpack.ts +++ b/packages/bundler/src/unplugin/webpack.ts @@ -1,11 +1,12 @@ import type { UnpluginOptions } from './types' import { MinifyTransform } from './MinifyTransform' +import { SSRStaticReplace } from './SSRStaticReplace' import { TreeshakeServerComposables } from './TreeshakeServerComposables' import { UseSeoMetaTransform } from './UseSeoMetaTransform' export type { UnpluginOptions } -export default (options: UnpluginOptions = {}) => { +export function Unhead(options: UnpluginOptions = {}) { const plugins: any[] = [] if (options.treeshake !== false) { const treeshakeOpts = typeof options.treeshake === 'object' ? options.treeshake : {} @@ -21,5 +22,6 @@ export default (options: UnpluginOptions = {}) => { plugins.push(MinifyTransform.webpack({ filter: options.filter, sourcemap: options.sourcemap, ...minifyOpts })) } } + plugins.push(SSRStaticReplace.webpack({})) return plugins } diff --git a/packages/bundler/test/createHeadTransform.test.ts b/packages/bundler/test/createHeadTransform.test.ts new file mode 100644 index 000000000..1444812d0 --- /dev/null +++ b/packages/bundler/test/createHeadTransform.test.ts @@ -0,0 +1,125 @@ +import { describe, expect, it } from 'vitest' +import { CreateHeadTransform, createHeadTransformContext } from '../src/unplugin/CreateHeadTransform' + +function createPlugin(registrations: Parameters<ReturnType<typeof createHeadTransformContext>['addRuntimePlugin']>[0][], consumer: 'client' | 'server' = 'client') { + const ctx = createHeadTransformContext() + for (const reg of registrations) + ctx.addRuntimePlugin(reg) + const plugin = CreateHeadTransform(ctx) as any + // Simulate configResolved + plugin.configResolved({ root: '/project' }) + const mockContext = { + environment: { config: { consumer } }, + } + return { + transform(code: string, id = 'entry.ts') { + return plugin.transform.handler.call(mockContext, code, id) + }, + } +} + +describe('createHeadTransform', () => { + it('ignores files without createHead', async () => { + const { transform } = createPlugin([{ + import: { name: 'ValidatePlugin', source: '@unhead/vue/plugins', as: '__validate' }, + client: '_h.use(__validate())', + }]) + expect(await transform('const x = 1')).toBeUndefined() + }) + + // Note: non-JS file filtering is handled by Vite's transform.filter.id at runtime, + // not by the handler itself, so we don't test it here. + + it('does nothing when no registrations exist', async () => { + const { transform } = createPlugin([]) + expect(await transform('const head = createHead()')).toBeUndefined() + }) + + it('wraps createHead with client plugin on client', async () => { + const { transform } = createPlugin([{ + import: { name: 'ValidatePlugin', source: '@unhead/vue/plugins', as: '__validate' }, + client: '_h.use(__validate({ root: __ROOT__ }))', + }], 'client') + const result = await transform(`import { createHead } from '@unhead/vue/client'\nconst head = createHead()`) + expect(result.code).toContain('import { ValidatePlugin as __validate } from \'@unhead/vue/plugins\'') + expect(result.code).toContain('_h.use(__validate({ root: "/project" }))') + expect(result.code).not.toContain('typeof window') + }) + + it('wraps createHead with server plugin on server', async () => { + const { transform } = createPlugin([{ + import: { name: 'devtoolsPlugin', source: '@unhead/bundler', as: '__devtools' }, + server: '_h.use(__devtools())', + }], 'server') + const result = await transform(`import { createHead } from '@unhead/vue/server'\nconst head = createHead()`) + expect(result.code).toContain('import { devtoolsPlugin as __devtools } from \'@unhead/bundler\'') + expect(result.code).toContain('_h.use(__devtools())') + }) + + it('skips client-only registrations on server', async () => { + const { transform } = createPlugin([{ + import: { name: 'ValidatePlugin', source: '@unhead/vue/plugins', as: '__validate' }, + client: '_h.use(__validate())', + }], 'server') + expect(await transform('const head = createHead()')).toBeUndefined() + }) + + it('skips server-only registrations on client', async () => { + const { transform } = createPlugin([{ + import: { name: 'devtoolsPlugin', source: '@unhead/bundler', as: '__devtools' }, + server: '_h.use(__devtools())', + }], 'client') + expect(await transform('const head = createHead()')).toBeUndefined() + }) + + it('combines multiple registrations', async () => { + const { transform } = createPlugin([ + { + import: { name: 'ValidatePlugin', source: '@unhead/vue/plugins', as: '__validate' }, + client: '_h.use(__validate())', + }, + { + import: { name: 'devtoolsPlugin', source: '@unhead/bundler', as: '__devtools' }, + client: 'window.__unhead_devtools__=_h', + }, + ], 'client') + const result = await transform('const head = createHead()') + expect(result.code).toContain('import { ValidatePlugin as __validate }') + expect(result.code).toContain('import { devtoolsPlugin as __devtools }') + expect(result.code).toContain('_h.use(__validate()),window.__unhead_devtools__=_h') + }) + + it('replaces __ROOT__ with project root', async () => { + const { transform } = createPlugin([{ + import: { name: 'ValidatePlugin', source: 'unhead/plugins', as: '__validate' }, + client: '_h.use(__validate({ root: __ROOT__ }))', + }], 'client') + const result = await transform('const head = createHead()') + expect(result.code).toContain('root: "/project"') + }) + + it('handles member expression calls like foo.createHead()', async () => { + const { transform } = createPlugin([{ + import: { name: 'ValidatePlugin', source: 'unhead/plugins', as: '__validate' }, + client: '_h.use(__validate())', + }], 'client') + const result = await transform('const head = unhead.createHead()') + expect(result.code).toContain('_h.use(__validate())') + }) + + it('only imports registrations relevant to the environment', async () => { + const { transform } = createPlugin([ + { + import: { name: 'ValidatePlugin', source: '@unhead/vue/plugins', as: '__validate' }, + client: '_h.use(__validate())', + }, + { + import: { name: 'devtoolsPlugin', source: '@unhead/bundler', as: '__devtools' }, + server: '_h.use(__devtools())', + }, + ], 'client') + const result = await transform('const head = createHead()') + expect(result.code).toContain('import { ValidatePlugin as __validate }') + expect(result.code).not.toContain('import { devtoolsPlugin as __devtools }') + }) +}) diff --git a/packages/bundler/test/useSeoMetaTransform.test.ts b/packages/bundler/test/useSeoMetaTransform.test.ts index ecff45e6a..19fb7e2e1 100644 --- a/packages/bundler/test/useSeoMetaTransform.test.ts +++ b/packages/bundler/test/useSeoMetaTransform.test.ts @@ -714,6 +714,33 @@ const _sfc_main = /* @__PURE__ */ _defineComponent({ `) }) + it('preserves second argument (options) when present', async () => { + const code = await transform([ + 'import { useSeoMeta } from \'@unhead/vue\'', + 'useSeoMeta({ title: \'Hello\', description: \'World\' }, { head })', + ]) + expect(code).toBeDefined() + expect(code).toContain('{ head }') + expect(code).toMatchInlineSnapshot(` + "import { useHead } from '@unhead/vue' + useHead({ + title: 'Hello', + meta: [ + { name: 'description', content: 'World' }, + ] + }, { head })" + `) + }) + + it('preserves complex second argument', async () => { + const code = await transform([ + 'import { useSeoMeta } from \'unhead\'', + 'useSeoMeta({ description: \'Test\' }, { head, mode: \'server\' })', + ]) + expect(code).toBeDefined() + expect(code).toContain('{ head, mode: \'server\' }') + }) + it('handles #import', async () => { const code = await transform([ 'import { useSeoMeta } from \'#imports\'', diff --git a/packages/devtools-app/.nuxt/app.config.mjs b/packages/devtools-app/.nuxt/app.config.mjs new file mode 100644 index 000000000..217957076 --- /dev/null +++ b/packages/devtools-app/.nuxt/app.config.mjs @@ -0,0 +1,317 @@ + +import { defuFn } from 'defu' + +const inlineConfig = { + "nuxt": {}, + "ui": { + "colors": { + "primary": "green", + "secondary": "blue", + "success": "green", + "info": "blue", + "warning": "yellow", + "error": "red", + "neutral": "slate" + }, + "icons": { + "arrowDown": "i-lucide-arrow-down", + "arrowLeft": "i-lucide-arrow-left", + "arrowRight": "i-lucide-arrow-right", + "arrowUp": "i-lucide-arrow-up", + "caution": "i-lucide-circle-alert", + "check": "i-lucide-check", + "chevronDoubleLeft": "i-lucide-chevrons-left", + "chevronDoubleRight": "i-lucide-chevrons-right", + "chevronDown": "i-lucide-chevron-down", + "chevronLeft": "i-lucide-chevron-left", + "chevronRight": "i-lucide-chevron-right", + "chevronUp": "i-lucide-chevron-up", + "close": "i-lucide-x", + "copy": "i-lucide-copy", + "copyCheck": "i-lucide-copy-check", + "dark": "i-lucide-moon", + "drag": "i-lucide-grip-vertical", + "ellipsis": "i-lucide-ellipsis", + "error": "i-lucide-circle-x", + "external": "i-lucide-arrow-up-right", + "eye": "i-lucide-eye", + "eyeOff": "i-lucide-eye-off", + "file": "i-lucide-file", + "folder": "i-lucide-folder", + "folderOpen": "i-lucide-folder-open", + "hash": "i-lucide-hash", + "info": "i-lucide-info", + "light": "i-lucide-sun", + "loading": "i-lucide-loader-circle", + "menu": "i-lucide-menu", + "minus": "i-lucide-minus", + "panelClose": "i-lucide-panel-left-close", + "panelOpen": "i-lucide-panel-left-open", + "plus": "i-lucide-plus", + "reload": "i-lucide-rotate-ccw", + "search": "i-lucide-search", + "stop": "i-lucide-square", + "success": "i-lucide-circle-check", + "system": "i-lucide-monitor", + "tip": "i-lucide-lightbulb", + "upload": "i-lucide-upload", + "warning": "i-lucide-triangle-alert" + }, + "tv": { + "twMergeConfig": {} + } + }, + "icon": { + "provider": "iconify", + "class": "", + "aliases": {}, + "iconifyApiEndpoint": "https://api.iconify.design", + "localApiEndpoint": "/api/_nuxt_icon", + "fallbackToApi": true, + "cssSelectorPrefix": "i-", + "cssWherePseudo": true, + "cssLayer": "base", + "mode": "css", + "attrs": { + "aria-hidden": true + }, + "collections": [ + "academicons", + "akar-icons", + "ant-design", + "arcticons", + "basil", + "bi", + "bitcoin-icons", + "bpmn", + "brandico", + "bx", + "bxl", + "bxs", + "bytesize", + "carbon", + "catppuccin", + "cbi", + "charm", + "ci", + "cib", + "cif", + "cil", + "circle-flags", + "circum", + "clarity", + "codex", + "codicon", + "covid", + "cryptocurrency", + "cryptocurrency-color", + "cuida", + "dashicons", + "devicon", + "devicon-plain", + "dinkie-icons", + "duo-icons", + "ei", + "el", + "emojione", + "emojione-monotone", + "emojione-v1", + "entypo", + "entypo-social", + "eos-icons", + "ep", + "et", + "eva", + "f7", + "fa", + "fa-brands", + "fa-regular", + "fa-solid", + "fa6-brands", + "fa6-regular", + "fa6-solid", + "fa7-brands", + "fa7-regular", + "fa7-solid", + "fad", + "famicons", + "fe", + "feather", + "file-icons", + "flag", + "flagpack", + "flat-color-icons", + "flat-ui", + "flowbite", + "fluent", + "fluent-color", + "fluent-emoji", + "fluent-emoji-flat", + "fluent-emoji-high-contrast", + "fluent-mdl2", + "fontelico", + "fontisto", + "formkit", + "foundation", + "fxemoji", + "gala", + "game-icons", + "garden", + "geo", + "gg", + "gis", + "gravity-ui", + "gridicons", + "grommet-icons", + "guidance", + "healthicons", + "heroicons", + "heroicons-outline", + "heroicons-solid", + "hugeicons", + "humbleicons", + "ic", + "icomoon-free", + "icon-park", + "icon-park-outline", + "icon-park-solid", + "icon-park-twotone", + "iconamoon", + "iconoir", + "icons8", + "il", + "ion", + "iwwa", + "ix", + "jam", + "la", + "lets-icons", + "line-md", + "lineicons", + "logos", + "ls", + "lsicon", + "lucide", + "lucide-lab", + "mage", + "majesticons", + "maki", + "map", + "marketeq", + "material-icon-theme", + "material-symbols", + "material-symbols-light", + "mdi", + "mdi-light", + "medical-icon", + "memory", + "meteocons", + "meteor-icons", + "mi", + "mingcute", + "mono-icons", + "mynaui", + "nimbus", + "nonicons", + "noto", + "noto-v1", + "nrk", + "octicon", + "oi", + "ooui", + "openmoji", + "oui", + "pajamas", + "pepicons", + "pepicons-pencil", + "pepicons-pop", + "pepicons-print", + "ph", + "picon", + "pixel", + "pixelarticons", + "prime", + "proicons", + "ps", + "qlementine-icons", + "quill", + "radix-icons", + "raphael", + "ri", + "rivet-icons", + "roentgen", + "si", + "si-glyph", + "sidekickicons", + "simple-icons", + "simple-line-icons", + "skill-icons", + "solar", + "stash", + "streamline", + "streamline-block", + "streamline-color", + "streamline-cyber", + "streamline-cyber-color", + "streamline-emojis", + "streamline-flex", + "streamline-flex-color", + "streamline-freehand", + "streamline-freehand-color", + "streamline-kameleon-color", + "streamline-logos", + "streamline-pixel", + "streamline-plump", + "streamline-plump-color", + "streamline-sharp", + "streamline-sharp-color", + "streamline-stickies-color", + "streamline-ultimate", + "streamline-ultimate-color", + "subway", + "svg-spinners", + "system-uicons", + "tabler", + "tdesign", + "teenyicons", + "temaki", + "token", + "token-branded", + "topcoat", + "twemoji", + "typcn", + "uil", + "uim", + "uis", + "uit", + "uiw", + "unjs", + "vaadin", + "vs", + "vscode-icons", + "websymbol", + "weui", + "whh", + "wi", + "wpf", + "zmdi", + "zondicons" + ], + "fetchTimeout": 1500 + } +} + +/** client **/ +import { _replaceAppConfig } from '#app/config' + +// Vite - webpack is handled directly in #app/config +if (import.meta.dev && !import.meta.nitro && import.meta.hot) { + import.meta.hot.accept((newModule) => { + _replaceAppConfig(newModule.default) + }) +} +/** client-end **/ + +import cfg0 from "/home/harlan/pkg/unhead/packages/devtools-app/app/app.config.ts" + +export default /*@__PURE__*/ defuFn(cfg0, inlineConfig) diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-2IIYX0aNjjEURwJNawIOc3sV0QzpbwUrCv8wl3ZGgFA.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-2IIYX0aNjjEURwJNawIOc3sV0QzpbwUrCv8wl3ZGgFA.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-6KAoyxR_H06JoWqdqVS0-kmvTJ84w1VV-vpL07MkGFo.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-6KAoyxR_H06JoWqdqVS0-kmvTJ84w1VV-vpL07MkGFo.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-995OEiyou9G2dJsMNn9aLuHTFlgwosm_9gD5SQUWR40.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-995OEiyou9G2dJsMNn9aLuHTFlgwosm_9gD5SQUWR40.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-D6hedAgqRfOCLZzaShnyeAvlEnMzk4Wm7g9WDKWFHIc.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-D6hedAgqRfOCLZzaShnyeAvlEnMzk4Wm7g9WDKWFHIc.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-PB8l0aO5_Gv8N1f__GTo60CpiyCHnESCVbnMuj6po8g.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-PB8l0aO5_Gv8N1f__GTo60CpiyCHnESCVbnMuj6po8g.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-ReiF7Vl5j3fA_MaPuQPt4ANBQ5qTkjFYFTlL1W3ym1w.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-ReiF7Vl5j3fA_MaPuQPt4ANBQ5qTkjFYFTlL1W3ym1w.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-XVisnD_cOlmAZf__QN8j1eV5xiztJ4ZpF33oUzZ3Wb4.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-XVisnD_cOlmAZf__QN8j1eV5xiztJ4ZpF33oUzZ3Wb4.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-_Typ3t9johw0N4fC56HXu9YDMYLoTZ2lSFRo85hF34Q.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-_Typ3t9johw0N4fC56HXu9YDMYLoTZ2lSFRo85hF34Q.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-q1FXcza0fo5JeXlwnX_f_cA4m33FrdrDAf5fxWhk_n4.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-q1FXcza0fo5JeXlwnX_f_cA4m33FrdrDAf5fxWhk_n4.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-qPutQnZOK_xLpYlL8vTDDTLjS3Dq9I6CqdH-cvt9zFA.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-qPutQnZOK_xLpYlL8vTDDTLjS3Dq9I6CqdH-cvt9zFA.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-tzSwS_6EmLa_L3rQTreHB3obQJeSPNBPty8uslTYEFY.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-tzSwS_6EmLa_L3rQTreHB3obQJeSPNBPty8uslTYEFY.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-vrK12kZ24WGUghky9YxsOZpLH8Tt4jMU8XIvzgLQ6DU.woff b/packages/devtools-app/.nuxt/cache/fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-vrK12kZ24WGUghky9YxsOZpLH8Tt4jMU8XIvzgLQ6DU.woff new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2 b/packages/devtools-app/.nuxt/cache/fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/4qBuU9MRVUlPZNPSF7Xom_sK8RBEnfYu-9VXFrdq8A8-8TDwLE1HAj1sQn7XxVWtM_7sIaPM-DTdO3Pf8U2DF1U.woff2 b/packages/devtools-app/.nuxt/cache/fonts/4qBuU9MRVUlPZNPSF7Xom_sK8RBEnfYu-9VXFrdq8A8-8TDwLE1HAj1sQn7XxVWtM_7sIaPM-DTdO3Pf8U2DF1U.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/6dYsbWUd_BpKJ7mdDihgOcya1gHXLpJBuMYXux3WMjE-q3fYNS8YbW5n7ZeXI2vSNgkRWW5VDPKAl51SNTjG2qk.woff2 b/packages/devtools-app/.nuxt/cache/fonts/6dYsbWUd_BpKJ7mdDihgOcya1gHXLpJBuMYXux3WMjE-q3fYNS8YbW5n7ZeXI2vSNgkRWW5VDPKAl51SNTjG2qk.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/Lr-hqqZZsYmCt0ITUlr1CUrWim9fsKvoDFZliMxgNHY-iTa_Yt_PzhOY9TX7ZXdSlEPim6iRt92xhECwaxWxd5w.woff2 b/packages/devtools-app/.nuxt/cache/fonts/Lr-hqqZZsYmCt0ITUlr1CUrWim9fsKvoDFZliMxgNHY-iTa_Yt_PzhOY9TX7ZXdSlEPim6iRt92xhECwaxWxd5w.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/OknHvWI6KtYn1JQBzX7eSpNDBQ8520F9TvSUJYkVf6A-xeZn9253svK_8Q2LD0XEruY_MnEsuCRO5LenPoggC0Y.woff2 b/packages/devtools-app/.nuxt/cache/fonts/OknHvWI6KtYn1JQBzX7eSpNDBQ8520F9TvSUJYkVf6A-xeZn9253svK_8Q2LD0XEruY_MnEsuCRO5LenPoggC0Y.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2 b/packages/devtools-app/.nuxt/cache/fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/UA7OtwYHwGN_HjcVGTdmiQxUit7FlqkCwxVUWSeXVnQ-B4OXCFOL_tWrYODpQTc07aMaj0c2cewTOmBRWR9tD-A.woff2 b/packages/devtools-app/.nuxt/cache/fonts/UA7OtwYHwGN_HjcVGTdmiQxUit7FlqkCwxVUWSeXVnQ-B4OXCFOL_tWrYODpQTc07aMaj0c2cewTOmBRWR9tD-A.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2 b/packages/devtools-app/.nuxt/cache/fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/du_wVi8LKnmpxxm4zZ_Cr6Hr261AwOLTlejGtcx8ebU-9181D4phd7f4CBS6wuIfZf5gs5WaADVsAaDTM9PYZig.woff2 b/packages/devtools-app/.nuxt/cache/fonts/du_wVi8LKnmpxxm4zZ_Cr6Hr261AwOLTlejGtcx8ebU-9181D4phd7f4CBS6wuIfZf5gs5WaADVsAaDTM9PYZig.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2 b/packages/devtools-app/.nuxt/cache/fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2 b/packages/devtools-app/.nuxt/cache/fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2 b/packages/devtools-app/.nuxt/cache/fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/cache/fonts/qxAYvKsXWeYv731eb-h5TRurcdIP_W44mpNdX-HABAk-zUDeMEFlNtNbrwvT9JxLEBg0TphGy70O6RfIoIX_ZwU.woff2 b/packages/devtools-app/.nuxt/cache/fonts/qxAYvKsXWeYv731eb-h5TRurcdIP_W44mpNdX-HABAk-zUDeMEFlNtNbrwvT9JxLEBg0TphGy70O6RfIoIX_ZwU.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/nuxt-fonts-global.css b/packages/devtools-app/.nuxt/nuxt-fonts-global.css new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/nuxt-icon-client-bundle.mjs b/packages/devtools-app/.nuxt/nuxt-icon-client-bundle.mjs new file mode 100644 index 000000000..8f785f931 --- /dev/null +++ b/packages/devtools-app/.nuxt/nuxt-icon-client-bundle.mjs @@ -0,0 +1 @@ +export function init() {} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/nuxt.shared.d.ts b/packages/devtools-app/.nuxt/nuxt.shared.d.ts new file mode 100644 index 000000000..812815770 --- /dev/null +++ b/packages/devtools-app/.nuxt/nuxt.shared.d.ts @@ -0,0 +1,6 @@ +/// <reference path="types/runtime-config.d.ts" /> +/// <reference path="types/app.config.d.ts" /> +/// <reference path="types/shared-imports.d.ts" /> +/// <reference path="schema/nuxt.schema.d.ts" /> + +export {} diff --git a/packages/devtools-app/.nuxt/schema/nuxt.schema.d.ts b/packages/devtools-app/.nuxt/schema/nuxt.schema.d.ts new file mode 100644 index 000000000..8ef27f0da --- /dev/null +++ b/packages/devtools-app/.nuxt/schema/nuxt.schema.d.ts @@ -0,0 +1,210 @@ +export interface NuxtCustomSchema { + appConfig?: { + /** + * Nuxt Icon + * + * Configure Nuxt Icon module preferences. + * + * + * @studioIcon material-symbols:star + */ + icon?: { + /** + * Icon Size + * + * Set the default icon size. + * + * + * @studioIcon material-symbols:format-size-rounded + */ + size?: string | undefined, + + /** + * CSS Class + * + * Set the default CSS class. + * + * @default "" + * + * @studioIcon material-symbols:css + */ + class?: string, + + /** + * Default Attributes + * + * Attributes applied to every icon component. + * + * @default { "aria-hidden": true } + * + * + * @studioIcon material-symbols:settings + */ + attrs?: Record<string, string | number | boolean>, + + /** + * Default Rendering Mode + * + * Set the default rendering mode for the icon component + * + * @default "css" + * + * @enum css,svg + * + * @studioIcon material-symbols:move-down-rounded + */ + mode?: string, + + /** + * Icon aliases + * + * Define Icon aliases to update them easily without code changes. + * + * + * @studioIcon material-symbols:star-rounded + */ + aliases?: { [alias: string]: string }, + + /** + * CSS Selector Prefix + * + * Set the default CSS selector prefix. + * + * @default "i-" + * + * @studioIcon material-symbols:format-textdirection-l-to-r + */ + cssSelectorPrefix?: string, + + /** + * CSS Layer Name + * + * Set the default CSS `@layer` name. + * + * + * @studioIcon material-symbols:layers + */ + cssLayer?: string | undefined, + + /** + * Use CSS `:where()` Pseudo Selector + * + * Use CSS `:where()` pseudo selector to reduce specificity. + * + * @default true + * + * @studioIcon material-symbols:low-priority + */ + cssWherePseudo?: boolean, + + /** + * Icon Collections + * + * List of known icon collections name. Used to resolve collection name ambiguity. + * e.g. `simple-icons-github` -> `simple-icons:github` instead of `simple:icons-github` + * + * When not provided, will use the full Iconify collection list. + * + * + * @studioIcon material-symbols:format-list-bulleted + */ + collections?: string[] | null, + + /** + * Custom Icon Collections + * + * + * @studioIcon material-symbols:format-list-bulleted + */ + customCollections?: string[] | null, + + /** + * Icon Provider + * + * Provider to use for fetching icons + * + * - `server` - Fetch icons with a server handler + * - `iconify` - Fetch icons with Iconify API, purely client-side + * - `none` - Do not fetch icons (use client bundle only) + * + * `server` by default; `iconify` when `ssr: false` + * + * + * @enum server,iconify,none + * + * @studioIcon material-symbols:cloud + */ + provider?: "server" | "iconify" | "none" | undefined, + + /** + * Iconify API Endpoint URL + * + * Define a custom Iconify API endpoint URL. Useful if you want to use a self-hosted Iconify API. Learn more: https://iconify.design/docs/api. + * + * @default "https://api.iconify.design" + * + * @studioIcon material-symbols:api + */ + iconifyApiEndpoint?: string, + + /** + * Fallback to Iconify API + * + * Fallback to Iconify API if server provider fails to found the collection. + * + * @default true + * + * @enum true,false,server-only,client-only + * + * @studioIcon material-symbols:public + */ + fallbackToApi?: boolean | "server-only" | "client-only", + + /** + * Local API Endpoint Path + * + * Define a custom path for the local API endpoint. + * + * @default "/api/_nuxt_icon" + * + * @studioIcon material-symbols:api + */ + localApiEndpoint?: string, + + /** + * Fetch Timeout + * + * Set the timeout for fetching icons. + * + * @default 1500 + * + * @studioIcon material-symbols:timer + */ + fetchTimeout?: number, + + /** + * Customize callback + * + * Customize icon content (replace stroke-width, colors, etc...). + * + * + * @studioIcon material-symbols:edit + */ + customize?: IconifyIconCustomizeCallback, + }, + }, +} +export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined> +type _CustomAppConfig = CustomAppConfig + +declare module '@nuxt/schema' { + interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {} + interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {} + interface CustomAppConfig extends _CustomAppConfig {} +} + +declare module 'nuxt/schema' { + interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {} + interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {} + interface CustomAppConfig extends _CustomAppConfig {} +} diff --git a/packages/devtools-app/.nuxt/schema/nuxt.schema.json b/packages/devtools-app/.nuxt/schema/nuxt.schema.json new file mode 100644 index 000000000..90332fee9 --- /dev/null +++ b/packages/devtools-app/.nuxt/schema/nuxt.schema.json @@ -0,0 +1,263 @@ +{ + "id": "#", + "properties": { + "appConfig": { + "id": "#appConfig", + "properties": { + "icon": { + "title": "Nuxt Icon", + "description": "Configure Nuxt Icon module preferences.", + "tags": [ + "@studioIcon material-symbols:star" + ], + "id": "#appConfig/icon", + "properties": { + "size": { + "title": "Icon Size", + "description": "Set the default icon size.", + "tags": [ + "@studioIcon material-symbols:format-size-rounded" + ], + "tsType": "string | undefined", + "id": "#appConfig/icon/size", + "default": {}, + "type": "any" + }, + "class": { + "title": "CSS Class", + "description": "Set the default CSS class.", + "tags": [ + "@studioIcon material-symbols:css" + ], + "id": "#appConfig/icon/class", + "default": "", + "type": "string" + }, + "attrs": { + "title": "Default Attributes", + "description": "Attributes applied to every icon component.\n\n@default { \"aria-hidden\": true }", + "tags": [ + "@studioIcon material-symbols:settings" + ], + "tsType": "Record<string, string | number | boolean>", + "id": "#appConfig/icon/attrs", + "default": { + "aria-hidden": true + }, + "type": "object" + }, + "mode": { + "title": "Default Rendering Mode", + "description": "Set the default rendering mode for the icon component", + "enum": [ + "css", + "svg" + ], + "tags": [ + "@studioIcon material-symbols:move-down-rounded" + ], + "id": "#appConfig/icon/mode", + "default": "css", + "type": "string" + }, + "aliases": { + "title": "Icon aliases", + "description": "Define Icon aliases to update them easily without code changes.", + "tags": [ + "@studioIcon material-symbols:star-rounded" + ], + "tsType": "{ [alias: string]: string }", + "id": "#appConfig/icon/aliases", + "default": {}, + "type": "object" + }, + "cssSelectorPrefix": { + "title": "CSS Selector Prefix", + "description": "Set the default CSS selector prefix.", + "tags": [ + "@studioIcon material-symbols:format-textdirection-l-to-r" + ], + "id": "#appConfig/icon/cssSelectorPrefix", + "default": "i-", + "type": "string" + }, + "cssLayer": { + "title": "CSS Layer Name", + "description": "Set the default CSS `@layer` name.", + "tags": [ + "@studioIcon material-symbols:layers" + ], + "tsType": "string | undefined", + "id": "#appConfig/icon/cssLayer", + "default": {}, + "type": "any" + }, + "cssWherePseudo": { + "title": "Use CSS `:where()` Pseudo Selector", + "description": "Use CSS `:where()` pseudo selector to reduce specificity.", + "tags": [ + "@studioIcon material-symbols:low-priority" + ], + "id": "#appConfig/icon/cssWherePseudo", + "default": true, + "type": "boolean" + }, + "collections": { + "title": "Icon Collections", + "description": "List of known icon collections name. Used to resolve collection name ambiguity.\ne.g. `simple-icons-github` -> `simple-icons:github` instead of `simple:icons-github`\n\nWhen not provided, will use the full Iconify collection list.", + "tags": [ + "@studioIcon material-symbols:format-list-bulleted" + ], + "tsType": "string[] | null", + "id": "#appConfig/icon/collections", + "default": null, + "type": "any" + }, + "customCollections": { + "title": "Custom Icon Collections", + "tags": [ + "@studioIcon material-symbols:format-list-bulleted" + ], + "tsType": "string[] | null", + "id": "#appConfig/icon/customCollections", + "default": null, + "type": "any" + }, + "provider": { + "title": "Icon Provider", + "description": "Provider to use for fetching icons\n\n- `server` - Fetch icons with a server handler\n- `iconify` - Fetch icons with Iconify API, purely client-side\n- `none` - Do not fetch icons (use client bundle only)\n\n`server` by default; `iconify` when `ssr: false`", + "enum": [ + "server", + "iconify", + "none" + ], + "tags": [ + "@studioIcon material-symbols:cloud" + ], + "type": "\"server\" | \"iconify\" | \"none\" | undefined", + "id": "#appConfig/icon/provider" + }, + "iconifyApiEndpoint": { + "title": "Iconify API Endpoint URL", + "description": "Define a custom Iconify API endpoint URL. Useful if you want to use a self-hosted Iconify API. Learn more: https://iconify.design/docs/api.", + "tags": [ + "@studioIcon material-symbols:api" + ], + "id": "#appConfig/icon/iconifyApiEndpoint", + "default": "https://api.iconify.design", + "type": "string" + }, + "fallbackToApi": { + "title": "Fallback to Iconify API", + "description": "Fallback to Iconify API if server provider fails to found the collection.", + "tags": [ + "@studioIcon material-symbols:public" + ], + "enum": [ + true, + false, + "server-only", + "client-only" + ], + "type": "boolean | \"server-only\" | \"client-only\"", + "id": "#appConfig/icon/fallbackToApi", + "default": true + }, + "localApiEndpoint": { + "title": "Local API Endpoint Path", + "description": "Define a custom path for the local API endpoint.", + "tags": [ + "@studioIcon material-symbols:api" + ], + "id": "#appConfig/icon/localApiEndpoint", + "default": "/api/_nuxt_icon", + "type": "string" + }, + "fetchTimeout": { + "title": "Fetch Timeout", + "description": "Set the timeout for fetching icons.", + "tags": [ + "@studioIcon material-symbols:timer" + ], + "id": "#appConfig/icon/fetchTimeout", + "default": 1500, + "type": "number" + }, + "customize": { + "title": "Customize callback", + "description": "Customize icon content (replace stroke-width, colors, etc...).", + "tags": [ + "@studioIcon material-symbols:edit" + ], + "type": "IconifyIconCustomizeCallback", + "id": "#appConfig/icon/customize" + } + }, + "type": "object", + "default": { + "size": {}, + "class": "", + "attrs": { + "aria-hidden": true + }, + "mode": "css", + "aliases": {}, + "cssSelectorPrefix": "i-", + "cssLayer": {}, + "cssWherePseudo": true, + "collections": null, + "customCollections": null, + "iconifyApiEndpoint": "https://api.iconify.design", + "fallbackToApi": true, + "localApiEndpoint": "/api/_nuxt_icon", + "fetchTimeout": 1500 + } + } + }, + "type": "object", + "default": { + "icon": { + "size": {}, + "class": "", + "attrs": { + "aria-hidden": true + }, + "mode": "css", + "aliases": {}, + "cssSelectorPrefix": "i-", + "cssLayer": {}, + "cssWherePseudo": true, + "collections": null, + "customCollections": null, + "iconifyApiEndpoint": "https://api.iconify.design", + "fallbackToApi": true, + "localApiEndpoint": "/api/_nuxt_icon", + "fetchTimeout": 1500 + } + } + } + }, + "type": "object", + "default": { + "appConfig": { + "icon": { + "size": {}, + "class": "", + "attrs": { + "aria-hidden": true + }, + "mode": "css", + "aliases": {}, + "cssSelectorPrefix": "i-", + "cssLayer": {}, + "cssWherePseudo": true, + "collections": null, + "customCollections": null, + "iconifyApiEndpoint": "https://api.iconify.design", + "fallbackToApi": true, + "localApiEndpoint": "/api/_nuxt_icon", + "fetchTimeout": 1500 + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/app.config.d.ts b/packages/devtools-app/.nuxt/types/app.config.d.ts new file mode 100644 index 000000000..acdace8af --- /dev/null +++ b/packages/devtools-app/.nuxt/types/app.config.d.ts @@ -0,0 +1,331 @@ + +import type { AppConfigInput, CustomAppConfig } from 'nuxt/schema' +import type { Defu } from 'defu' +import cfg0 from "../../app/app.config" + +declare global { + const defineAppConfig: <C extends AppConfigInput> (config: C) => C +} + +declare const inlineConfig = { + "nuxt": {}, + "ui": { + "colors": { + "primary": "green", + "secondary": "blue", + "success": "green", + "info": "blue", + "warning": "yellow", + "error": "red", + "neutral": "slate" + }, + "icons": { + "arrowDown": "i-lucide-arrow-down", + "arrowLeft": "i-lucide-arrow-left", + "arrowRight": "i-lucide-arrow-right", + "arrowUp": "i-lucide-arrow-up", + "caution": "i-lucide-circle-alert", + "check": "i-lucide-check", + "chevronDoubleLeft": "i-lucide-chevrons-left", + "chevronDoubleRight": "i-lucide-chevrons-right", + "chevronDown": "i-lucide-chevron-down", + "chevronLeft": "i-lucide-chevron-left", + "chevronRight": "i-lucide-chevron-right", + "chevronUp": "i-lucide-chevron-up", + "close": "i-lucide-x", + "copy": "i-lucide-copy", + "copyCheck": "i-lucide-copy-check", + "dark": "i-lucide-moon", + "drag": "i-lucide-grip-vertical", + "ellipsis": "i-lucide-ellipsis", + "error": "i-lucide-circle-x", + "external": "i-lucide-arrow-up-right", + "eye": "i-lucide-eye", + "eyeOff": "i-lucide-eye-off", + "file": "i-lucide-file", + "folder": "i-lucide-folder", + "folderOpen": "i-lucide-folder-open", + "hash": "i-lucide-hash", + "info": "i-lucide-info", + "light": "i-lucide-sun", + "loading": "i-lucide-loader-circle", + "menu": "i-lucide-menu", + "minus": "i-lucide-minus", + "panelClose": "i-lucide-panel-left-close", + "panelOpen": "i-lucide-panel-left-open", + "plus": "i-lucide-plus", + "reload": "i-lucide-rotate-ccw", + "search": "i-lucide-search", + "stop": "i-lucide-square", + "success": "i-lucide-circle-check", + "system": "i-lucide-monitor", + "tip": "i-lucide-lightbulb", + "upload": "i-lucide-upload", + "warning": "i-lucide-triangle-alert" + }, + "tv": { + "twMergeConfig": {} + } + }, + "icon": { + "provider": "iconify", + "class": "", + "aliases": {}, + "iconifyApiEndpoint": "https://api.iconify.design", + "localApiEndpoint": "/api/_nuxt_icon", + "fallbackToApi": true, + "cssSelectorPrefix": "i-", + "cssWherePseudo": true, + "cssLayer": "base", + "mode": "css", + "attrs": { + "aria-hidden": true + }, + "collections": [ + "academicons", + "akar-icons", + "ant-design", + "arcticons", + "basil", + "bi", + "bitcoin-icons", + "bpmn", + "brandico", + "bx", + "bxl", + "bxs", + "bytesize", + "carbon", + "catppuccin", + "cbi", + "charm", + "ci", + "cib", + "cif", + "cil", + "circle-flags", + "circum", + "clarity", + "codex", + "codicon", + "covid", + "cryptocurrency", + "cryptocurrency-color", + "cuida", + "dashicons", + "devicon", + "devicon-plain", + "dinkie-icons", + "duo-icons", + "ei", + "el", + "emojione", + "emojione-monotone", + "emojione-v1", + "entypo", + "entypo-social", + "eos-icons", + "ep", + "et", + "eva", + "f7", + "fa", + "fa-brands", + "fa-regular", + "fa-solid", + "fa6-brands", + "fa6-regular", + "fa6-solid", + "fa7-brands", + "fa7-regular", + "fa7-solid", + "fad", + "famicons", + "fe", + "feather", + "file-icons", + "flag", + "flagpack", + "flat-color-icons", + "flat-ui", + "flowbite", + "fluent", + "fluent-color", + "fluent-emoji", + "fluent-emoji-flat", + "fluent-emoji-high-contrast", + "fluent-mdl2", + "fontelico", + "fontisto", + "formkit", + "foundation", + "fxemoji", + "gala", + "game-icons", + "garden", + "geo", + "gg", + "gis", + "gravity-ui", + "gridicons", + "grommet-icons", + "guidance", + "healthicons", + "heroicons", + "heroicons-outline", + "heroicons-solid", + "hugeicons", + "humbleicons", + "ic", + "icomoon-free", + "icon-park", + "icon-park-outline", + "icon-park-solid", + "icon-park-twotone", + "iconamoon", + "iconoir", + "icons8", + "il", + "ion", + "iwwa", + "ix", + "jam", + "la", + "lets-icons", + "line-md", + "lineicons", + "logos", + "ls", + "lsicon", + "lucide", + "lucide-lab", + "mage", + "majesticons", + "maki", + "map", + "marketeq", + "material-icon-theme", + "material-symbols", + "material-symbols-light", + "mdi", + "mdi-light", + "medical-icon", + "memory", + "meteocons", + "meteor-icons", + "mi", + "mingcute", + "mono-icons", + "mynaui", + "nimbus", + "nonicons", + "noto", + "noto-v1", + "nrk", + "octicon", + "oi", + "ooui", + "openmoji", + "oui", + "pajamas", + "pepicons", + "pepicons-pencil", + "pepicons-pop", + "pepicons-print", + "ph", + "picon", + "pixel", + "pixelarticons", + "prime", + "proicons", + "ps", + "qlementine-icons", + "quill", + "radix-icons", + "raphael", + "ri", + "rivet-icons", + "roentgen", + "si", + "si-glyph", + "sidekickicons", + "simple-icons", + "simple-line-icons", + "skill-icons", + "solar", + "stash", + "streamline", + "streamline-block", + "streamline-color", + "streamline-cyber", + "streamline-cyber-color", + "streamline-emojis", + "streamline-flex", + "streamline-flex-color", + "streamline-freehand", + "streamline-freehand-color", + "streamline-kameleon-color", + "streamline-logos", + "streamline-pixel", + "streamline-plump", + "streamline-plump-color", + "streamline-sharp", + "streamline-sharp-color", + "streamline-stickies-color", + "streamline-ultimate", + "streamline-ultimate-color", + "subway", + "svg-spinners", + "system-uicons", + "tabler", + "tdesign", + "teenyicons", + "temaki", + "token", + "token-branded", + "topcoat", + "twemoji", + "typcn", + "uil", + "uim", + "uis", + "uit", + "uiw", + "unjs", + "vaadin", + "vs", + "vscode-icons", + "websymbol", + "weui", + "whh", + "wi", + "wpf", + "zmdi", + "zondicons" + ], + "fetchTimeout": 1500 + } +} +type ResolvedAppConfig = Defu<typeof inlineConfig, [typeof cfg0]> +type IsAny<T> = 0 extends 1 & T ? true : false + +type MergedAppConfig<Resolved extends Record<string, unknown>, Custom extends Record<string, unknown>> = { + [K in keyof (Resolved & Custom)]: K extends keyof Custom + ? unknown extends Custom[K] + ? Resolved[K] + : IsAny<Custom[K]> extends true + ? Resolved[K] + : Custom[K] extends Record<string, any> + ? Resolved[K] extends Record<string, any> + ? MergedAppConfig<Resolved[K], Custom[K]> + : Exclude<Custom[K], undefined> + : Exclude<Custom[K], undefined> + : Resolved[K] +} + +declare module 'nuxt/schema' { + interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { } +} +declare module '@nuxt/schema' { + interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { } +} diff --git a/packages/devtools-app/.nuxt/types/builder-env.d.ts b/packages/devtools-app/.nuxt/types/builder-env.d.ts new file mode 100644 index 000000000..0eb132902 --- /dev/null +++ b/packages/devtools-app/.nuxt/types/builder-env.d.ts @@ -0,0 +1 @@ +import "vite/client"; \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/layouts.d.ts b/packages/devtools-app/.nuxt/types/layouts.d.ts new file mode 100644 index 000000000..42af01db0 --- /dev/null +++ b/packages/devtools-app/.nuxt/types/layouts.d.ts @@ -0,0 +1,19 @@ +import type { ComputedRef, MaybeRef } from 'vue' + +type ComponentProps<T> = T extends new(...args: any) => { $props: infer P } ? NonNullable<P> + : T extends (props: infer P, ...args: any) => any ? P + : {} + +declare module 'nuxt/app' { + interface NuxtLayouts { + } + export type LayoutKey = keyof NuxtLayouts extends never ? string : keyof NuxtLayouts + interface PageMeta { + layout?: MaybeRef<LayoutKey | false> | ComputedRef<LayoutKey | false> | { + [K in LayoutKey]: { + name?: MaybeRef<K | false> | ComputedRef<K | false> + props?: NuxtLayouts[K] + } + }[LayoutKey] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/modules.d.ts b/packages/devtools-app/.nuxt/types/modules.d.ts new file mode 100644 index 000000000..b729b089d --- /dev/null +++ b/packages/devtools-app/.nuxt/types/modules.d.ts @@ -0,0 +1,139 @@ +import { NuxtModule, ModuleDependencyMeta } from '@nuxt/schema' +declare module '@nuxt/schema' { + interface ModuleDependencies { + ["@nuxt/ui"]?: ModuleDependencyMeta<typeof import("@nuxt/ui").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["vueuse"]?: ModuleDependencyMeta<typeof import("@vueuse/nuxt").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxt/telemetry"]?: ModuleDependencyMeta<typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxt/icon"]?: ModuleDependencyMeta<typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxt/fonts"]?: ModuleDependencyMeta<typeof import("@nuxt/fonts").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxtjs/color-mode"]?: ModuleDependencyMeta<typeof import("@nuxtjs/color-mode").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + } + interface NuxtOptions { + /** + * Configuration for `@nuxt/ui` + */ + ["ui"]: typeof import("@nuxt/ui").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@vueuse/nuxt` + */ + ["vueuse"]: typeof import("@vueuse/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxt/telemetry` + */ + ["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxt/icon` + */ + ["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxt/fonts` + */ + ["fonts"]: typeof import("@nuxt/fonts").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxtjs/color-mode` + */ + ["colorMode"]: typeof import("@nuxtjs/color-mode").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + } + interface NuxtConfig { + /** + * Configuration for `@nuxt/ui` + */ + ["ui"]?: typeof import("@nuxt/ui").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@vueuse/nuxt` + */ + ["vueuse"]?: typeof import("@vueuse/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxt/telemetry` + */ + ["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxt/icon` + */ + ["icon"]?: typeof import("@nuxt/icon").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxt/fonts` + */ + ["fonts"]?: typeof import("@nuxt/fonts").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxtjs/color-mode` + */ + ["colorMode"]?: typeof import("@nuxtjs/color-mode").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxt/ui", Exclude<NuxtConfig["ui"], boolean>] | ["@vueuse/nuxt", Exclude<NuxtConfig["vueuse"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>] | ["@nuxt/icon", Exclude<NuxtConfig["icon"], boolean>] | ["@nuxt/fonts", Exclude<NuxtConfig["fonts"], boolean>] | ["@nuxtjs/color-mode", Exclude<NuxtConfig["colorMode"], boolean>])[], + } +} +declare module 'nuxt/schema' { + interface ModuleDependencies { + ["@nuxt/ui"]?: ModuleDependencyMeta<typeof import("@nuxt/ui").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["vueuse"]?: ModuleDependencyMeta<typeof import("@vueuse/nuxt").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxt/telemetry"]?: ModuleDependencyMeta<typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxt/icon"]?: ModuleDependencyMeta<typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxt/fonts"]?: ModuleDependencyMeta<typeof import("@nuxt/fonts").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + ["@nuxtjs/color-mode"]?: ModuleDependencyMeta<typeof import("@nuxtjs/color-mode").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false + } + interface NuxtOptions { + /** + * Configuration for `@nuxt/ui` + * @see https://ui.nuxt.com/docs/getting-started/installation/nuxt + */ + ["ui"]: typeof import("@nuxt/ui").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@vueuse/nuxt` + * @see https://www.npmjs.com/package/@vueuse/nuxt + */ + ["vueuse"]: typeof import("@vueuse/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxt/telemetry` + * @see https://www.npmjs.com/package/@nuxt/telemetry + */ + ["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxt/icon` + * @see https://www.npmjs.com/package/@nuxt/icon + */ + ["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxt/fonts` + * @see https://www.npmjs.com/package/@nuxt/fonts + */ + ["fonts"]: typeof import("@nuxt/fonts").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + /** + * Configuration for `@nuxtjs/color-mode` + * @see https://www.npmjs.com/package/@nuxtjs/color-mode + */ + ["colorMode"]: typeof import("@nuxtjs/color-mode").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false + } + interface NuxtConfig { + /** + * Configuration for `@nuxt/ui` + * @see https://ui.nuxt.com/docs/getting-started/installation/nuxt + */ + ["ui"]?: typeof import("@nuxt/ui").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@vueuse/nuxt` + * @see https://www.npmjs.com/package/@vueuse/nuxt + */ + ["vueuse"]?: typeof import("@vueuse/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxt/telemetry` + * @see https://www.npmjs.com/package/@nuxt/telemetry + */ + ["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxt/icon` + * @see https://www.npmjs.com/package/@nuxt/icon + */ + ["icon"]?: typeof import("@nuxt/icon").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxt/fonts` + * @see https://www.npmjs.com/package/@nuxt/fonts + */ + ["fonts"]?: typeof import("@nuxt/fonts").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + /** + * Configuration for `@nuxtjs/color-mode` + * @see https://www.npmjs.com/package/@nuxtjs/color-mode + */ + ["colorMode"]?: typeof import("@nuxtjs/color-mode").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false + modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxt/ui", Exclude<NuxtConfig["ui"], boolean>] | ["@vueuse/nuxt", Exclude<NuxtConfig["vueuse"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>] | ["@nuxt/icon", Exclude<NuxtConfig["icon"], boolean>] | ["@nuxt/fonts", Exclude<NuxtConfig["fonts"], boolean>] | ["@nuxtjs/color-mode", Exclude<NuxtConfig["colorMode"], boolean>])[], + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/nitro-config.d.ts b/packages/devtools-app/.nuxt/types/nitro-config.d.ts new file mode 100644 index 000000000..fa00d4820 --- /dev/null +++ b/packages/devtools-app/.nuxt/types/nitro-config.d.ts @@ -0,0 +1,14 @@ +// Generated by nitro + +// App Config +import type { Defu } from 'defu' + +import type { default as appConfig0 } from "../../app/app.config"; + +type UserAppConfig = Defu<{}, [typeof appConfig0]> + +declare module "nitropack/types" { + interface AppConfig extends UserAppConfig {} + +} +export {} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/nitro-layouts.d.ts b/packages/devtools-app/.nuxt/types/nitro-layouts.d.ts new file mode 100644 index 000000000..955f9df60 --- /dev/null +++ b/packages/devtools-app/.nuxt/types/nitro-layouts.d.ts @@ -0,0 +1,17 @@ +export type LayoutKey = string +declare module 'nitropack' { + interface NitroRouteConfig { + appLayout?: LayoutKey | false + } + interface NitroRouteRules { + appLayout?: LayoutKey | false + } +} +declare module 'nitropack/types' { + interface NitroRouteConfig { + appLayout?: LayoutKey | false + } + interface NitroRouteRules { + appLayout?: LayoutKey | false + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/nitro-middleware.d.ts b/packages/devtools-app/.nuxt/types/nitro-middleware.d.ts new file mode 100644 index 000000000..60b19c4bd --- /dev/null +++ b/packages/devtools-app/.nuxt/types/nitro-middleware.d.ts @@ -0,0 +1,11 @@ +export type MiddlewareKey = never +declare module 'nitropack/types' { + interface NitroRouteConfig { + appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean> + } +} +declare module 'nitropack' { + interface NitroRouteConfig { + appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean> + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/nitro.d.ts b/packages/devtools-app/.nuxt/types/nitro.d.ts new file mode 100644 index 000000000..bf09bd4d3 --- /dev/null +++ b/packages/devtools-app/.nuxt/types/nitro.d.ts @@ -0,0 +1,3 @@ +/// <reference path="./nitro-routes.d.ts" /> +/// <reference path="./nitro-config.d.ts" /> +/// <reference path="./nitro-imports.d.ts" /> \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/runtime-config.d.ts b/packages/devtools-app/.nuxt/types/runtime-config.d.ts new file mode 100644 index 000000000..45f404f3a --- /dev/null +++ b/packages/devtools-app/.nuxt/types/runtime-config.d.ts @@ -0,0 +1,36 @@ +import { RuntimeConfig as UserRuntimeConfig, PublicRuntimeConfig as UserPublicRuntimeConfig } from 'nuxt/schema' + interface SharedRuntimeConfig { + app: { + buildId: string, + + baseURL: string, + + buildAssetsDir: string, + + cdnURL: string, + }, + + nitro: { + envPrefix: string, + }, + + icon: { + serverKnownCssClasses: Array<any>, + }, + } + interface SharedPublicRuntimeConfig { + + } +declare module '@nuxt/schema' { + interface RuntimeConfig extends UserRuntimeConfig {} + interface PublicRuntimeConfig extends UserPublicRuntimeConfig {} +} +declare module 'nuxt/schema' { + interface RuntimeConfig extends SharedRuntimeConfig {} + interface PublicRuntimeConfig extends SharedPublicRuntimeConfig {} +} +declare module 'vue' { + interface ComponentCustomProperties { + $config: UserRuntimeConfig + } + } \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/shared-imports.d.ts b/packages/devtools-app/.nuxt/types/shared-imports.d.ts new file mode 100644 index 000000000..d7dba3cbd --- /dev/null +++ b/packages/devtools-app/.nuxt/types/shared-imports.d.ts @@ -0,0 +1,10 @@ +// Generated by auto imports +export {} +declare global { + const useRuntimeConfig: (event?: import('h3').H3Event) => import('nuxt/schema').RuntimeConfig + const useAppConfig: () => import('nuxt/schema').AppConfig + const defineAppConfig: <C extends import('nuxt/schema').AppConfigInput>(config: C) => C + const createError: typeof import('h3')['createError'] + const setResponseStatus: typeof import('h3')['setResponseStatus'] + +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/types/ui.d.ts b/packages/devtools-app/.nuxt/types/ui.d.ts new file mode 100644 index 000000000..e4ea80553 --- /dev/null +++ b/packages/devtools-app/.nuxt/types/ui.d.ts @@ -0,0 +1,36 @@ +import * as ui from '#build/ui' +import type { TVConfig } from '@nuxt/ui' +import type { defaultConfig } from 'tailwind-variants' +import colors from 'tailwindcss/colors' + +type IconsConfig = Record<"arrowDown" | "arrowLeft" | "arrowRight" | "arrowUp" | "caution" | "check" | "chevronDoubleLeft" | "chevronDoubleRight" | "chevronDown" | "chevronLeft" | "chevronRight" | "chevronUp" | "close" | "copy" | "copyCheck" | "dark" | "drag" | "ellipsis" | "error" | "external" | "eye" | "eyeOff" | "file" | "folder" | "folderOpen" | "hash" | "info" | "light" | "loading" | "menu" | "minus" | "panelClose" | "panelOpen" | "plus" | "reload" | "search" | "stop" | "success" | "system" | "tip" | "upload" | "warning" | (string & {}), string> + +type NeutralColor = 'slate' | 'gray' | 'zinc' | 'neutral' | 'stone' | 'taupe' | 'mauve' | 'mist' | 'olive' +type Color = Exclude<keyof typeof colors, 'inherit' | 'current' | 'transparent' | 'black' | 'white' | NeutralColor> | (string & {}) + +type AppConfigUI = { + colors?: { + 'primary'?: Color + 'secondary'?: Color + 'success'?: Color + 'info'?: Color + 'warning'?: Color + 'error'?: Color + neutral?: NeutralColor | (string & {}) + } + icons?: Partial<IconsConfig> + prefix?: string + tv?: typeof defaultConfig +} & TVConfig<typeof ui> + +declare module '@nuxt/schema' { + interface AppConfigInput { + /** + * Nuxt UI theme configuration + * @see https://ui.nuxt.com/docs/getting-started/theme/components + */ + ui?: AppConfigUI + } +} + +export {} diff --git a/packages/devtools-app/.nuxt/types/vue-shim.d.ts b/packages/devtools-app/.nuxt/types/vue-shim.d.ts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/.nuxt/ui-image-component.ts b/packages/devtools-app/.nuxt/ui-image-component.ts new file mode 100644 index 000000000..c7401fd99 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui-image-component.ts @@ -0,0 +1 @@ +export default "img" \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/accordion.ts b/packages/devtools-app/.nuxt/ui/accordion.ts new file mode 100644 index 000000000..3f3fa7426 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/accordion.ts @@ -0,0 +1,20 @@ +export default { + "slots": { + "root": "w-full", + "item": "border-b border-default last:border-b-0", + "header": "flex", + "trigger": "group flex-1 flex items-center gap-1.5 font-medium text-sm py-3.5 focus-visible:outline-primary min-w-0", + "content": "data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] overflow-hidden focus:outline-none", + "body": "text-sm pb-3.5", + "leadingIcon": "shrink-0 size-5", + "trailingIcon": "shrink-0 size-5 ms-auto group-data-[state=open]:rotate-180 transition-transform duration-200", + "label": "text-start break-words" + }, + "variants": { + "disabled": { + "true": { + "trigger": "cursor-not-allowed opacity-75" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/alert.ts b/packages/devtools-app/.nuxt/ui/alert.ts new file mode 100644 index 000000000..63648c243 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/alert.ts @@ -0,0 +1,264 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle" +] as const + +export default { + "slots": { + "root": "relative overflow-hidden w-full rounded-lg p-4 flex gap-2.5", + "wrapper": "min-w-0 flex-1 flex flex-col", + "title": "text-sm font-medium", + "description": "text-sm opacity-90", + "icon": "shrink-0 size-5", + "avatar": "shrink-0", + "avatarSize": "2xl", + "actions": "flex flex-wrap gap-1.5 shrink-0", + "close": "p-0" + }, + "variants": { + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "solid": "", + "outline": "", + "soft": "", + "subtle": "" + }, + "orientation": { + "horizontal": { + "root": "items-center", + "actions": "items-center" + }, + "vertical": { + "root": "items-start", + "actions": "items-start mt-2.5" + } + }, + "title": { + "true": { + "description": "mt-1" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "bg-primary text-inverted" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "bg-secondary text-inverted" + } + }, + { + "color": "success" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "bg-success text-inverted" + } + }, + { + "color": "info" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "bg-info text-inverted" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "bg-warning text-inverted" + } + }, + { + "color": "error" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "bg-error text-inverted" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-primary ring ring-inset ring-primary/25" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-secondary ring ring-inset ring-secondary/25" + } + }, + { + "color": "success" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-success ring ring-inset ring-success/25" + } + }, + { + "color": "info" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-info ring ring-inset ring-info/25" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-warning ring ring-inset ring-warning/25" + } + }, + { + "color": "error" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-error ring ring-inset ring-error/25" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "bg-primary/10 text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "bg-secondary/10 text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "bg-success/10 text-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "bg-info/10 text-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "bg-warning/10 text-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "bg-error/10 text-error" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "bg-primary/10 text-primary ring ring-inset ring-primary/25" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "bg-secondary/10 text-secondary ring ring-inset ring-secondary/25" + } + }, + { + "color": "success" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "bg-success/10 text-success ring ring-inset ring-success/25" + } + }, + { + "color": "info" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "bg-info/10 text-info ring ring-inset ring-info/25" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "bg-warning/10 text-warning ring ring-inset ring-warning/25" + } + }, + { + "color": "error" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "bg-error/10 text-error ring ring-inset ring-error/25" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "root": "text-inverted bg-inverted" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "root": "text-highlighted bg-default ring ring-inset ring-default" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "text-highlighted bg-elevated/50" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "text-highlighted bg-elevated/50 ring ring-inset ring-accented" + } + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/auth-form.ts b/packages/devtools-app/.nuxt/ui/auth-form.ts new file mode 100644 index 000000000..072b5d763 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/auth-form.ts @@ -0,0 +1,20 @@ +export default { + "slots": { + "root": "w-full space-y-6", + "header": "flex flex-col text-center", + "leading": "mb-2", + "leadingIcon": "size-8 shrink-0 inline-block", + "title": "text-xl text-pretty font-semibold text-highlighted", + "description": "mt-1 text-base text-pretty text-muted", + "body": "gap-y-6 flex flex-col", + "providers": "space-y-3", + "checkbox": "", + "select": "w-full", + "password": "w-full", + "otp": "w-full", + "input": "w-full", + "separator": "", + "form": "space-y-5", + "footer": "text-sm text-center text-muted mt-2" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/avatar-group.ts b/packages/devtools-app/.nuxt/ui/avatar-group.ts new file mode 100644 index 000000000..84c17ca4b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/avatar-group.ts @@ -0,0 +1,52 @@ +const size = [ + "3xs", + "2xs", + "xs", + "sm", + "md", + "lg", + "xl", + "2xl", + "3xl" +] as const + +export default { + "slots": { + "root": "inline-flex flex-row-reverse justify-end", + "base": "relative rounded-full ring-bg first:me-0" + }, + "variants": { + "size": { + "3xs": { + "base": "ring -me-0.5" + }, + "2xs": { + "base": "ring -me-0.5" + }, + "xs": { + "base": "ring -me-0.5" + }, + "sm": { + "base": "ring-2 -me-1.5" + }, + "md": { + "base": "ring-2 -me-1.5" + }, + "lg": { + "base": "ring-2 -me-1.5" + }, + "xl": { + "base": "ring-3 -me-2" + }, + "2xl": { + "base": "ring-3 -me-2" + }, + "3xl": { + "base": "ring-3 -me-2" + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/avatar.ts b/packages/devtools-app/.nuxt/ui/avatar.ts new file mode 100644 index 000000000..c518376cd --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/avatar.ts @@ -0,0 +1,54 @@ +const size = [ + "3xs", + "2xs", + "xs", + "sm", + "md", + "lg", + "xl", + "2xl", + "3xl" +] as const + +export default { + "slots": { + "root": "inline-flex items-center justify-center shrink-0 select-none rounded-full align-middle bg-elevated", + "image": "h-full w-full rounded-[inherit] object-cover", + "fallback": "font-medium leading-none text-muted truncate", + "icon": "text-muted shrink-0" + }, + "variants": { + "size": { + "3xs": { + "root": "size-4 text-[8px]" + }, + "2xs": { + "root": "size-5 text-[10px]" + }, + "xs": { + "root": "size-6 text-xs" + }, + "sm": { + "root": "size-7 text-sm" + }, + "md": { + "root": "size-8 text-base" + }, + "lg": { + "root": "size-9 text-lg" + }, + "xl": { + "root": "size-10 text-xl" + }, + "2xl": { + "root": "size-11 text-[22px]" + }, + "3xl": { + "root": "size-12 text-2xl" + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/badge.ts b/packages/devtools-app/.nuxt/ui/badge.ts new file mode 100644 index 000000000..6ed5f9648 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/badge.ts @@ -0,0 +1,263 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "base": "font-medium inline-flex items-center", + "label": "truncate", + "leadingIcon": "shrink-0", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailingIcon": "shrink-0" + }, + "variants": { + "fieldGroup": { + "horizontal": "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]", + "vertical": "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "solid": "", + "outline": "", + "soft": "", + "subtle": "" + }, + "size": { + "xs": { + "base": "text-[8px]/3 px-1 py-0.5 gap-1 rounded-sm", + "leadingIcon": "size-3", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-3" + }, + "sm": { + "base": "text-[10px]/3 px-1.5 py-1 gap-1 rounded-sm", + "leadingIcon": "size-3", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-3" + }, + "md": { + "base": "text-xs px-2 py-1 gap-1 rounded-md", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "lg": { + "base": "text-sm px-2 py-1 gap-1.5 rounded-md", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "xl": { + "base": "text-base px-2.5 py-1 gap-1.5 rounded-md", + "leadingIcon": "size-6", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-6" + } + }, + "square": { + "true": "" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "bg-primary text-inverted" + }, + { + "color": "secondary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "bg-secondary text-inverted" + }, + { + "color": "success" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "bg-success text-inverted" + }, + { + "color": "info" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "bg-info text-inverted" + }, + { + "color": "warning" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "bg-warning text-inverted" + }, + { + "color": "error" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "bg-error text-inverted" + }, + { + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "text-primary ring ring-inset ring-primary/50" + }, + { + "color": "secondary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "text-secondary ring ring-inset ring-secondary/50" + }, + { + "color": "success" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "text-success ring ring-inset ring-success/50" + }, + { + "color": "info" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "text-info ring ring-inset ring-info/50" + }, + { + "color": "warning" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "text-warning ring ring-inset ring-warning/50" + }, + { + "color": "error" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "text-error ring ring-inset ring-error/50" + }, + { + "color": "primary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "bg-primary/10 text-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "bg-secondary/10 text-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "bg-success/10 text-success" + }, + { + "color": "info" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "bg-info/10 text-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "bg-warning/10 text-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "bg-error/10 text-error" + }, + { + "color": "primary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "bg-primary/10 text-primary ring ring-inset ring-primary/25" + }, + { + "color": "secondary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "bg-secondary/10 text-secondary ring ring-inset ring-secondary/25" + }, + { + "color": "success" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "bg-success/10 text-success ring ring-inset ring-success/25" + }, + { + "color": "info" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "bg-info/10 text-info ring ring-inset ring-info/25" + }, + { + "color": "warning" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "bg-warning/10 text-warning ring ring-inset ring-warning/25" + }, + { + "color": "error" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "bg-error/10 text-error ring ring-inset ring-error/25" + }, + { + "color": "neutral" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-inverted" + }, + { + "color": "neutral" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-accented text-default bg-default" + }, + { + "color": "neutral" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-default bg-elevated" + }, + { + "color": "neutral" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "ring ring-inset ring-accented text-default bg-elevated" + }, + { + "size": "xs" as typeof size[number], + "square": true, + "class": "p-0.5" + }, + { + "size": "sm" as typeof size[number], + "square": true, + "class": "p-1" + }, + { + "size": "md" as typeof size[number], + "square": true, + "class": "p-1" + }, + { + "size": "lg" as typeof size[number], + "square": true, + "class": "p-1" + }, + { + "size": "xl" as typeof size[number], + "square": true, + "class": "p-1" + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/banner.ts b/packages/devtools-app/.nuxt/ui/banner.ts new file mode 100644 index 000000000..58e25a4d6 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/banner.ts @@ -0,0 +1,108 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": [ + "relative z-50 w-full", + "transition-colors" + ], + "container": "flex items-center justify-between gap-3 h-12", + "left": "hidden lg:flex-1 lg:flex lg:items-center", + "center": "flex items-center gap-1.5 min-w-0", + "right": "lg:flex-1 flex items-center justify-end", + "icon": "size-5 shrink-0 text-inverted pointer-events-none", + "title": "text-sm text-inverted font-medium truncate", + "actions": "flex gap-1.5 shrink-0 isolate", + "close": "text-inverted hover:bg-default/10 focus-visible:bg-default/10 -me-1.5 lg:me-0" + }, + "variants": { + "color": { + "primary": { + "root": "bg-primary" + }, + "secondary": { + "root": "bg-secondary" + }, + "success": { + "root": "bg-success" + }, + "info": { + "root": "bg-info" + }, + "warning": { + "root": "bg-warning" + }, + "error": { + "root": "bg-error" + }, + "neutral": { + "root": "bg-inverted" + } + }, + "to": { + "true": "" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-primary/90" + } + }, + { + "color": "secondary" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-secondary/90" + } + }, + { + "color": "success" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-success/90" + } + }, + { + "color": "info" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-info/90" + } + }, + { + "color": "warning" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-warning/90" + } + }, + { + "color": "error" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-error/90" + } + }, + { + "color": "neutral" as typeof color[number], + "to": true, + "class": { + "root": "hover:bg-inverted/90" + } + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/blog-post.ts b/packages/devtools-app/.nuxt/ui/blog-post.ts new file mode 100644 index 000000000..13e3b1cd0 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/blog-post.ts @@ -0,0 +1,143 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "naked" +] as const + +export default { + "slots": { + "root": "relative group/blog-post flex flex-col rounded-lg overflow-hidden", + "header": "relative overflow-hidden aspect-[16/9] w-full pointer-events-none", + "body": "min-w-0 flex-1 flex flex-col", + "footer": "", + "image": "object-cover object-top w-full h-full", + "title": "text-xl text-pretty font-semibold text-highlighted", + "description": "mt-1 text-base text-pretty", + "authors": "pt-4 mt-auto flex flex-wrap gap-x-3 gap-y-1.5", + "avatar": "", + "meta": "flex items-center gap-2 mb-2", + "date": "text-sm", + "badge": "" + }, + "variants": { + "orientation": { + "horizontal": { + "root": "lg:grid lg:grid-cols-2 lg:items-center gap-x-8", + "body": "justify-center p-4 sm:p-6 lg:px-0" + }, + "vertical": { + "root": "flex flex-col", + "body": "p-4 sm:p-6" + } + }, + "variant": { + "outline": { + "root": "bg-default ring ring-default", + "date": "text-toned", + "description": "text-muted" + }, + "soft": { + "root": "bg-elevated/50", + "date": "text-muted", + "description": "text-toned" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default", + "date": "text-muted", + "description": "text-toned" + }, + "ghost": { + "date": "text-toned", + "description": "text-muted", + "header": "shadow-lg rounded-lg" + }, + "naked": { + "root": "p-0 sm:p-0", + "date": "text-toned", + "description": "text-muted", + "header": "shadow-lg rounded-lg" + } + }, + "to": { + "true": { + "root": [ + "has-focus-visible:ring-2 has-focus-visible:ring-primary", + "transition" + ], + "image": "transform transition-transform duration-200 group-hover/blog-post:scale-110", + "avatar": "transform transition-transform duration-200 hover:scale-115 focus-visible:outline-primary" + } + }, + "image": { + "true": "" + } + }, + "compoundVariants": [ + { + "variant": "outline" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated/50" + } + }, + { + "variant": "soft" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated" + } + }, + { + "variant": "subtle" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated hover:ring-accented" + } + }, + { + "variant": "ghost" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated/50", + "header": [ + "group-hover/blog-post:shadow-none", + "transition-all" + ] + } + }, + { + "variant": "ghost" as typeof variant[number], + "to": true, + "orientation": "vertical" as typeof orientation[number], + "class": { + "header": "group-hover/blog-post:rounded-b-none" + } + }, + { + "variant": "ghost" as typeof variant[number], + "to": true, + "orientation": "horizontal" as typeof orientation[number], + "class": { + "header": "group-hover/blog-post:rounded-r-none" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "image": false, + "variant": "naked" as typeof variant[number], + "class": { + "body": "p-0 sm:p-0" + } + } + ], + "defaultVariants": { + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/blog-posts.ts b/packages/devtools-app/.nuxt/ui/blog-posts.ts new file mode 100644 index 000000000..baaf2f9cb --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/blog-posts.ts @@ -0,0 +1,9 @@ +export default { + "base": "flex flex-col gap-8 lg:gap-y-16", + "variants": { + "orientation": { + "horizontal": "sm:grid sm:grid-cols-2 lg:grid-cols-3", + "vertical": "" + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/breadcrumb.ts b/packages/devtools-app/.nuxt/ui/breadcrumb.ts new file mode 100644 index 000000000..56ca25ef1 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/breadcrumb.ts @@ -0,0 +1,45 @@ +export default { + "slots": { + "root": "relative min-w-0", + "list": "flex items-center gap-1.5", + "item": "flex min-w-0", + "link": "group relative flex items-center gap-1.5 text-sm min-w-0 focus-visible:outline-primary", + "linkLeadingIcon": "shrink-0 size-5", + "linkLeadingAvatar": "shrink-0", + "linkLeadingAvatarSize": "2xs", + "linkLabel": "truncate", + "separator": "flex", + "separatorIcon": "shrink-0 size-5 text-muted" + }, + "variants": { + "active": { + "true": { + "link": "text-primary font-semibold" + }, + "false": { + "link": "text-muted font-medium" + } + }, + "disabled": { + "true": { + "link": "cursor-not-allowed opacity-75" + } + }, + "to": { + "true": "" + } + }, + "compoundVariants": [ + { + "disabled": false, + "active": false, + "to": true, + "class": { + "link": [ + "hover:text-default", + "transition-colors" + ] + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/button.ts b/packages/devtools-app/.nuxt/ui/button.ts new file mode 100644 index 000000000..cf0fd990b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/button.ts @@ -0,0 +1,378 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle", + "ghost", + "link" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "base": [ + "rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75", + "transition-colors" + ], + "label": "truncate", + "leadingIcon": "shrink-0", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailingIcon": "shrink-0" + }, + "variants": { + "fieldGroup": { + "horizontal": "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]", + "vertical": "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "solid": "", + "outline": "", + "soft": "", + "subtle": "", + "ghost": "", + "link": "" + }, + "size": { + "xs": { + "base": "px-2 py-1 text-xs gap-1", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "sm": { + "base": "px-2.5 py-1.5 text-xs gap-1.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "md": { + "base": "px-2.5 py-1.5 text-sm gap-1.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "lg": { + "base": "px-3 py-2 text-sm gap-2", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6" + } + }, + "block": { + "true": { + "base": "w-full justify-center", + "trailingIcon": "ms-auto" + } + }, + "square": { + "true": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "active": { + "true": { + "base": "" + }, + "false": { + "base": "" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-primary hover:bg-primary/75 active:bg-primary/75 disabled:bg-primary aria-disabled:bg-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-secondary hover:bg-secondary/75 active:bg-secondary/75 disabled:bg-secondary aria-disabled:bg-secondary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-success hover:bg-success/75 active:bg-success/75 disabled:bg-success aria-disabled:bg-success focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success" + }, + { + "color": "info" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-info hover:bg-info/75 active:bg-info/75 disabled:bg-info aria-disabled:bg-info focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-warning hover:bg-warning/75 active:bg-warning/75 disabled:bg-warning aria-disabled:bg-warning focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-error hover:bg-error/75 active:bg-error/75 disabled:bg-error aria-disabled:bg-error focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-error" + }, + { + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-primary/50 text-primary hover:bg-primary/10 active:bg-primary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-secondary/50 text-secondary hover:bg-secondary/10 active:bg-secondary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-success/50 text-success hover:bg-success/10 active:bg-success/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-info/50 text-info hover:bg-info/10 active:bg-info/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-warning/50 text-warning hover:bg-warning/10 active:bg-warning/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-error/50 text-error hover:bg-error/10 active:bg-error/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-primary bg-primary/10 hover:bg-primary/15 active:bg-primary/15 focus:outline-none focus-visible:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10" + }, + { + "color": "secondary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-secondary bg-secondary/10 hover:bg-secondary/15 active:bg-secondary/15 focus:outline-none focus-visible:bg-secondary/15 disabled:bg-secondary/10 aria-disabled:bg-secondary/10" + }, + { + "color": "success" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-success bg-success/10 hover:bg-success/15 active:bg-success/15 focus:outline-none focus-visible:bg-success/15 disabled:bg-success/10 aria-disabled:bg-success/10" + }, + { + "color": "info" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-info bg-info/10 hover:bg-info/15 active:bg-info/15 focus:outline-none focus-visible:bg-info/15 disabled:bg-info/10 aria-disabled:bg-info/10" + }, + { + "color": "warning" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-warning bg-warning/10 hover:bg-warning/15 active:bg-warning/15 focus:outline-none focus-visible:bg-warning/15 disabled:bg-warning/10 aria-disabled:bg-warning/10" + }, + { + "color": "error" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-error bg-error/10 hover:bg-error/15 active:bg-error/15 focus:outline-none focus-visible:bg-error/15 disabled:bg-error/10 aria-disabled:bg-error/10" + }, + { + "color": "primary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-primary ring ring-inset ring-primary/25 bg-primary/10 hover:bg-primary/15 active:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-secondary ring ring-inset ring-secondary/25 bg-secondary/10 hover:bg-secondary/15 active:bg-secondary/15 disabled:bg-secondary/10 aria-disabled:bg-secondary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-success ring ring-inset ring-success/25 bg-success/10 hover:bg-success/15 active:bg-success/15 disabled:bg-success/10 aria-disabled:bg-success/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-info ring ring-inset ring-info/25 bg-info/10 hover:bg-info/15 active:bg-info/15 disabled:bg-info/10 aria-disabled:bg-info/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-warning ring ring-inset ring-warning/25 bg-warning/10 hover:bg-warning/15 active:bg-warning/15 disabled:bg-warning/10 aria-disabled:bg-warning/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-error ring ring-inset ring-error/25 bg-error/10 hover:bg-error/15 active:bg-error/15 disabled:bg-error/10 aria-disabled:bg-error/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-primary hover:bg-primary/10 active:bg-primary/10 focus:outline-none focus-visible:bg-primary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent" + }, + { + "color": "secondary" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-secondary hover:bg-secondary/10 active:bg-secondary/10 focus:outline-none focus-visible:bg-secondary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent" + }, + { + "color": "success" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-success hover:bg-success/10 active:bg-success/10 focus:outline-none focus-visible:bg-success/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent" + }, + { + "color": "info" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-info hover:bg-info/10 active:bg-info/10 focus:outline-none focus-visible:bg-info/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent" + }, + { + "color": "warning" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-warning hover:bg-warning/10 active:bg-warning/10 focus:outline-none focus-visible:bg-warning/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent" + }, + { + "color": "error" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-error hover:bg-error/10 active:bg-error/10 focus:outline-none focus-visible:bg-error/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent" + }, + { + "color": "primary" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-primary hover:text-primary/75 active:text-primary/75 disabled:text-primary aria-disabled:text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-secondary hover:text-secondary/75 active:text-secondary/75 disabled:text-secondary aria-disabled:text-secondary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-success hover:text-success/75 active:text-success/75 disabled:text-success aria-disabled:text-success focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-info hover:text-info/75 active:text-info/75 disabled:text-info aria-disabled:text-info focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-warning hover:text-warning/75 active:text-warning/75 disabled:text-warning aria-disabled:text-warning focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-error hover:text-error/75 active:text-error/75 disabled:text-error aria-disabled:text-error focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-inverted hover:bg-inverted/90 active:bg-inverted/90 disabled:bg-inverted aria-disabled:bg-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-inverted" + }, + { + "color": "neutral" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 focus:outline-none focus-visible:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated" + }, + { + "color": "neutral" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "ring ring-inset ring-accented text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "variant": "ghost" as typeof variant[number], + "class": "text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent" + }, + { + "color": "neutral" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": "text-muted hover:text-default active:text-default disabled:text-muted aria-disabled:text-muted focus:outline-none focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-inverted" + }, + { + "size": "xs" as typeof size[number], + "square": true, + "class": "p-1" + }, + { + "size": "sm" as typeof size[number], + "square": true, + "class": "p-1.5" + }, + { + "size": "md" as typeof size[number], + "square": true, + "class": "p-1.5" + }, + { + "size": "lg" as typeof size[number], + "square": true, + "class": "p-2" + }, + { + "size": "xl" as typeof size[number], + "square": true, + "class": "p-2" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/calendar.ts b/packages/devtools-app/.nuxt/ui/calendar.ts new file mode 100644 index 000000000..16249f21d --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/calendar.ts @@ -0,0 +1,331 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "", + "header": "flex items-center justify-between", + "body": "flex flex-col space-y-4 pt-4 sm:flex-row sm:space-x-4 sm:space-y-0", + "heading": "text-center font-medium truncate mx-auto", + "grid": "w-full border-collapse select-none space-y-1 focus:outline-none", + "gridRow": "grid grid-cols-7 place-items-center", + "gridWeekDaysRow": "mb-1 grid w-full grid-cols-7", + "gridBody": "grid", + "headCell": "rounded-md", + "headCellWeek": "rounded-md text-muted", + "cell": "relative text-center", + "cellTrigger": [ + "m-0.5 relative flex items-center justify-center rounded-full whitespace-nowrap focus-visible:ring-2 focus:outline-none data-disabled:text-muted data-unavailable:line-through data-unavailable:text-muted data-unavailable:pointer-events-none data-today:font-semibold data-[outside-view]:text-muted", + "transition" + ], + "cellWeek": "relative text-center text-muted" + }, + "variants": { + "color": { + "primary": { + "headCell": "text-primary", + "cellTrigger": "focus-visible:ring-primary" + }, + "secondary": { + "headCell": "text-secondary", + "cellTrigger": "focus-visible:ring-secondary" + }, + "success": { + "headCell": "text-success", + "cellTrigger": "focus-visible:ring-success" + }, + "info": { + "headCell": "text-info", + "cellTrigger": "focus-visible:ring-info" + }, + "warning": { + "headCell": "text-warning", + "cellTrigger": "focus-visible:ring-warning" + }, + "error": { + "headCell": "text-error", + "cellTrigger": "focus-visible:ring-error" + }, + "neutral": { + "headCell": "text-highlighted", + "cellTrigger": "focus-visible:ring-inverted" + } + }, + "variant": { + "solid": "", + "outline": "", + "soft": "", + "subtle": "" + }, + "size": { + "xs": { + "heading": "text-xs", + "cell": "text-xs", + "cellWeek": "text-xs", + "headCell": "text-[10px]", + "headCellWeek": "text-[10px]", + "cellTrigger": "size-7", + "body": "space-y-2 pt-2" + }, + "sm": { + "heading": "text-xs", + "headCell": "text-xs", + "headCellWeek": "text-xs", + "cellWeek": "text-xs", + "cell": "text-xs", + "cellTrigger": "size-7" + }, + "md": { + "heading": "text-sm", + "headCell": "text-xs", + "headCellWeek": "text-xs", + "cellWeek": "text-xs", + "cell": "text-sm", + "cellTrigger": "size-8" + }, + "lg": { + "heading": "text-md", + "headCell": "text-md", + "headCellWeek": "text-md", + "cellTrigger": "size-9 text-md" + }, + "xl": { + "heading": "text-lg", + "headCell": "text-lg", + "headCellWeek": "text-lg", + "cellTrigger": "size-10 text-lg" + } + }, + "weekNumbers": { + "true": { + "gridRow": "grid-cols-8", + "gridWeekDaysRow": "grid-cols-8 [&>*:first-child]:col-start-2" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-primary data-[selected]:text-inverted data-today:not-data-[selected]:text-primary data-[highlighted]:bg-primary/20 hover:not-data-[selected]:bg-primary/20" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-secondary data-[selected]:text-inverted data-today:not-data-[selected]:text-secondary data-[highlighted]:bg-secondary/20 hover:not-data-[selected]:bg-secondary/20" + } + }, + { + "color": "success" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-success data-[selected]:text-inverted data-today:not-data-[selected]:text-success data-[highlighted]:bg-success/20 hover:not-data-[selected]:bg-success/20" + } + }, + { + "color": "info" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-info data-[selected]:text-inverted data-today:not-data-[selected]:text-info data-[highlighted]:bg-info/20 hover:not-data-[selected]:bg-info/20" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-warning data-[selected]:text-inverted data-today:not-data-[selected]:text-warning data-[highlighted]:bg-warning/20 hover:not-data-[selected]:bg-warning/20" + } + }, + { + "color": "error" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-error data-[selected]:text-inverted data-today:not-data-[selected]:text-error data-[highlighted]:bg-error/20 hover:not-data-[selected]:bg-error/20" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-primary/50 data-[selected]:text-primary data-today:not-data-[selected]:text-primary data-[highlighted]:bg-primary/10 hover:not-data-[selected]:bg-primary/10" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-secondary/50 data-[selected]:text-secondary data-today:not-data-[selected]:text-secondary data-[highlighted]:bg-secondary/10 hover:not-data-[selected]:bg-secondary/10" + } + }, + { + "color": "success" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-success/50 data-[selected]:text-success data-today:not-data-[selected]:text-success data-[highlighted]:bg-success/10 hover:not-data-[selected]:bg-success/10" + } + }, + { + "color": "info" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-info/50 data-[selected]:text-info data-today:not-data-[selected]:text-info data-[highlighted]:bg-info/10 hover:not-data-[selected]:bg-info/10" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-warning/50 data-[selected]:text-warning data-today:not-data-[selected]:text-warning data-[highlighted]:bg-warning/10 hover:not-data-[selected]:bg-warning/10" + } + }, + { + "color": "error" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-error/50 data-[selected]:text-error data-today:not-data-[selected]:text-error data-[highlighted]:bg-error/10 hover:not-data-[selected]:bg-error/10" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-primary/10 data-[selected]:text-primary data-today:not-data-[selected]:text-primary data-[highlighted]:bg-primary/20 hover:not-data-[selected]:bg-primary/20" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-secondary/10 data-[selected]:text-secondary data-today:not-data-[selected]:text-secondary data-[highlighted]:bg-secondary/20 hover:not-data-[selected]:bg-secondary/20" + } + }, + { + "color": "success" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-success/10 data-[selected]:text-success data-today:not-data-[selected]:text-success data-[highlighted]:bg-success/20 hover:not-data-[selected]:bg-success/20" + } + }, + { + "color": "info" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-info/10 data-[selected]:text-info data-today:not-data-[selected]:text-info data-[highlighted]:bg-info/20 hover:not-data-[selected]:bg-info/20" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-warning/10 data-[selected]:text-warning data-today:not-data-[selected]:text-warning data-[highlighted]:bg-warning/20 hover:not-data-[selected]:bg-warning/20" + } + }, + { + "color": "error" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-error/10 data-[selected]:text-error data-today:not-data-[selected]:text-error data-[highlighted]:bg-error/20 hover:not-data-[selected]:bg-error/20" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-primary/10 data-[selected]:text-primary data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-primary/25 data-today:not-data-[selected]:text-primary data-[highlighted]:bg-primary/20 hover:not-data-[selected]:bg-primary/20" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-secondary/10 data-[selected]:text-secondary data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-secondary/25 data-today:not-data-[selected]:text-secondary data-[highlighted]:bg-secondary/20 hover:not-data-[selected]:bg-secondary/20" + } + }, + { + "color": "success" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-success/10 data-[selected]:text-success data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-success/25 data-today:not-data-[selected]:text-success data-[highlighted]:bg-success/20 hover:not-data-[selected]:bg-success/20" + } + }, + { + "color": "info" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-info/10 data-[selected]:text-info data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-info/25 data-today:not-data-[selected]:text-info data-[highlighted]:bg-info/20 hover:not-data-[selected]:bg-info/20" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-warning/10 data-[selected]:text-warning data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-warning/25 data-today:not-data-[selected]:text-warning data-[highlighted]:bg-warning/20 hover:not-data-[selected]:bg-warning/20" + } + }, + { + "color": "error" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-error/10 data-[selected]:text-error data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-error/25 data-today:not-data-[selected]:text-error data-[highlighted]:bg-error/20 hover:not-data-[selected]:bg-error/20" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-inverted data-[selected]:text-inverted data-today:not-data-[selected]:text-highlighted data-[highlighted]:bg-inverted/20 hover:not-data-[selected]:bg-inverted/10" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-accented data-[selected]:text-default data-[selected]:bg-default data-today:not-data-[selected]:text-highlighted data-[highlighted]:bg-inverted/10 hover:not-data-[selected]:bg-inverted/10" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-elevated data-[selected]:text-default data-today:not-data-[selected]:text-highlighted data-[highlighted]:bg-inverted/20 hover:not-data-[selected]:bg-inverted/10" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": { + "cellTrigger": "data-[selected]:bg-elevated data-[selected]:text-default data-[selected]:ring data-[selected]:ring-inset data-[selected]:ring-accented data-today:not-data-[selected]:text-highlighted data-[highlighted]:bg-inverted/20 hover:not-data-[selected]:bg-inverted/10" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/card.ts b/packages/devtools-app/.nuxt/ui/card.ts new file mode 100644 index 000000000..0537eb1f8 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/card.ts @@ -0,0 +1,34 @@ +const variant = [ + "solid", + "outline", + "soft", + "subtle" +] as const + +export default { + "slots": { + "root": "rounded-lg overflow-hidden", + "header": "p-4 sm:px-6", + "body": "p-4 sm:p-6", + "footer": "p-4 sm:px-6" + }, + "variants": { + "variant": { + "solid": { + "root": "bg-inverted text-inverted" + }, + "outline": { + "root": "bg-default ring ring-default divide-y divide-default" + }, + "soft": { + "root": "bg-elevated/50 divide-y divide-default" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default divide-y divide-default" + } + } + }, + "defaultVariants": { + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/carousel.ts b/packages/devtools-app/.nuxt/ui/carousel.ts new file mode 100644 index 000000000..9f5d99458 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/carousel.ts @@ -0,0 +1,38 @@ +export default { + "slots": { + "root": "relative focus:outline-none", + "viewport": "overflow-hidden", + "container": "flex items-start", + "item": "min-w-0 shrink-0 basis-full", + "controls": "", + "arrows": "", + "prev": "absolute rounded-full", + "next": "absolute rounded-full", + "dots": "absolute inset-x-0 -bottom-7 flex flex-wrap items-center justify-center gap-3", + "dot": [ + "cursor-pointer size-3 bg-accented rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-primary", + "transition" + ] + }, + "variants": { + "orientation": { + "vertical": { + "container": "flex-col -mt-4", + "item": "pt-4", + "prev": "top-4 sm:-top-12 left-1/2 -translate-x-1/2 rotate-90 rtl:-rotate-90", + "next": "bottom-4 sm:-bottom-12 left-1/2 -translate-x-1/2 rotate-90 rtl:-rotate-90" + }, + "horizontal": { + "container": "flex-row -ms-4", + "item": "ps-4", + "prev": "start-4 sm:-start-12 top-1/2 -translate-y-1/2", + "next": "end-4 sm:-end-12 top-1/2 -translate-y-1/2" + } + }, + "active": { + "true": { + "dot": "data-[state=active]:bg-inverted" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/changelog-version.ts b/packages/devtools-app/.nuxt/ui/changelog-version.ts new file mode 100644 index 000000000..c118a2cb9 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/changelog-version.ts @@ -0,0 +1,45 @@ +export default { + "slots": { + "root": "relative", + "container": "flex flex-col mx-auto max-w-2xl", + "header": "", + "meta": "flex items-center gap-3 mb-2", + "date": "text-sm/6 text-toned truncate", + "badge": "", + "title": "relative text-xl text-pretty font-semibold text-highlighted", + "description": "text-base text-pretty text-muted mt-1", + "imageWrapper": "relative overflow-hidden rounded-lg aspect-[16/9] mt-5 group/changelog-version-image", + "image": "object-cover object-top w-full h-full", + "authors": "flex flex-wrap gap-x-4 gap-y-1.5", + "footer": "border-t border-default pt-5 flex items-center justify-between", + "indicator": "absolute start-0 top-0 w-32 hidden lg:flex items-center justify-end gap-3 min-w-0", + "dot": "size-4 rounded-full bg-default ring ring-default flex items-center justify-center my-1", + "dotInner": "size-2 rounded-full bg-primary" + }, + "variants": { + "body": { + "false": { + "footer": "mt-5" + } + }, + "badge": { + "false": { + "meta": "lg:hidden" + } + }, + "to": { + "true": { + "title": [ + "has-focus-visible:ring-2 has-focus-visible:ring-primary rounded-xs", + "transition" + ], + "image": "transform transition-transform duration-200 group-hover/changelog-version-image:scale-105 group-has-focus-visible/changelog-version-image:scale-105" + } + }, + "hidden": { + "true": { + "date": "lg:hidden" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/changelog-versions.ts b/packages/devtools-app/.nuxt/ui/changelog-versions.ts new file mode 100644 index 000000000..0e5383d97 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/changelog-versions.ts @@ -0,0 +1,8 @@ +export default { + "slots": { + "root": "relative", + "container": "flex flex-col gap-y-8 sm:gap-y-12 lg:gap-y-16", + "indicator": "absolute hidden lg:block overflow-hidden inset-y-3 start-32 h-full w-px bg-border -ms-[8.5px]", + "beam": "absolute start-0 top-0 w-full bg-primary will-change-[height]" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-message.ts b/packages/devtools-app/.nuxt/ui/chat-message.ts new file mode 100644 index 000000000..05252457e --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-message.ts @@ -0,0 +1,138 @@ +const variant = [ + "solid", + "outline", + "soft", + "subtle", + "naked" +] as const + +const side = [ + "left", + "right" +] as const + +export default { + "slots": { + "root": "group/message relative w-full", + "container": "relative flex items-start", + "leading": "inline-flex items-center justify-center min-h-6", + "leadingIcon": "shrink-0", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "files": "flex items-center gap-1.5 mb-1.5", + "content": "relative text-pretty min-w-0 *:first:mt-0 *:last:mb-0", + "actions": [ + "opacity-0 group-hover/message:opacity-100 absolute bottom-0 flex items-center", + "transition-opacity" + ] + }, + "variants": { + "variant": { + "solid": { + "content": "bg-inverted text-inverted" + }, + "outline": { + "content": "bg-default ring ring-default" + }, + "soft": { + "content": "bg-elevated/50" + }, + "subtle": { + "content": "bg-elevated/50 ring ring-default" + }, + "naked": { + "content": "" + } + }, + "side": { + "left": {}, + "right": { + "container": "justify-end ms-auto max-w-[75%]", + "files": "justify-end" + } + }, + "leading": { + "true": "" + }, + "actions": { + "true": "" + }, + "compact": { + "true": { + "root": "scroll-mt-3", + "container": "gap-1.5 pb-3", + "content": "space-y-2", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs" + }, + "false": { + "root": "scroll-mt-4 sm:scroll-mt-6", + "container": "gap-3 pb-8", + "content": "space-y-4", + "leadingIcon": "size-8", + "leadingAvatarSize": "md" + } + } + }, + "compoundVariants": [ + { + "compact": true, + "actions": true, + "class": { + "container": "pb-8" + } + }, + { + "leading": true, + "compact": false, + "side": "left" as typeof side[number], + "class": { + "actions": "left-11" + } + }, + { + "leading": true, + "compact": true, + "side": "left" as typeof side[number], + "class": { + "actions": "left-6.5" + } + }, + { + "variant": [ + "solid" as typeof variant[number], + "outline" as typeof variant[number], + "soft" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "compact": false, + "class": { + "content": "px-4 py-3 rounded-lg min-h-12", + "leading": "mt-2" + } + }, + { + "variant": [ + "solid" as typeof variant[number], + "outline" as typeof variant[number], + "soft" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "compact": true, + "class": { + "content": "px-2 py-1 rounded-lg min-h-8", + "leading": "mt-1" + } + }, + { + "variant": "naked" as typeof variant[number], + "side": "left" as typeof side[number], + "class": { + "content": "w-full" + } + } + ], + "defaultVariants": { + "variant": "naked" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-messages.ts b/packages/devtools-app/.nuxt/ui/chat-messages.ts new file mode 100644 index 000000000..20cac7617 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-messages.ts @@ -0,0 +1,14 @@ +export default { + "slots": { + "root": "w-full flex flex-col gap-1 flex-1 px-2.5 [&>article]:last-of-type:min-h-(--last-message-height)", + "indicator": "h-6 flex items-center gap-1 py-3 *:size-2 *:rounded-full *:bg-elevated [&>*:nth-child(1)]:animate-[bounce_1s_infinite] [&>*:nth-child(2)]:animate-[bounce_1s_0.15s_infinite] [&>*:nth-child(3)]:animate-[bounce_1s_0.3s_infinite]", + "viewport": "absolute inset-x-0 top-[86%] data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]", + "autoScroll": "rounded-full absolute right-1/2 translate-x-1/2 bottom-0" + }, + "variants": { + "compact": { + "true": "", + "false": "" + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-palette.ts b/packages/devtools-app/.nuxt/ui/chat-palette.ts new file mode 100644 index 000000000..8156e8723 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-palette.ts @@ -0,0 +1,8 @@ +export default { + "slots": { + "root": "relative flex-1 flex flex-col min-h-0 min-w-0", + "prompt": "px-0 rounded-t-none border-t border-default", + "close": "", + "content": "overflow-y-auto flex-1 flex flex-col py-3" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-prompt-submit.ts b/packages/devtools-app/.nuxt/ui/chat-prompt-submit.ts new file mode 100644 index 000000000..04d8a5abe --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-prompt-submit.ts @@ -0,0 +1,5 @@ +export default { + "slots": { + "base": "" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-prompt.ts b/packages/devtools-app/.nuxt/ui/chat-prompt.ts new file mode 100644 index 000000000..0537fb28f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-prompt.ts @@ -0,0 +1,35 @@ +const variant = [ + "outline", + "soft", + "subtle", + "naked" +] as const + +export default { + "slots": { + "root": "relative flex flex-col items-stretch gap-2 px-2.5 py-2 w-full rounded-lg backdrop-blur", + "header": "flex items-center gap-1.5", + "body": "items-start", + "footer": "flex items-center justify-between gap-1.5", + "base": "" + }, + "variants": { + "variant": { + "outline": { + "root": "bg-default/75 ring ring-default" + }, + "soft": { + "root": "bg-elevated/50" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default" + }, + "naked": { + "root": "" + } + } + }, + "defaultVariants": { + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-reasoning.ts b/packages/devtools-app/.nuxt/ui/chat-reasoning.ts new file mode 100644 index 000000000..f267d4532 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-reasoning.ts @@ -0,0 +1,36 @@ +export default { + "slots": { + "root": "", + "trigger": [ + "group flex w-full items-center gap-1.5 text-muted text-sm disabled:cursor-default disabled:hover:text-muted hover:text-default focus-visible:outline-offset-2 focus-visible:outline-primary min-w-0", + "transition-colors" + ], + "leading": "relative size-4 shrink-0", + "leadingIcon": "size-4 shrink-0", + "chevronIcon": "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200", + "label": "truncate", + "trailingIcon": "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200", + "content": "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden", + "body": "max-h-[200px] pt-2 overflow-y-auto text-sm text-dimmed whitespace-pre-wrap" + }, + "variants": { + "chevron": { + "leading": { + "leadingIcon": "group-hover:opacity-0" + }, + "trailing": "" + }, + "alone": { + "false": { + "leadingIcon": [ + "absolute inset-0 group-data-[state=open]:opacity-0", + "transition-opacity duration-200" + ], + "chevronIcon": [ + "absolute inset-0 opacity-0 group-hover:opacity-100 group-data-[state=open]:opacity-100", + "transition-[rotate,opacity] duration-200" + ] + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-shimmer.ts b/packages/devtools-app/.nuxt/ui/chat-shimmer.ts new file mode 100644 index 000000000..11f64bc20 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-shimmer.ts @@ -0,0 +1,3 @@ +export default { + "base": "text-transparent bg-clip-text bg-no-repeat bg-size-[calc(200%+var(--spread)*2+2px)_100%,auto] bg-[image:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--ui-text-highlighted),#0000_calc(50%+var(--spread))),linear-gradient(var(--ui-text-muted),var(--ui-text-muted))] animate-[shimmer_var(--duration)_linear_infinite] rtl:animate-[shimmer-rtl_var(--duration)_linear_infinite] will-change-[background-position]" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chat-tool.ts b/packages/devtools-app/.nuxt/ui/chat-tool.ts new file mode 100644 index 000000000..4a5212267 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chat-tool.ts @@ -0,0 +1,61 @@ +const variant = [ + "inline", + "card" +] as const + +export default { + "slots": { + "root": "", + "trigger": [ + "group flex w-full items-center gap-1.5 text-muted text-sm disabled:cursor-default disabled:hover:text-muted hover:text-default focus-visible:outline-offset-2 focus-visible:outline-primary min-w-0", + "transition-colors" + ], + "leading": "relative size-4 shrink-0", + "leadingIcon": "size-4 shrink-0", + "chevronIcon": "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200", + "label": "truncate", + "suffix": "text-dimmed ms-1", + "trailingIcon": "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200", + "content": "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden", + "body": "text-sm text-dimmed whitespace-pre-wrap" + }, + "variants": { + "variant": { + "inline": { + "body": "pt-2" + }, + "card": { + "root": "rounded-md ring ring-default overflow-hidden", + "trigger": "px-2 py-1", + "trailingIcon": "ms-auto", + "body": "border-t border-default p-2 max-h-[200px] overflow-y-auto" + } + }, + "chevron": { + "leading": { + "leadingIcon": "group-hover:opacity-0" + }, + "trailing": "" + }, + "loading": { + "true": { + "leadingIcon": "animate-spin" + } + }, + "alone": { + "false": { + "leadingIcon": [ + "absolute inset-0 group-data-[state=open]:opacity-0", + "transition-opacity duration-200" + ], + "chevronIcon": [ + "absolute inset-0 opacity-0 group-hover:opacity-100 group-data-[state=open]:opacity-100", + "transition-[rotate,opacity] duration-200" + ] + } + } + }, + "defaultVariants": { + "variant": "inline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/checkbox-group.ts b/packages/devtools-app/.nuxt/ui/checkbox-group.ts new file mode 100644 index 000000000..48c47b535 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/checkbox-group.ts @@ -0,0 +1,207 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "list", + "card", + "table" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "relative", + "fieldset": "flex gap-x-2", + "legend": "mb-1 block font-medium text-default", + "item": "" + }, + "variants": { + "orientation": { + "horizontal": { + "fieldset": "flex-row" + }, + "vertical": { + "fieldset": "flex-col" + } + }, + "color": { + "primary": {}, + "secondary": {}, + "success": {}, + "info": {}, + "warning": {}, + "error": {}, + "neutral": {} + }, + "variant": { + "list": {}, + "card": {}, + "table": { + "item": "border border-muted" + } + }, + "size": { + "xs": { + "fieldset": "gap-y-0.5", + "legend": "text-xs" + }, + "sm": { + "fieldset": "gap-y-0.5", + "legend": "text-xs" + }, + "md": { + "fieldset": "gap-y-1", + "legend": "text-sm" + }, + "lg": { + "fieldset": "gap-y-1", + "legend": "text-sm" + }, + "xl": { + "fieldset": "gap-y-1.5", + "legend": "text-base" + } + }, + "required": { + "true": { + "legend": "after:content-['*'] after:ms-0.5 after:text-error" + } + }, + "disabled": { + "true": {} + } + }, + "compoundVariants": [ + { + "size": "xs" as typeof size[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "p-2.5" + } + }, + { + "size": "sm" as typeof size[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "p-3" + } + }, + { + "size": "md" as typeof size[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "p-3.5" + } + }, + { + "size": "lg" as typeof size[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "p-4" + } + }, + { + "size": "xl" as typeof size[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "p-4.5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "first-of-type:rounded-s-lg last-of-type:rounded-e-lg", + "fieldset": "gap-0 -space-x-px" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "first-of-type:rounded-t-lg last-of-type:rounded-b-lg", + "fieldset": "gap-0 -space-y-px" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-primary/10 has-data-[state=checked]:border-primary/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-secondary/10 has-data-[state=checked]:border-secondary/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "success" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-success/10 has-data-[state=checked]:border-success/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "info" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-info/10 has-data-[state=checked]:border-info/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-warning/10 has-data-[state=checked]:border-warning/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "error" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-error/10 has-data-[state=checked]:border-error/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-elevated has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:z-[1]" + } + }, + { + "variant": "table" as typeof variant[number], + "disabled": true, + "class": { + "item": "cursor-not-allowed" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "variant": "list" as typeof variant[number], + "color": "primary" as typeof color[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/checkbox.ts b/packages/devtools-app/.nuxt/ui/checkbox.ts new file mode 100644 index 000000000..2656e4bea --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/checkbox.ts @@ -0,0 +1,237 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "list", + "card" +] as const + +const indicator = [ + "start", + "end", + "hidden" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "relative flex items-start", + "container": "flex items-center", + "base": "rounded-sm ring ring-inset ring-accented overflow-hidden focus-visible:outline-2 focus-visible:outline-offset-2", + "indicator": "flex items-center justify-center size-full text-inverted" as typeof indicator[number], + "icon": "shrink-0 size-full", + "wrapper": "w-full", + "label": "block font-medium text-default", + "description": "text-muted" + }, + "variants": { + "color": { + "primary": { + "base": "focus-visible:outline-primary", + "indicator": "bg-primary" as typeof indicator[number] + }, + "secondary": { + "base": "focus-visible:outline-secondary", + "indicator": "bg-secondary" as typeof indicator[number] + }, + "success": { + "base": "focus-visible:outline-success", + "indicator": "bg-success" as typeof indicator[number] + }, + "info": { + "base": "focus-visible:outline-info", + "indicator": "bg-info" as typeof indicator[number] + }, + "warning": { + "base": "focus-visible:outline-warning", + "indicator": "bg-warning" as typeof indicator[number] + }, + "error": { + "base": "focus-visible:outline-error", + "indicator": "bg-error" as typeof indicator[number] + }, + "neutral": { + "base": "focus-visible:outline-inverted", + "indicator": "bg-inverted" as typeof indicator[number] + } + }, + "variant": { + "list": { + "root": "" + }, + "card": { + "root": "border border-muted rounded-lg" + } + }, + "indicator": { + "start": { + "root": "flex-row", + "wrapper": "ms-2" + }, + "end": { + "root": "flex-row-reverse", + "wrapper": "me-2" + }, + "hidden": { + "base": "sr-only", + "wrapper": "text-center" + } + }, + "size": { + "xs": { + "base": "size-3", + "container": "h-4", + "wrapper": "text-xs" + }, + "sm": { + "base": "size-3.5", + "container": "h-4", + "wrapper": "text-xs" + }, + "md": { + "base": "size-4", + "container": "h-5", + "wrapper": "text-sm" + }, + "lg": { + "base": "size-4.5", + "container": "h-5", + "wrapper": "text-sm" + }, + "xl": { + "base": "size-5", + "container": "h-6", + "wrapper": "text-base" + } + }, + "required": { + "true": { + "label": "after:content-['*'] after:ms-0.5 after:text-error" + } + }, + "disabled": { + "true": { + "root": "opacity-75", + "base": "cursor-not-allowed", + "label": "cursor-not-allowed", + "description": "cursor-not-allowed" + } + }, + "checked": { + "true": "" + } + }, + "compoundVariants": [ + { + "size": "xs" as typeof size[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "p-2.5" + } + }, + { + "size": "sm" as typeof size[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "p-3" + } + }, + { + "size": "md" as typeof size[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "p-3.5" + } + }, + { + "size": "lg" as typeof size[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "p-4" + } + }, + { + "size": "xl" as typeof size[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "p-4.5" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-error" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "root": "has-data-[state=checked]:border-inverted" + } + }, + { + "variant": "card" as typeof variant[number], + "disabled": true, + "class": { + "root": "cursor-not-allowed" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "list" as typeof variant[number], + "indicator": "start" as typeof indicator[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/chip.ts b/packages/devtools-app/.nuxt/ui/chip.ts new file mode 100644 index 000000000..ba454210b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/chip.ts @@ -0,0 +1,96 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "3xs", + "2xs", + "xs", + "sm", + "md", + "lg", + "xl", + "2xl", + "3xl" +] as const + +const position = [ + "top-right", + "bottom-right", + "top-left", + "bottom-left" +] as const + +export default { + "slots": { + "root": "relative inline-flex items-center justify-center shrink-0", + "base": "rounded-full ring ring-bg flex items-center justify-center text-inverted font-medium whitespace-nowrap" + }, + "variants": { + "color": { + "primary": "bg-primary", + "secondary": "bg-secondary", + "success": "bg-success", + "info": "bg-info", + "warning": "bg-warning", + "error": "bg-error", + "neutral": "bg-inverted" + }, + "size": { + "3xs": "h-[4px] min-w-[4px] text-[4px]", + "2xs": "h-[5px] min-w-[5px] text-[5px]", + "xs": "h-[6px] min-w-[6px] text-[6px]", + "sm": "h-[7px] min-w-[7px] text-[7px]", + "md": "h-[8px] min-w-[8px] text-[8px]", + "lg": "h-[9px] min-w-[9px] text-[9px]", + "xl": "h-[10px] min-w-[10px] text-[10px]", + "2xl": "h-[11px] min-w-[11px] text-[11px]", + "3xl": "h-[12px] min-w-[12px] text-[12px]" + }, + "position": { + "top-right": "top-0 right-0", + "bottom-right": "bottom-0 right-0", + "top-left": "top-0 left-0", + "bottom-left": "bottom-0 left-0" + }, + "inset": { + "false": "" + }, + "standalone": { + "false": "absolute" + } + }, + "compoundVariants": [ + { + "position": "top-right" as typeof position[number], + "inset": false, + "class": "-translate-y-1/2 translate-x-1/2 transform" + }, + { + "position": "bottom-right" as typeof position[number], + "inset": false, + "class": "translate-y-1/2 translate-x-1/2 transform" + }, + { + "position": "top-left" as typeof position[number], + "inset": false, + "class": "-translate-y-1/2 -translate-x-1/2 transform" + }, + { + "position": "bottom-left" as typeof position[number], + "inset": false, + "class": "translate-y-1/2 -translate-x-1/2 transform" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "position": "top-right" as typeof position[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/collapsible.ts b/packages/devtools-app/.nuxt/ui/collapsible.ts new file mode 100644 index 000000000..cb2fcd6b8 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/collapsible.ts @@ -0,0 +1,6 @@ +export default { + "slots": { + "root": "", + "content": "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/color-picker.ts b/packages/devtools-app/.nuxt/ui/color-picker.ts new file mode 100644 index 000000000..4243126ea --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/color-picker.ts @@ -0,0 +1,47 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "data-[disabled]:opacity-75", + "picker": "flex gap-4", + "selector": "rounded-md touch-none", + "selectorBackground": "w-full h-full relative rounded-md", + "selectorThumb": "-translate-y-1/2 -translate-x-1/2 absolute size-4 ring-2 ring-white rounded-full cursor-pointer data-[disabled]:cursor-not-allowed", + "track": "w-[8px] relative rounded-md touch-none", + "trackThumb": "absolute transform -translate-y-1/2 -translate-x-[4px] rtl:translate-x-[4px] size-4 rounded-full ring-2 ring-white cursor-pointer data-[disabled]:cursor-not-allowed" + }, + "variants": { + "size": { + "xs": { + "selector": "w-38 h-38", + "track": "h-38" + }, + "sm": { + "selector": "w-40 h-40", + "track": "h-40" + }, + "md": { + "selector": "w-42 h-42", + "track": "h-42" + }, + "lg": { + "selector": "w-44 h-44", + "track": "h-44" + }, + "xl": { + "selector": "w-46 h-46", + "track": "h-46" + } + } + }, + "compoundVariants": [], + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/command-palette.ts b/packages/devtools-app/.nuxt/ui/command-palette.ts new file mode 100644 index 000000000..9a99472b7 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/command-palette.ts @@ -0,0 +1,150 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "flex flex-col min-h-0 min-w-0 divide-y divide-default", + "input": "", + "close": "", + "back": "p-0", + "content": "relative overflow-hidden flex flex-col", + "footer": "p-1", + "viewport": "relative scroll-py-1 overflow-y-auto flex-1 focus:outline-none", + "group": "p-1 isolate", + "empty": "text-center text-muted", + "label": "font-semibold text-highlighted", + "item": "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75", + "itemLeadingIcon": "shrink-0", + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemLeadingChip": "shrink-0", + "itemLeadingChipSize": "", + "itemTrailing": "ms-auto inline-flex items-center", + "itemTrailingIcon": "shrink-0", + "itemTrailingHighlightedIcon": "shrink-0 text-dimmed hidden group-data-highlighted:inline-flex", + "itemTrailingKbds": "hidden lg:inline-flex items-center shrink-0", + "itemTrailingKbdsSize": "", + "itemWrapper": "flex-1 flex flex-col text-start min-w-0", + "itemLabel": "truncate space-x-1 text-dimmed", + "itemDescription": "truncate text-muted", + "itemLabelBase": "text-highlighted [&>mark]:text-inverted [&>mark]:bg-primary", + "itemLabelPrefix": "text-default", + "itemLabelSuffix": "text-dimmed [&>mark]:text-inverted [&>mark]:bg-primary" + }, + "variants": { + "virtualize": { + "true": { + "viewport": "p-1 isolate" + }, + "false": { + "viewport": "divide-y divide-default" + } + }, + "size": { + "xs": { + "input": "[&>input]:h-10", + "empty": "py-3 text-xs", + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailing": "gap-1", + "itemTrailingIcon": "size-4", + "itemTrailingHighlightedIcon": "size-4", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "sm" + }, + "sm": { + "input": "[&>input]:h-11", + "empty": "py-4 text-xs", + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailing": "gap-1.5", + "itemTrailingIcon": "size-4", + "itemTrailingHighlightedIcon": "size-4", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "sm" + }, + "md": { + "input": "[&>input]:h-12", + "empty": "py-6 text-sm", + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailing": "gap-1.5", + "itemTrailingIcon": "size-5", + "itemTrailingHighlightedIcon": "size-5", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "md" + }, + "lg": { + "input": "[&>input]:h-13", + "empty": "py-7 text-sm", + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailing": "gap-2", + "itemTrailingIcon": "size-5", + "itemTrailingHighlightedIcon": "size-5", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "md" + }, + "xl": { + "input": "[&>input]:h-14", + "empty": "py-8 text-base", + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6", + "itemLeadingAvatarSize": "xs", + "itemLeadingChip": "size-6", + "itemLeadingChipSize": "lg", + "itemTrailing": "gap-2", + "itemTrailingIcon": "size-6", + "itemTrailingHighlightedIcon": "size-6", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "lg" + } + }, + "active": { + "true": { + "item": "text-highlighted before:bg-elevated", + "itemLeadingIcon": "text-default" + }, + "false": { + "item": [ + "text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ] + } + }, + "loading": { + "true": { + "itemLeadingIcon": "animate-spin" + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/container.ts b/packages/devtools-app/.nuxt/ui/container.ts new file mode 100644 index 000000000..31769fbc9 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/container.ts @@ -0,0 +1,3 @@ +export default { + "base": "w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/context-menu.ts b/packages/devtools-app/.nuxt/ui/context-menu.ts new file mode 100644 index 000000000..b14ee5d64 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/context-menu.ts @@ -0,0 +1,219 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "content": "min-w-32 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-context-menu-content-transform-origin) flex flex-col", + "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "label": "w-full flex items-center font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75", + "itemLeadingIcon": "shrink-0", + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemTrailing": "ms-auto inline-flex gap-1.5 items-center", + "itemTrailingIcon": "shrink-0", + "itemTrailingKbds": "hidden lg:inline-flex items-center shrink-0", + "itemTrailingKbdsSize": "", + "itemWrapper": "flex-1 flex flex-col text-start min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "itemLabelExternalIcon": "inline-block size-3 align-top text-dimmed" + }, + "variants": { + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "active": { + "true": { + "item": "text-highlighted before:bg-elevated", + "itemLeadingIcon": "text-default" + }, + "false": { + "item": [ + "text-default data-highlighted:text-highlighted data-[state=open]:text-highlighted data-highlighted:before:bg-elevated/50 data-[state=open]:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "text-dimmed group-data-highlighted:text-default group-data-[state=open]:text-default", + "transition-colors" + ] + } + }, + "loading": { + "true": { + "itemLeadingIcon": "animate-spin" + } + }, + "size": { + "xs": { + "label": "p-1 text-xs gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemTrailingIcon": "size-4", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "sm" + }, + "sm": { + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemTrailingIcon": "size-4", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "sm" + }, + "md": { + "label": "p-1.5 text-sm gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemTrailingIcon": "size-5", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "md" + }, + "lg": { + "label": "p-2 text-sm gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemTrailingIcon": "size-5", + "itemTrailingKbds": "gap-1", + "itemTrailingKbdsSize": "md" + }, + "xl": { + "label": "p-2 text-base gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6", + "itemLeadingAvatarSize": "xs", + "itemTrailingIcon": "size-6", + "itemTrailingKbds": "gap-1", + "itemTrailingKbdsSize": "lg" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "active": false, + "class": { + "item": "text-primary data-highlighted:text-primary data-highlighted:before:bg-primary/10 data-[state=open]:before:bg-primary/10", + "itemLeadingIcon": "text-primary/75 group-data-highlighted:text-primary group-data-[state=open]:text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "active": false, + "class": { + "item": "text-secondary data-highlighted:text-secondary data-highlighted:before:bg-secondary/10 data-[state=open]:before:bg-secondary/10", + "itemLeadingIcon": "text-secondary/75 group-data-highlighted:text-secondary group-data-[state=open]:text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "active": false, + "class": { + "item": "text-success data-highlighted:text-success data-highlighted:before:bg-success/10 data-[state=open]:before:bg-success/10", + "itemLeadingIcon": "text-success/75 group-data-highlighted:text-success group-data-[state=open]:text-success" + } + }, + { + "color": "info" as typeof color[number], + "active": false, + "class": { + "item": "text-info data-highlighted:text-info data-highlighted:before:bg-info/10 data-[state=open]:before:bg-info/10", + "itemLeadingIcon": "text-info/75 group-data-highlighted:text-info group-data-[state=open]:text-info" + } + }, + { + "color": "warning" as typeof color[number], + "active": false, + "class": { + "item": "text-warning data-highlighted:text-warning data-highlighted:before:bg-warning/10 data-[state=open]:before:bg-warning/10", + "itemLeadingIcon": "text-warning/75 group-data-highlighted:text-warning group-data-[state=open]:text-warning" + } + }, + { + "color": "error" as typeof color[number], + "active": false, + "class": { + "item": "text-error data-highlighted:text-error data-highlighted:before:bg-error/10 data-[state=open]:before:bg-error/10", + "itemLeadingIcon": "text-error/75 group-data-highlighted:text-error group-data-[state=open]:text-error" + } + }, + { + "color": "primary" as typeof color[number], + "active": true, + "class": { + "item": "text-primary before:bg-primary/10", + "itemLeadingIcon": "text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "active": true, + "class": { + "item": "text-secondary before:bg-secondary/10", + "itemLeadingIcon": "text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "active": true, + "class": { + "item": "text-success before:bg-success/10", + "itemLeadingIcon": "text-success" + } + }, + { + "color": "info" as typeof color[number], + "active": true, + "class": { + "item": "text-info before:bg-info/10", + "itemLeadingIcon": "text-info" + } + }, + { + "color": "warning" as typeof color[number], + "active": true, + "class": { + "item": "text-warning before:bg-warning/10", + "itemLeadingIcon": "text-warning" + } + }, + { + "color": "error" as typeof color[number], + "active": true, + "class": { + "item": "text-error before:bg-error/10", + "itemLeadingIcon": "text-error" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-group.ts b/packages/devtools-app/.nuxt/ui/dashboard-group.ts new file mode 100644 index 000000000..6bc323dfe --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-group.ts @@ -0,0 +1,3 @@ +export default { + "base": "fixed inset-0 flex overflow-hidden" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-navbar.ts b/packages/devtools-app/.nuxt/ui/dashboard-navbar.ts new file mode 100644 index 000000000..ed807e622 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-navbar.ts @@ -0,0 +1,21 @@ +export default { + "slots": { + "root": "h-(--ui-header-height) shrink-0 flex items-center justify-between border-b border-default px-4 sm:px-6 gap-1.5", + "left": "flex items-center gap-1.5 min-w-0", + "icon": "shrink-0 size-5 self-center me-1.5", + "title": "flex items-center gap-1.5 font-semibold text-highlighted truncate", + "center": "hidden lg:flex", + "right": "flex items-center shrink-0 gap-1.5", + "toggle": "" + }, + "variants": { + "toggleSide": { + "left": { + "toggle": "" + }, + "right": { + "toggle": "" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-panel.ts b/packages/devtools-app/.nuxt/ui/dashboard-panel.ts new file mode 100644 index 000000000..3e645824a --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-panel.ts @@ -0,0 +1,17 @@ +export default { + "slots": { + "root": "relative flex flex-col min-w-0 min-h-svh lg:not-last:border-e lg:not-last:border-default shrink-0", + "body": "flex flex-col gap-4 sm:gap-6 flex-1 overflow-y-auto p-4 sm:p-6", + "handle": "" + }, + "variants": { + "size": { + "true": { + "root": "w-full lg:w-(--width)" + }, + "false": { + "root": "flex-1" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-resize-handle.ts b/packages/devtools-app/.nuxt/ui/dashboard-resize-handle.ts new file mode 100644 index 000000000..d3ff74bd1 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-resize-handle.ts @@ -0,0 +1,3 @@ +export default { + "base": "hidden lg:block touch-none select-none cursor-ew-resize relative before:absolute before:inset-y-0 before:-left-1.5 before:-right-1.5 before:z-1" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-search-button.ts b/packages/devtools-app/.nuxt/ui/dashboard-search-button.ts new file mode 100644 index 000000000..0a6bd0635 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-search-button.ts @@ -0,0 +1,15 @@ +export default { + "slots": { + "base": "", + "label": "", + "trailing": "hidden lg:flex items-center gap-0.5 ms-auto" + }, + "variants": { + "collapsed": { + "true": { + "label": "hidden", + "trailing": "lg:hidden" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-search.ts b/packages/devtools-app/.nuxt/ui/dashboard-search.ts new file mode 100644 index 000000000..c113eddb2 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-search.ts @@ -0,0 +1,31 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "modal": "", + "input": "" + }, + "variants": { + "fullscreen": { + "false": { + "modal": "sm:max-w-3xl h-full sm:h-[28rem]" + } + }, + "size": { + "xs": {}, + "sm": {}, + "md": {}, + "lg": {}, + "xl": {} + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-sidebar-collapse.ts b/packages/devtools-app/.nuxt/ui/dashboard-sidebar-collapse.ts new file mode 100644 index 000000000..a17607c09 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-sidebar-collapse.ts @@ -0,0 +1,9 @@ +export default { + "base": "hidden lg:flex", + "variants": { + "side": { + "left": "", + "right": "" + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-sidebar-toggle.ts b/packages/devtools-app/.nuxt/ui/dashboard-sidebar-toggle.ts new file mode 100644 index 000000000..6b23f945b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-sidebar-toggle.ts @@ -0,0 +1,9 @@ +export default { + "base": "lg:hidden", + "variants": { + "side": { + "left": "", + "right": "" + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-sidebar.ts b/packages/devtools-app/.nuxt/ui/dashboard-sidebar.ts new file mode 100644 index 000000000..63a038c53 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-sidebar.ts @@ -0,0 +1,37 @@ +export default { + "slots": { + "root": "relative hidden lg:flex flex-col min-h-svh min-w-16 w-(--width) shrink-0", + "header": "h-(--ui-header-height) shrink-0 flex items-center gap-1.5 px-4", + "body": "flex flex-col gap-4 flex-1 overflow-y-auto px-4 py-2", + "footer": "shrink-0 flex items-center gap-1.5 px-4 py-2", + "toggle": "", + "handle": "", + "content": "lg:hidden", + "overlay": "lg:hidden" + }, + "variants": { + "menu": { + "true": { + "header": "sm:px-6", + "body": "sm:px-6", + "footer": "sm:px-6" + } + }, + "side": { + "left": { + "root": "border-e border-default" + }, + "right": { + "root": "" + } + }, + "toggleSide": { + "left": { + "toggle": "" + }, + "right": { + "toggle": "ms-auto" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dashboard-toolbar.ts b/packages/devtools-app/.nuxt/ui/dashboard-toolbar.ts new file mode 100644 index 000000000..ca81aa390 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dashboard-toolbar.ts @@ -0,0 +1,7 @@ +export default { + "slots": { + "root": "shrink-0 flex items-center justify-between border-b border-default px-4 sm:px-6 gap-1.5 overflow-x-auto min-h-[49px]", + "left": "flex items-center gap-1.5", + "right": "flex items-center gap-1.5" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/drawer.ts b/packages/devtools-app/.nuxt/ui/drawer.ts new file mode 100644 index 000000000..48fe90d4a --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/drawer.ts @@ -0,0 +1,149 @@ +const direction = [ + "top", + "right", + "bottom", + "left" +] as const + +export default { + "slots": { + "overlay": "fixed inset-0 bg-elevated/75", + "content": "fixed bg-default ring ring-default flex focus:outline-none", + "handle": [ + "shrink-0 !bg-accented", + "transition-opacity" + ], + "container": "w-full flex flex-col gap-4 p-4 overflow-y-auto", + "header": "", + "title": "text-highlighted font-semibold", + "description": "mt-1 text-muted text-sm", + "body": "flex-1", + "footer": "flex flex-col gap-1.5" + }, + "variants": { + "direction": { + "top": { + "content": "mb-24 flex-col-reverse", + "handle": "mb-4" + }, + "right": { + "content": "flex-row", + "handle": "!ml-4" + }, + "bottom": { + "content": "mt-24 flex-col", + "handle": "mt-4" + }, + "left": { + "content": "flex-row-reverse", + "handle": "!mr-4" + } + }, + "inset": { + "true": { + "content": "rounded-lg after:hidden overflow-hidden [--initial-transform:calc(100%+1.5rem)]" + } + }, + "snapPoints": { + "true": "" + } + }, + "compoundVariants": [ + { + "direction": [ + "top" as typeof direction[number], + "bottom" as typeof direction[number] + ], + "class": { + "content": "h-auto max-h-[96%]", + "handle": "!w-12 !h-1.5 mx-auto" + } + }, + { + "direction": [ + "top" as typeof direction[number], + "bottom" as typeof direction[number] + ], + "snapPoints": true, + "class": { + "content": "h-full" + } + }, + { + "direction": [ + "right" as typeof direction[number], + "left" as typeof direction[number] + ], + "class": { + "content": "w-auto max-w-[calc(100%-2rem)]", + "handle": "!h-12 !w-1.5 mt-auto mb-auto" + } + }, + { + "direction": [ + "right" as typeof direction[number], + "left" as typeof direction[number] + ], + "snapPoints": true, + "class": { + "content": "w-full" + } + }, + { + "direction": "top" as typeof direction[number], + "inset": true, + "class": { + "content": "inset-x-4 top-4" + } + }, + { + "direction": "top" as typeof direction[number], + "inset": false, + "class": { + "content": "inset-x-0 top-0 rounded-b-lg" + } + }, + { + "direction": "bottom" as typeof direction[number], + "inset": true, + "class": { + "content": "inset-x-4 bottom-4" + } + }, + { + "direction": "bottom" as typeof direction[number], + "inset": false, + "class": { + "content": "inset-x-0 bottom-0 rounded-t-lg" + } + }, + { + "direction": "left" as typeof direction[number], + "inset": true, + "class": { + "content": "inset-y-4 left-4" + } + }, + { + "direction": "left" as typeof direction[number], + "inset": false, + "class": { + "content": "inset-y-0 left-0 rounded-r-lg" + } + }, + { + "direction": "right" as typeof direction[number], + "inset": true, + "class": { + "content": "inset-y-4 right-4" + } + }, + { + "direction": "right" as typeof direction[number], + "inset": false, + "class": { + "content": "inset-y-0 right-0 rounded-l-lg" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/dropdown-menu.ts b/packages/devtools-app/.nuxt/ui/dropdown-menu.ts new file mode 100644 index 000000000..679847ad8 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/dropdown-menu.ts @@ -0,0 +1,227 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "content": "min-w-32 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col", + "input": "border-b border-default", + "empty": "text-center text-muted", + "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1", + "arrow": "fill-bg stroke-default", + "group": "p-1 isolate", + "label": "w-full flex items-center font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75", + "itemLeadingIcon": "shrink-0", + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemTrailing": "ms-auto inline-flex gap-1.5 items-center", + "itemTrailingIcon": "shrink-0", + "itemTrailingKbds": "hidden lg:inline-flex items-center shrink-0", + "itemTrailingKbdsSize": "", + "itemWrapper": "flex-1 flex flex-col text-start min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "itemLabelExternalIcon": "inline-block size-3 align-top text-dimmed" + }, + "variants": { + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "active": { + "true": { + "item": "text-highlighted before:bg-elevated", + "itemLeadingIcon": "text-default" + }, + "false": { + "item": [ + "text-default data-highlighted:text-highlighted data-[state=open]:text-highlighted data-highlighted:before:bg-elevated/50 data-[state=open]:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "text-dimmed group-data-highlighted:text-default group-data-[state=open]:text-default", + "transition-colors" + ] + } + }, + "loading": { + "true": { + "itemLeadingIcon": "animate-spin" + } + }, + "size": { + "xs": { + "label": "p-1 text-xs gap-1", + "item": "p-1 text-xs gap-1", + "empty": "p-2 text-xs", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemTrailingIcon": "size-4", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "sm" + }, + "sm": { + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "empty": "p-2.5 text-xs", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemTrailingIcon": "size-4", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "sm" + }, + "md": { + "label": "p-1.5 text-sm gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "empty": "p-2.5 text-sm", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemTrailingIcon": "size-5", + "itemTrailingKbds": "gap-0.5", + "itemTrailingKbdsSize": "md" + }, + "lg": { + "label": "p-2 text-sm gap-2", + "item": "p-2 text-sm gap-2", + "empty": "p-3 text-sm", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemTrailingIcon": "size-5", + "itemTrailingKbds": "gap-1", + "itemTrailingKbdsSize": "md" + }, + "xl": { + "label": "p-2 text-base gap-2", + "item": "p-2 text-base gap-2", + "empty": "p-3 text-base", + "itemLeadingIcon": "size-6", + "itemLeadingAvatarSize": "xs", + "itemTrailingIcon": "size-6", + "itemTrailingKbds": "gap-1", + "itemTrailingKbdsSize": "lg" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "active": false, + "class": { + "item": "text-primary data-highlighted:text-primary data-highlighted:before:bg-primary/10 data-[state=open]:before:bg-primary/10", + "itemLeadingIcon": "text-primary/75 group-data-highlighted:text-primary group-data-[state=open]:text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "active": false, + "class": { + "item": "text-secondary data-highlighted:text-secondary data-highlighted:before:bg-secondary/10 data-[state=open]:before:bg-secondary/10", + "itemLeadingIcon": "text-secondary/75 group-data-highlighted:text-secondary group-data-[state=open]:text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "active": false, + "class": { + "item": "text-success data-highlighted:text-success data-highlighted:before:bg-success/10 data-[state=open]:before:bg-success/10", + "itemLeadingIcon": "text-success/75 group-data-highlighted:text-success group-data-[state=open]:text-success" + } + }, + { + "color": "info" as typeof color[number], + "active": false, + "class": { + "item": "text-info data-highlighted:text-info data-highlighted:before:bg-info/10 data-[state=open]:before:bg-info/10", + "itemLeadingIcon": "text-info/75 group-data-highlighted:text-info group-data-[state=open]:text-info" + } + }, + { + "color": "warning" as typeof color[number], + "active": false, + "class": { + "item": "text-warning data-highlighted:text-warning data-highlighted:before:bg-warning/10 data-[state=open]:before:bg-warning/10", + "itemLeadingIcon": "text-warning/75 group-data-highlighted:text-warning group-data-[state=open]:text-warning" + } + }, + { + "color": "error" as typeof color[number], + "active": false, + "class": { + "item": "text-error data-highlighted:text-error data-highlighted:before:bg-error/10 data-[state=open]:before:bg-error/10", + "itemLeadingIcon": "text-error/75 group-data-highlighted:text-error group-data-[state=open]:text-error" + } + }, + { + "color": "primary" as typeof color[number], + "active": true, + "class": { + "item": "text-primary before:bg-primary/10", + "itemLeadingIcon": "text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "active": true, + "class": { + "item": "text-secondary before:bg-secondary/10", + "itemLeadingIcon": "text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "active": true, + "class": { + "item": "text-success before:bg-success/10", + "itemLeadingIcon": "text-success" + } + }, + { + "color": "info" as typeof color[number], + "active": true, + "class": { + "item": "text-info before:bg-info/10", + "itemLeadingIcon": "text-info" + } + }, + { + "color": "warning" as typeof color[number], + "active": true, + "class": { + "item": "text-warning before:bg-warning/10", + "itemLeadingIcon": "text-warning" + } + }, + { + "color": "error" as typeof color[number], + "active": true, + "class": { + "item": "text-error before:bg-error/10", + "itemLeadingIcon": "text-error" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/editor-drag-handle.ts b/packages/devtools-app/.nuxt/ui/editor-drag-handle.ts new file mode 100644 index 000000000..6131efaab --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/editor-drag-handle.ts @@ -0,0 +1,6 @@ +export default { + "slots": { + "root": "hidden sm:flex items-center justify-center transition-all duration-200 ease-out", + "handle": "cursor-grab px-1" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/editor-emoji-menu.ts b/packages/devtools-app/.nuxt/ui/editor-emoji-menu.ts new file mode 100644 index 000000000..060317756 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/editor-emoji-menu.ts @@ -0,0 +1,78 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "content": "min-w-48 max-w-60 max-h-96 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col", + "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "label": "w-full flex items-center font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75", + "itemLeadingIcon": "shrink-0 flex items-center justify-center", + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemWrapper": "flex-1 flex flex-col text-start min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "itemLabelExternalIcon": "inline-block size-3 align-top text-dimmed" + }, + "variants": { + "size": { + "xs": { + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4 text-sm", + "itemLeadingAvatarSize": "3xs" + }, + "sm": { + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4 text-sm", + "itemLeadingAvatarSize": "3xs" + }, + "md": { + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5 text-base", + "itemLeadingAvatarSize": "2xs" + }, + "lg": { + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5 text-base", + "itemLeadingAvatarSize": "2xs" + }, + "xl": { + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6 text-xl", + "itemLeadingAvatarSize": "xs" + } + }, + "active": { + "true": { + "item": "text-highlighted before:bg-elevated/75", + "itemLeadingIcon": "text-default" + }, + "false": { + "item": [ + "text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ] + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/editor-mention-menu.ts b/packages/devtools-app/.nuxt/ui/editor-mention-menu.ts new file mode 100644 index 000000000..060317756 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/editor-mention-menu.ts @@ -0,0 +1,78 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "content": "min-w-48 max-w-60 max-h-96 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col", + "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "label": "w-full flex items-center font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75", + "itemLeadingIcon": "shrink-0 flex items-center justify-center", + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemWrapper": "flex-1 flex flex-col text-start min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "itemLabelExternalIcon": "inline-block size-3 align-top text-dimmed" + }, + "variants": { + "size": { + "xs": { + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4 text-sm", + "itemLeadingAvatarSize": "3xs" + }, + "sm": { + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4 text-sm", + "itemLeadingAvatarSize": "3xs" + }, + "md": { + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5 text-base", + "itemLeadingAvatarSize": "2xs" + }, + "lg": { + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5 text-base", + "itemLeadingAvatarSize": "2xs" + }, + "xl": { + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6 text-xl", + "itemLeadingAvatarSize": "xs" + } + }, + "active": { + "true": { + "item": "text-highlighted before:bg-elevated/75", + "itemLeadingIcon": "text-default" + }, + "false": { + "item": [ + "text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ] + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/editor-suggestion-menu.ts b/packages/devtools-app/.nuxt/ui/editor-suggestion-menu.ts new file mode 100644 index 000000000..060317756 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/editor-suggestion-menu.ts @@ -0,0 +1,78 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "content": "min-w-48 max-w-60 max-h-96 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col", + "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "label": "w-full flex items-center font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75", + "itemLeadingIcon": "shrink-0 flex items-center justify-center", + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemWrapper": "flex-1 flex flex-col text-start min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "itemLabelExternalIcon": "inline-block size-3 align-top text-dimmed" + }, + "variants": { + "size": { + "xs": { + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4 text-sm", + "itemLeadingAvatarSize": "3xs" + }, + "sm": { + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4 text-sm", + "itemLeadingAvatarSize": "3xs" + }, + "md": { + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5 text-base", + "itemLeadingAvatarSize": "2xs" + }, + "lg": { + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5 text-base", + "itemLeadingAvatarSize": "2xs" + }, + "xl": { + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6 text-xl", + "itemLeadingAvatarSize": "xs" + } + }, + "active": { + "true": { + "item": "text-highlighted before:bg-elevated/75", + "itemLeadingIcon": "text-default" + }, + "false": { + "item": [ + "text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ] + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/editor-toolbar.ts b/packages/devtools-app/.nuxt/ui/editor-toolbar.ts new file mode 100644 index 000000000..fcf4105d8 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/editor-toolbar.ts @@ -0,0 +1,21 @@ +export default { + "slots": { + "root": "focus:outline-none", + "base": "flex items-stretch gap-1.5", + "group": "flex items-center gap-0.5", + "separator": "w-px self-stretch bg-border" + }, + "variants": { + "layout": { + "bubble": { + "base": "bg-default border border-default rounded-lg p-1" + }, + "floating": { + "base": "bg-default border border-default rounded-lg p-1" + }, + "fixed": { + "base": "" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/editor.ts b/packages/devtools-app/.nuxt/ui/editor.ts new file mode 100644 index 000000000..630427dd8 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/editor.ts @@ -0,0 +1,55 @@ +const placeholderMode = [ + "firstLine", + "everyLine" +] as const + +export default { + "slots": { + "root": "", + "content": "relative size-full flex-1", + "base": [ + "w-full outline-none *:my-5 *:first:mt-0 *:last:mb-0 sm:px-8 selection:bg-primary/20", + "[&_p]:leading-7", + "[&_a]:text-primary [&_a]:border-b [&_a]:border-transparent [&_a]:hover:border-primary [&_a]:font-medium", + "[&_a]:transition-colors", + "[&_a>code]:border-dashed [&_a:hover>code]:border-primary [&_a:hover>code]:text-primary", + "[&_a>code]:transition-colors", + "[&_.mention]:text-primary [&_.mention]:font-medium", + "[&_:is(h1,h2,h3,h4,h5,h6)]:text-highlighted [&_:is(h1,h2,h3,h4,h5,h6)]:font-bold", + "[&_h1]:text-3xl", + "[&_h2]:text-2xl", + "[&_h3]:text-xl", + "[&_h4]:text-lg", + "[&_h5]:text-base", + "[&_h6]:text-base", + "[&_:is(h1,h2,h3,h4,h5,h6)>code]:border-dashed [&_:is(h1,h2,h3,h4,h5,h6)>code]:font-bold", + "[&_h2>code]:text-xl/6", + "[&_h3>code]:text-lg/5", + "[&_blockquote]:border-s-4 [&_blockquote]:border-accented [&_blockquote]:ps-4 [&_blockquote]:italic", + "[&_[data-type=horizontalRule]]:my-8 [&_[data-type=horizontalRule]]:py-2", + "[&_hr]:border-t [&_hr]:border-default", + "[&_pre]:text-sm/6 [&_pre]:border [&_pre]:border-muted [&_pre]:bg-muted [&_pre]:rounded-md [&_pre]:px-4 [&_pre]:py-3 [&_pre]:whitespace-pre-wrap [&_pre]:break-words [&_pre]:overflow-x-auto", + "[&_pre_code]:p-0 [&_pre_code]:text-inherit [&_pre_code]:font-inherit [&_pre_code]:rounded-none [&_pre_code]:inline [&_pre_code]:border-0 [&_pre_code]:bg-transparent", + "[&_code]:px-1.5 [&_code]:py-0.5 [&_code]:text-sm [&_code]:font-mono [&_code]:font-medium [&_code]:rounded-md [&_code]:inline-block [&_code]:border [&_code]:border-muted [&_code]:text-highlighted [&_code]:bg-muted", + "[&_:is(ul,ol)]:ps-6", + "[&_ul]:list-disc [&_ul]:marker:text-(--ui-border-accented)", + "[&_ol]:list-decimal [&_ol]:marker:text-muted", + "[&_li]:my-1.5 [&_li]:ps-1.5", + "[&_img]:rounded-md [&_img]:block [&_img]:max-w-full [&_img.ProseMirror-selectednode]:outline-2 [&_img.ProseMirror-selectednode]:outline-primary", + "[&_.ProseMirror-selectednode:not(img):not(pre):not([data-node-view-wrapper])]:bg-primary/20" + ] + }, + "variants": { + "placeholderMode": { + "firstLine": { + "base": "[&_:is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child]:before:content-[attr(data-placeholder)] [&_:is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child]:before:text-dimmed [&_:is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child]:before:float-start [&_:is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child]:before:h-0 [&_:is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child]:before:pointer-events-none" + }, + "everyLine": { + "base": "[&_:is(p,h1,h2,h3,h4,h5,h6).is-empty]:before:content-[attr(data-placeholder)] [&_:is(p,h1,h2,h3,h4,h5,h6).is-empty]:before:text-dimmed [&_:is(p,h1,h2,h3,h4,h5,h6).is-empty]:before:float-start [&_:is(p,h1,h2,h3,h4,h5,h6).is-empty]:before:h-0 [&_:is(p,h1,h2,h3,h4,h5,h6).is-empty]:before:pointer-events-none" + } + } + }, + "defaultVariants": { + "placeholderMode": "everyLine" as typeof placeholderMode[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/empty.ts b/packages/devtools-app/.nuxt/ui/empty.ts new file mode 100644 index 000000000..73574777f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/empty.ts @@ -0,0 +1,83 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle", + "naked" +] as const + +export default { + "slots": { + "root": "relative flex flex-col items-center justify-center gap-4 rounded-lg p-4 sm:p-6 lg:p-8 min-w-0", + "header": "flex flex-col items-center gap-2 max-w-sm text-center", + "avatar": "shrink-0 mb-2", + "title": "text-highlighted text-pretty font-medium", + "description": "text-balance text-center", + "body": "flex flex-col items-center gap-4 max-w-sm", + "actions": "flex flex-wrap justify-center gap-2 shrink-0", + "footer": "flex flex-col items-center gap-2 max-w-sm" + }, + "variants": { + "size": { + "xs": { + "avatar": "size-8 text-base", + "title": "text-sm", + "description": "text-xs" + }, + "sm": { + "avatar": "size-9 text-lg", + "title": "text-sm", + "description": "text-xs" + }, + "md": { + "avatar": "size-10 text-xl", + "title": "text-base", + "description": "text-sm" + }, + "lg": { + "avatar": "size-11 text-[22px]", + "title": "text-base", + "description": "text-sm" + }, + "xl": { + "avatar": "size-12 text-2xl", + "title": "text-lg", + "description": "text-base" + } + }, + "variant": { + "solid": { + "root": "bg-inverted", + "title": "text-inverted", + "description": "text-dimmed" + }, + "outline": { + "root": "bg-default ring ring-default", + "description": "text-muted" + }, + "soft": { + "root": "bg-elevated/50", + "description": "text-toned" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default", + "description": "text-toned" + }, + "naked": { + "description": "text-muted" + } + } + }, + "defaultVariants": { + "variant": "outline" as typeof variant[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/error.ts b/packages/devtools-app/.nuxt/ui/error.ts new file mode 100644 index 000000000..99bcb1e5c --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/error.ts @@ -0,0 +1,9 @@ +export default { + "slots": { + "root": "min-h-[calc(100vh-var(--ui-header-height))] flex flex-col items-center justify-center text-center", + "statusCode": "text-base font-semibold text-primary", + "statusMessage": "mt-2 text-4xl sm:text-5xl font-bold text-highlighted text-balance", + "message": "mt-4 text-lg text-muted text-balance", + "links": "mt-8 flex items-center justify-center gap-6" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/field-group.ts b/packages/devtools-app/.nuxt/ui/field-group.ts new file mode 100644 index 000000000..a7d97469f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/field-group.ts @@ -0,0 +1,16 @@ +export default { + "base": "relative", + "variants": { + "size": { + "xs": "", + "sm": "", + "md": "", + "lg": "", + "xl": "" + }, + "orientation": { + "horizontal": "inline-flex -space-x-px", + "vertical": "flex flex-col -space-y-px" + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/file-upload.ts b/packages/devtools-app/.nuxt/ui/file-upload.ts new file mode 100644 index 000000000..96062b93b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/file-upload.ts @@ -0,0 +1,290 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "area", + "button" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const layout = [ + "list", + "grid" +] as const + +export default { + "slots": { + "root": "relative flex flex-col", + "base": [ + "w-full flex-1 bg-default border border-default flex flex-col gap-2 items-stretch justify-center rounded-lg focus-visible:outline-2", + "transition-[background]" + ], + "wrapper": "flex flex-col items-center justify-center text-center", + "icon": "shrink-0", + "avatar": "shrink-0", + "label": "font-medium text-default mt-2", + "description": "text-muted mt-1", + "actions": "flex flex-wrap gap-1.5 shrink-0 mt-4", + "files": "", + "file": "relative", + "fileLeadingAvatar": "shrink-0", + "fileWrapper": "flex flex-col min-w-0", + "fileName": "text-default truncate", + "fileSize": "text-muted truncate", + "fileTrailingButton": "" + }, + "variants": { + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "area": { + "wrapper": "px-4 py-3", + "base": "p-4" + }, + "button": {} + }, + "size": { + "xs": { + "base": "text-xs", + "icon": "size-4", + "file": "text-xs px-2 py-1 gap-1", + "fileWrapper": "flex-row gap-1" + }, + "sm": { + "base": "text-xs", + "icon": "size-4", + "file": "text-xs px-2.5 py-1.5 gap-1.5", + "fileWrapper": "flex-row gap-1" + }, + "md": { + "base": "text-sm", + "icon": "size-5", + "file": "text-xs px-2.5 py-1.5 gap-1.5" + }, + "lg": { + "base": "text-sm", + "icon": "size-5", + "file": "text-sm px-3 py-2 gap-2", + "fileSize": "text-xs" + }, + "xl": { + "base": "text-base", + "icon": "size-6", + "file": "text-sm px-3 py-2 gap-2" + } + }, + "layout": { + "list": { + "root": "gap-2 items-start", + "files": "flex flex-col w-full gap-2", + "file": "min-w-0 flex items-center border border-default rounded-md w-full", + "fileTrailingButton": "ms-auto" + }, + "grid": { + "fileWrapper": "hidden", + "fileLeadingAvatar": "size-full rounded-lg", + "fileTrailingButton": "absolute -top-1.5 -end-1.5 p-0 rounded-full border-2 border-bg" + } + }, + "position": { + "inside": "", + "outside": "" + }, + "dropzone": { + "true": "border-dashed data-[dragging=true]:bg-elevated/25" + }, + "interactive": { + "true": "" + }, + "highlight": { + "true": "" + }, + "multiple": { + "true": "" + }, + "disabled": { + "true": "cursor-not-allowed opacity-75" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "class": "focus-visible:outline-primary" + }, + { + "color": "secondary" as typeof color[number], + "class": "focus-visible:outline-secondary" + }, + { + "color": "success" as typeof color[number], + "class": "focus-visible:outline-success" + }, + { + "color": "info" as typeof color[number], + "class": "focus-visible:outline-info" + }, + { + "color": "warning" as typeof color[number], + "class": "focus-visible:outline-warning" + }, + { + "color": "error" as typeof color[number], + "class": "focus-visible:outline-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "border-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "border-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "border-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "border-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "border-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "border-error" + }, + { + "color": "neutral" as typeof color[number], + "class": "focus-visible:outline-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "border-inverted" + }, + { + "size": "xs" as typeof size[number], + "layout": "list" as typeof layout[number], + "class": { + "fileTrailingButton": "-me-1" + } + }, + { + "size": "sm" as typeof size[number], + "layout": "list" as typeof layout[number], + "class": { + "fileTrailingButton": "-me-1.5" + } + }, + { + "size": "md" as typeof size[number], + "layout": "list" as typeof layout[number], + "class": { + "fileTrailingButton": "-me-1.5" + } + }, + { + "size": "lg" as typeof size[number], + "layout": "list" as typeof layout[number], + "class": { + "fileTrailingButton": "-me-2" + } + }, + { + "size": "xl" as typeof size[number], + "layout": "list" as typeof layout[number], + "class": { + "fileTrailingButton": "-me-2" + } + }, + { + "variant": "button" as typeof variant[number], + "size": "xs" as typeof size[number], + "class": { + "base": "p-1" + } + }, + { + "variant": "button" as typeof variant[number], + "size": "sm" as typeof size[number], + "class": { + "base": "p-1.5" + } + }, + { + "variant": "button" as typeof variant[number], + "size": "md" as typeof size[number], + "class": { + "base": "p-1.5" + } + }, + { + "variant": "button" as typeof variant[number], + "size": "lg" as typeof size[number], + "class": { + "base": "p-2" + } + }, + { + "variant": "button" as typeof variant[number], + "size": "xl" as typeof size[number], + "class": { + "base": "p-2" + } + }, + { + "layout": "grid" as typeof layout[number], + "multiple": true, + "class": { + "files": "grid grid-cols-2 md:grid-cols-3 gap-4 w-full", + "file": "p-0 aspect-square" + } + }, + { + "layout": "grid" as typeof layout[number], + "multiple": false, + "class": { + "file": "absolute inset-0 p-0" + } + }, + { + "interactive": true, + "disabled": false, + "class": "hover:bg-elevated/25" + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "variant": "area" as typeof variant[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/footer-columns.ts b/packages/devtools-app/.nuxt/ui/footer-columns.ts new file mode 100644 index 000000000..fa8737481 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/footer-columns.ts @@ -0,0 +1,28 @@ +export default { + "slots": { + "root": "xl:grid xl:grid-cols-3 xl:gap-8", + "left": "mb-10 xl:mb-0", + "center": "flex flex-col lg:grid grid-flow-col auto-cols-fr gap-8 xl:col-span-2", + "right": "mt-10 xl:mt-0", + "label": "text-sm font-semibold", + "list": "mt-6 space-y-4", + "item": "relative", + "link": "group text-sm flex items-center gap-1.5 focus-visible:outline-primary", + "linkLeadingIcon": "size-5 shrink-0", + "linkLabel": "truncate", + "linkLabelExternalIcon": "size-3 absolute top-0 text-dimmed inline-block" + }, + "variants": { + "active": { + "true": { + "link": "text-primary font-medium" + }, + "false": { + "link": [ + "text-muted hover:text-default", + "transition-colors" + ] + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/footer.ts b/packages/devtools-app/.nuxt/ui/footer.ts new file mode 100644 index 000000000..a3cbacdcf --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/footer.ts @@ -0,0 +1,11 @@ +export default { + "slots": { + "root": "", + "top": "py-8 lg:py-12", + "bottom": "py-8 lg:py-12", + "container": "py-8 lg:py-4 lg:flex lg:items-center lg:justify-between lg:gap-x-3", + "left": "flex items-center justify-center lg:justify-start lg:flex-1 gap-x-1.5 mt-3 lg:mt-0 lg:order-1", + "center": "mt-3 lg:mt-0 lg:order-2 flex items-center justify-center", + "right": "lg:flex-1 flex items-center justify-center lg:justify-end gap-x-1.5 lg:order-3" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/form-field.ts b/packages/devtools-app/.nuxt/ui/form-field.ts new file mode 100644 index 000000000..f421f1a9d --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/form-field.ts @@ -0,0 +1,62 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const orientation = [ + "vertical", + "horizontal" +] as const + +export default { + "slots": { + "root": "", + "wrapper": "", + "labelWrapper": "flex content-center items-center justify-between gap-1", + "label": "block font-medium text-default", + "container": "relative", + "description": "text-muted", + "error": "mt-2 text-error", + "hint": "text-muted", + "help": "mt-2 text-muted" + }, + "variants": { + "size": { + "xs": { + "root": "text-xs" + }, + "sm": { + "root": "text-xs" + }, + "md": { + "root": "text-sm" + }, + "lg": { + "root": "text-sm" + }, + "xl": { + "root": "text-base" + } + }, + "required": { + "true": { + "label": "after:content-['*'] after:ms-0.5 after:text-error" + } + }, + "orientation": { + "vertical": { + "container": "mt-1" + }, + "horizontal": { + "root": "flex justify-between place-items-baseline gap-2" + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number], + "orientation": "vertical" as typeof orientation[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/form.ts b/packages/devtools-app/.nuxt/ui/form.ts new file mode 100644 index 000000000..c2a0adf39 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/form.ts @@ -0,0 +1,3 @@ +export default { + "base": "" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/header.ts b/packages/devtools-app/.nuxt/ui/header.ts new file mode 100644 index 000000000..39d3bee6f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/header.ts @@ -0,0 +1,25 @@ +export default { + "slots": { + "root": "bg-default/75 backdrop-blur border-b border-default h-(--ui-header-height) sticky top-0 z-50", + "container": "flex items-center justify-between gap-3 h-full", + "left": "lg:flex-1 flex items-center gap-1.5", + "center": "hidden lg:flex", + "right": "flex items-center justify-end lg:flex-1 gap-1.5", + "title": "shrink-0 font-bold text-xl text-highlighted flex items-end gap-1.5", + "toggle": "lg:hidden", + "content": "lg:hidden", + "overlay": "lg:hidden", + "header": "px-4 sm:px-6 h-(--ui-header-height) shrink-0 flex items-center justify-between gap-3", + "body": "p-4 sm:p-6 overflow-y-auto" + }, + "variants": { + "toggleSide": { + "left": { + "toggle": "-ms-1.5" + }, + "right": { + "toggle": "-me-1.5" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/index.ts b/packages/devtools-app/.nuxt/ui/index.ts new file mode 100644 index 000000000..cae6efd8f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/index.ts @@ -0,0 +1,113 @@ +export { default as accordion } from './accordion' +export { default as alert } from './alert' +export { default as authForm } from './auth-form' +export { default as avatar } from './avatar' +export { default as avatarGroup } from './avatar-group' +export { default as badge } from './badge' +export { default as banner } from './banner' +export { default as blogPost } from './blog-post' +export { default as blogPosts } from './blog-posts' +export { default as breadcrumb } from './breadcrumb' +export { default as button } from './button' +export { default as calendar } from './calendar' +export { default as card } from './card' +export { default as carousel } from './carousel' +export { default as changelogVersion } from './changelog-version' +export { default as changelogVersions } from './changelog-versions' +export { default as chatMessage } from './chat-message' +export { default as chatMessages } from './chat-messages' +export { default as chatPalette } from './chat-palette' +export { default as chatPrompt } from './chat-prompt' +export { default as chatPromptSubmit } from './chat-prompt-submit' +export { default as chatReasoning } from './chat-reasoning' +export { default as chatShimmer } from './chat-shimmer' +export { default as chatTool } from './chat-tool' +export { default as checkbox } from './checkbox' +export { default as checkboxGroup } from './checkbox-group' +export { default as chip } from './chip' +export { default as collapsible } from './collapsible' +export { default as colorPicker } from './color-picker' +export { default as commandPalette } from './command-palette' +export { default as container } from './container' +export { default as contextMenu } from './context-menu' +export { default as dashboardGroup } from './dashboard-group' +export { default as dashboardNavbar } from './dashboard-navbar' +export { default as dashboardPanel } from './dashboard-panel' +export { default as dashboardResizeHandle } from './dashboard-resize-handle' +export { default as dashboardSearch } from './dashboard-search' +export { default as dashboardSearchButton } from './dashboard-search-button' +export { default as dashboardSidebar } from './dashboard-sidebar' +export { default as dashboardSidebarCollapse } from './dashboard-sidebar-collapse' +export { default as dashboardSidebarToggle } from './dashboard-sidebar-toggle' +export { default as dashboardToolbar } from './dashboard-toolbar' +export { default as drawer } from './drawer' +export { default as dropdownMenu } from './dropdown-menu' +export { default as editor } from './editor' +export { default as editorDragHandle } from './editor-drag-handle' +export { default as editorEmojiMenu } from './editor-emoji-menu' +export { default as editorMentionMenu } from './editor-mention-menu' +export { default as editorSuggestionMenu } from './editor-suggestion-menu' +export { default as editorToolbar } from './editor-toolbar' +export { default as empty } from './empty' +export { default as error } from './error' +export { default as fieldGroup } from './field-group' +export { default as fileUpload } from './file-upload' +export { default as footer } from './footer' +export { default as footerColumns } from './footer-columns' +export { default as form } from './form' +export { default as formField } from './form-field' +export { default as header } from './header' +export { default as input } from './input' +export { default as inputDate } from './input-date' +export { default as inputMenu } from './input-menu' +export { default as inputNumber } from './input-number' +export { default as inputTags } from './input-tags' +export { default as inputTime } from './input-time' +export { default as kbd } from './kbd' +export { default as link } from './link' +export { default as main } from './main' +export { default as marquee } from './marquee' +export { default as modal } from './modal' +export { default as navigationMenu } from './navigation-menu' +export { default as page } from './page' +export { default as pageAnchors } from './page-anchors' +export { default as pageAside } from './page-aside' +export { default as pageBody } from './page-body' +export { default as pageCTA } from './page-cta' +export { default as pageCard } from './page-card' +export { default as pageColumns } from './page-columns' +export { default as pageFeature } from './page-feature' +export { default as pageGrid } from './page-grid' +export { default as pageHeader } from './page-header' +export { default as pageHero } from './page-hero' +export { default as pageLinks } from './page-links' +export { default as pageList } from './page-list' +export { default as pageLogos } from './page-logos' +export { default as pageSection } from './page-section' +export { default as pagination } from './pagination' +export { default as pinInput } from './pin-input' +export { default as popover } from './popover' +export { default as pricingPlan } from './pricing-plan' +export { default as pricingPlans } from './pricing-plans' +export { default as pricingTable } from './pricing-table' +export { default as progress } from './progress' +export { default as radioGroup } from './radio-group' +export { default as scrollArea } from './scroll-area' +export { default as select } from './select' +export { default as selectMenu } from './select-menu' +export { default as separator } from './separator' +export { default as sidebar } from './sidebar' +export { default as skeleton } from './skeleton' +export { default as slideover } from './slideover' +export { default as slider } from './slider' +export { default as stepper } from './stepper' +export { default as switch } from './switch' +export { default as table } from './table' +export { default as tabs } from './tabs' +export { default as textarea } from './textarea' +export { default as timeline } from './timeline' +export { default as toast } from './toast' +export { default as toaster } from './toaster' +export { default as tooltip } from './tooltip' +export { default as tree } from './tree' +export { default as user } from './user' \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/input-date.ts b/packages/devtools-app/.nuxt/ui/input-date.ts new file mode 100644 index 000000000..5028543aa --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/input-date.ts @@ -0,0 +1,360 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "base": [ + "group relative inline-flex items-center rounded-md select-none", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute inset-y-0 end-0 flex items-center", + "trailingIcon": "shrink-0 text-dimmed", + "segment": [ + "rounded text-center outline-hidden data-placeholder:text-dimmed data-[segment=literal]:text-muted data-invalid:text-error data-disabled:cursor-not-allowed data-disabled:opacity-75", + "transition-colors" + ], + "separatorIcon": "shrink-0 size-4 text-muted" + }, + "variants": { + "fieldGroup": { + "horizontal": "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]", + "vertical": "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]" + }, + "size": { + "xs": { + "base": [ + "px-2 py-1 text-sm/4 gap-1", + "gap-0.25" + ], + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "segment": "data-[segment=day]:w-6 data-[segment=month]:w-6 data-[segment=year]:w-9" + }, + "sm": { + "base": [ + "px-2.5 py-1.5 text-sm/4 gap-1.5", + "gap-0.5" + ], + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "segment": "data-[segment=day]:w-6 data-[segment=month]:w-6 data-[segment=year]:w-9" + }, + "md": { + "base": [ + "px-2.5 py-1.5 text-base/5 gap-1.5", + "gap-0.5" + ], + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "segment": "data-[segment=day]:w-7 data-[segment=month]:w-7 data-[segment=year]:w-11" + }, + "lg": { + "base": [ + "px-3 py-2 text-base/5 gap-2", + "gap-0.75" + ], + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "segment": "data-[segment=day]:w-7 data-[segment=month]:w-7 data-[segment=year]:w-11" + }, + "xl": { + "base": [ + "px-3 py-2 text-base gap-2", + "gap-0.75" + ], + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6", + "segment": "data-[segment=day]:w-8 data-[segment=month]:w-8 data-[segment=year]:w-13" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + } + }, + "compoundVariants": [ + { + "variant": "outline" as typeof variant[number], + "class": { + "segment": "focus:bg-elevated" + } + }, + { + "variant": "soft" as typeof variant[number], + "class": { + "segment": "focus:bg-accented/50 group-hover:focus:bg-accented" + } + }, + { + "variant": "subtle" as typeof variant[number], + "class": { + "segment": "focus:bg-accented" + } + }, + { + "variant": "ghost" as typeof variant[number], + "class": { + "segment": "focus:bg-elevated group-hover:focus:bg-accented" + } + }, + { + "variant": "none" as typeof variant[number], + "class": { + "segment": "focus:bg-elevated" + } + }, + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/input-menu.ts b/packages/devtools-app/.nuxt/ui/input-menu.ts new file mode 100644 index 000000000..25b788380 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/input-menu.ts @@ -0,0 +1,484 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative inline-flex items-center", + "base": [ + "rounded-md", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "group absolute inset-y-0 end-0 flex items-center disabled:cursor-not-allowed disabled:opacity-75 focus:outline-none", + "trailingIcon": "shrink-0 text-dimmed", + "trailingClear": "p-0", + "arrow": "fill-bg stroke-default", + "content": "max-h-60 w-(--reka-combobox-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-combobox-content-transform-origin) pointer-events-auto flex flex-col", + "viewport": "relative scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "empty": "text-center text-muted", + "label": "font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": [ + "group relative w-full flex items-start gap-1.5 p-1.5 text-sm select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ], + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemLeadingChip": "shrink-0", + "itemLeadingChipSize": "", + "itemTrailing": "ms-auto inline-flex gap-1.5 items-center", + "itemTrailingIcon": "shrink-0", + "itemWrapper": "flex-1 flex flex-col min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "tagsItem": "px-1.5 py-0.5 rounded-sm font-medium inline-flex items-center gap-0.5 ring ring-inset ring-accented bg-elevated text-default data-disabled:cursor-not-allowed data-disabled:opacity-75", + "tagsItemText": "truncate", + "tagsItemDelete": [ + "inline-flex items-center rounded-xs text-dimmed hover:text-default hover:bg-accented/75 disabled:pointer-events-none", + "transition-colors" + ], + "tagsItemDeleteIcon": "shrink-0", + "tagsInput": "flex-1 border-0 bg-transparent placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75" + }, + "variants": { + "fieldGroup": { + "horizontal": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none" + }, + "vertical": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none" + } + }, + "size": { + "xs": { + "base": "px-2 py-1 text-sm/4 gap-1", + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailingIcon": "size-4", + "tagsItem": "text-[10px]/3", + "tagsItemDeleteIcon": "size-3", + "empty": "p-2 text-xs" + }, + "sm": { + "base": "px-2.5 py-1.5 text-sm/4 gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailingIcon": "size-4", + "tagsItem": "text-[10px]/3", + "tagsItemDeleteIcon": "size-3", + "empty": "p-2.5 text-xs" + }, + "md": { + "base": "px-2.5 py-1.5 text-base/5 gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailingIcon": "size-5", + "tagsItem": "text-xs", + "tagsItemDeleteIcon": "size-3.5", + "empty": "p-2.5 text-sm" + }, + "lg": { + "base": "px-3 py-2 text-base/5 gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailingIcon": "size-5", + "tagsItem": "text-xs", + "tagsItemDeleteIcon": "size-3.5", + "empty": "p-3 text-sm" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6", + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6", + "itemLeadingAvatarSize": "xs", + "itemLeadingChip": "size-6", + "itemLeadingChipSize": "lg", + "itemTrailingIcon": "size-6", + "tagsItem": "text-sm", + "tagsItemDeleteIcon": "size-4", + "empty": "p-3 text-base" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + }, + "virtualize": { + "true": { + "viewport": "p-1 isolate" + }, + "false": { + "viewport": "divide-y divide-default" + } + }, + "multiple": { + "true": { + "root": "flex-wrap" + }, + "false": { + "base": "w-full border-0 placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75" + } + } + }, + "compoundVariants": [ + { + "variant": "soft" as typeof variant[number], + "multiple": true, + "class": "has-focus:bg-elevated" + }, + { + "variant": "ghost" as typeof variant[number], + "multiple": true, + "class": "has-focus:bg-elevated" + }, + { + "color": "primary" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-error" + }, + { + "color": "neutral" as typeof color[number], + "multiple": true, + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inverted" + }, + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/input-number.ts b/packages/devtools-app/.nuxt/ui/input-number.ts new file mode 100644 index 000000000..c2aa90720 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/input-number.ts @@ -0,0 +1,279 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +export default { + "slots": { + "root": "relative inline-flex items-center", + "base": [ + "w-full rounded-md border-0 placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ], + "increment": "absolute flex items-center", + "decrement": "absolute flex items-center" + }, + "variants": { + "fieldGroup": { + "horizontal": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none" + }, + "vertical": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none" + } + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "size": { + "xs": "px-2 py-1 text-sm/4 gap-1", + "sm": "px-2.5 py-1.5 text-sm/4 gap-1.5", + "md": "px-2.5 py-1.5 text-base/5 gap-1.5", + "lg": "px-3 py-2 text-base/5 gap-2", + "xl": "px-3 py-2 text-base gap-2" + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "disabled": { + "true": { + "increment": "opacity-75 cursor-not-allowed", + "decrement": "opacity-75 cursor-not-allowed" + } + }, + "orientation": { + "horizontal": { + "base": "text-center", + "increment": "inset-y-0 end-0 pe-1", + "decrement": "inset-y-0 start-0 ps-1" + }, + "vertical": { + "increment": "top-0 end-0 pe-1 [&>button]:py-0 scale-80", + "decrement": "bottom-0 end-0 pe-1 [&>button]:py-0 scale-80" + } + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "increment": { + "false": "" + }, + "decrement": { + "false": "" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "decrement": false, + "class": "text-start" + }, + { + "decrement": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "decrement": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "decrement": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "decrement": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "decrement": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "increment": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "increment": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "increment": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "increment": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "increment": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/input-tags.ts b/packages/devtools-app/.nuxt/ui/input-tags.ts new file mode 100644 index 000000000..c6fe8c7c0 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/input-tags.ts @@ -0,0 +1,333 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": [ + "relative inline-flex items-center", + "flex-wrap" + ], + "base": [ + "rounded-md", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute inset-y-0 end-0 flex items-center", + "trailingIcon": "shrink-0 text-dimmed", + "item": "px-1.5 py-0.5 rounded-sm font-medium inline-flex items-center gap-0.5 ring ring-inset ring-accented bg-elevated text-default data-disabled:cursor-not-allowed data-disabled:opacity-75 wrap-anywhere data-[state=\"active\"]:bg-accented", + "itemText": "", + "itemDelete": [ + "inline-flex items-center rounded-xs text-dimmed hover:text-default hover:bg-accented/75 disabled:pointer-events-none", + "transition-colors" + ], + "itemDeleteIcon": "shrink-0", + "input": "flex-1 border-0 bg-transparent placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75" + }, + "variants": { + "fieldGroup": { + "horizontal": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none" + }, + "vertical": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none" + } + }, + "size": { + "xs": { + "base": "px-2 py-1 text-sm/4 gap-1", + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "item": "text-[10px]/3", + "itemDeleteIcon": "size-3" + }, + "sm": { + "base": "px-2.5 py-1.5 text-sm/4 gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "item": "text-[10px]/3", + "itemDeleteIcon": "size-3" + }, + "md": { + "base": "px-2.5 py-1.5 text-base/5 gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "item": "text-xs", + "itemDeleteIcon": "size-3.5" + }, + "lg": { + "base": "px-3 py-2 text-base/5 gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "item": "text-xs", + "itemDeleteIcon": "size-3.5" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6", + "item": "text-sm", + "itemDeleteIcon": "size-4" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated has-focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated has-focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "has-focus-visible:ring-2 has-focus-visible:ring-inset has-focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/input-time.ts b/packages/devtools-app/.nuxt/ui/input-time.ts new file mode 100644 index 000000000..c69b60b94 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/input-time.ts @@ -0,0 +1,360 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "base": [ + "group relative inline-flex items-center rounded-md select-none", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute inset-y-0 end-0 flex items-center", + "trailingIcon": "shrink-0 text-dimmed", + "segment": [ + "rounded text-center outline-hidden data-placeholder:text-dimmed data-[segment=literal]:text-muted data-invalid:text-error data-disabled:cursor-not-allowed data-disabled:opacity-75", + "transition-colors" + ], + "separatorIcon": "shrink-0 size-4 text-muted" + }, + "variants": { + "fieldGroup": { + "horizontal": "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]", + "vertical": "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]" + }, + "size": { + "xs": { + "base": [ + "px-2 py-1 text-sm/4 gap-1", + "gap-0.25" + ], + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "segment": "not-data-[segment=literal]:w-6" + }, + "sm": { + "base": [ + "px-2.5 py-1.5 text-sm/4 gap-1.5", + "gap-0.5" + ], + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "segment": "not-data-[segment=literal]:w-6" + }, + "md": { + "base": [ + "px-2.5 py-1.5 text-base/5 gap-1.5", + "gap-0.5" + ], + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "segment": "not-data-[segment=literal]:w-7" + }, + "lg": { + "base": [ + "px-3 py-2 text-base/5 gap-2", + "gap-0.75" + ], + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "segment": "not-data-[segment=literal]:w-7" + }, + "xl": { + "base": [ + "px-3 py-2 text-base gap-2", + "gap-0.75" + ], + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6", + "segment": "not-data-[segment=literal]:w-8" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + } + }, + "compoundVariants": [ + { + "variant": "outline" as typeof variant[number], + "class": { + "segment": "focus:bg-elevated" + } + }, + { + "variant": "soft" as typeof variant[number], + "class": { + "segment": "focus:bg-accented/50 group-hover:focus:bg-accented" + } + }, + { + "variant": "subtle" as typeof variant[number], + "class": { + "segment": "focus:bg-accented" + } + }, + { + "variant": "ghost" as typeof variant[number], + "class": { + "segment": "focus:bg-elevated group-hover:focus:bg-accented" + } + }, + { + "variant": "none" as typeof variant[number], + "class": { + "segment": "focus:bg-elevated" + } + }, + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/input.ts b/packages/devtools-app/.nuxt/ui/input.ts new file mode 100644 index 000000000..abe079cce --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/input.ts @@ -0,0 +1,312 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative inline-flex items-center", + "base": [ + "w-full rounded-md border-0 appearance-none placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute inset-y-0 end-0 flex items-center", + "trailingIcon": "shrink-0 text-dimmed" + }, + "variants": { + "fieldGroup": { + "horizontal": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none" + }, + "vertical": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none" + } + }, + "size": { + "xs": { + "base": "px-2 py-1 text-sm/4 gap-1", + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "sm": { + "base": "px-2.5 py-1.5 text-sm/4 gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "md": { + "base": "px-2.5 py-1.5 text-base/5 gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "lg": { + "base": "px-3 py-2 text-base/5 gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/kbd.ts b/packages/devtools-app/.nuxt/ui/kbd.ts new file mode 100644 index 000000000..316987bef --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/kbd.ts @@ -0,0 +1,195 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle" +] as const + +const size = [ + "sm", + "md", + "lg" +] as const + +export default { + "base": "inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase", + "variants": { + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "solid": "", + "outline": "", + "soft": "", + "subtle": "" + }, + "size": { + "sm": "h-4 min-w-[16px] text-[10px]", + "md": "h-5 min-w-[20px] text-[11px]", + "lg": "h-6 min-w-[24px] text-[12px]" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-success" + }, + { + "color": "info" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-error" + }, + { + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-primary/50 text-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-secondary/50 text-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-success/50 text-success" + }, + { + "color": "info" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-info/50 text-info" + }, + { + "color": "warning" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-warning/50 text-warning" + }, + { + "color": "error" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-error/50 text-error" + }, + { + "color": "primary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-primary bg-primary/10" + }, + { + "color": "secondary" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-secondary bg-secondary/10" + }, + { + "color": "success" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-success bg-success/10" + }, + { + "color": "info" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-info bg-info/10" + }, + { + "color": "warning" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-warning bg-warning/10" + }, + { + "color": "error" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-error bg-error/10" + }, + { + "color": "primary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-primary ring ring-inset ring-primary/25 bg-primary/10" + }, + { + "color": "secondary" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-secondary ring ring-inset ring-secondary/25 bg-secondary/10" + }, + { + "color": "success" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-success ring ring-inset ring-success/25 bg-success/10" + }, + { + "color": "info" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-info ring ring-inset ring-info/25 bg-info/10" + }, + { + "color": "warning" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-warning ring ring-inset ring-warning/25 bg-warning/10" + }, + { + "color": "error" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "text-error ring ring-inset ring-error/25 bg-error/10" + }, + { + "color": "neutral" as typeof color[number], + "variant": "solid" as typeof variant[number], + "class": "text-inverted bg-inverted" + }, + { + "color": "neutral" as typeof color[number], + "variant": "outline" as typeof variant[number], + "class": "ring ring-inset ring-accented text-default bg-default" + }, + { + "color": "neutral" as typeof color[number], + "variant": "soft" as typeof variant[number], + "class": "text-default bg-elevated" + }, + { + "color": "neutral" as typeof color[number], + "variant": "subtle" as typeof variant[number], + "class": "ring ring-inset ring-accented text-default bg-elevated" + } + ], + "defaultVariants": { + "variant": "outline" as typeof variant[number], + "color": "neutral" as typeof color[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/link.ts b/packages/devtools-app/.nuxt/ui/link.ts new file mode 100644 index 000000000..469769841 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/link.ts @@ -0,0 +1,22 @@ +export default { + "base": "focus-visible:outline-primary", + "variants": { + "active": { + "true": "text-primary", + "false": "text-muted" + }, + "disabled": { + "true": "cursor-not-allowed opacity-75" + } + }, + "compoundVariants": [ + { + "active": false, + "disabled": false, + "class": [ + "hover:text-default", + "transition-colors" + ] + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/main.ts b/packages/devtools-app/.nuxt/ui/main.ts new file mode 100644 index 000000000..1dde12085 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/main.ts @@ -0,0 +1,3 @@ +export default { + "base": "min-h-[calc(100vh-var(--ui-header-height))]" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/marquee.ts b/packages/devtools-app/.nuxt/ui/marquee.ts new file mode 100644 index 000000000..10b88a18f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/marquee.ts @@ -0,0 +1,66 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +export default { + "slots": { + "root": "group relative flex items-center overflow-hidden gap-(--gap) [--gap:--spacing(16)] [--duration:20s]", + "content": "flex items-center shrink-0 justify-around gap-(--gap) min-w-max" + }, + "variants": { + "orientation": { + "horizontal": { + "content": "w-full" + }, + "vertical": { + "content": "h-full" + } + }, + "pauseOnHover": { + "true": { + "content": "group-hover:[animation-play-state:paused]" + } + }, + "reverse": { + "true": { + "content": "![animation-direction:reverse]" + } + }, + "overlay": { + "true": { + "root": "before:absolute before:pointer-events-none before:content-[\"\"] before:z-2 before:from-default before:to-transparent after:absolute after:pointer-events-none after:content-[\"\"] after:z-2 after:from-default after:to-transparent" + } + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "class": { + "root": "flex-row", + "content": "flex-row animate-[marquee_var(--duration)_linear_infinite] rtl:animate-[marquee-rtl_var(--duration)_linear_infinite] backface-hidden" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "overlay": true, + "class": { + "root": "before:inset-y-0 before:left-0 before:h-full before:w-1/3 before:bg-gradient-to-r after:inset-y-0 after:right-0 after:h-full after:w-1/3 after:bg-gradient-to-l backface-hidden" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "class": { + "root": "flex-col", + "content": "flex-col animate-[marquee-vertical_var(--duration)_linear_infinite] rtl:animate-[marquee-vertical-rtl_var(--duration)_linear_infinite] h-[fit-content] backface-hidden" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "overlay": true, + "class": { + "root": "before:inset-x-0 before:top-0 before:w-full before:h-1/3 before:bg-gradient-to-b after:inset-x-0 after:bottom-0 after:w-full after:h-1/3 after:bg-gradient-to-t backface-hidden" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/modal.ts b/packages/devtools-app/.nuxt/ui/modal.ts new file mode 100644 index 000000000..2d6fe4b16 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/modal.ts @@ -0,0 +1,60 @@ +export default { + "slots": { + "overlay": "fixed inset-0", + "content": "bg-default divide-y divide-default flex flex-col focus:outline-none", + "header": "flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)", + "wrapper": "", + "body": "flex-1 p-4 sm:p-6", + "footer": "flex items-center gap-1.5 p-4 sm:px-6", + "title": "text-highlighted font-semibold", + "description": "mt-1 text-muted text-sm", + "close": "absolute top-4 end-4" + }, + "variants": { + "transition": { + "true": { + "overlay": "data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]", + "content": "data-[state=open]:animate-[scale-in_200ms_ease-out] data-[state=closed]:animate-[scale-out_200ms_ease-in]" + } + }, + "fullscreen": { + "true": { + "content": "inset-0" + }, + "false": { + "content": "w-[calc(100vw-2rem)] max-w-lg rounded-lg shadow-lg ring ring-default" + } + }, + "overlay": { + "true": { + "overlay": "bg-elevated/75" + } + }, + "scrollable": { + "true": { + "overlay": "overflow-y-auto", + "content": "relative" + }, + "false": { + "content": "fixed", + "body": "overflow-y-auto" + } + } + }, + "compoundVariants": [ + { + "scrollable": true, + "fullscreen": false, + "class": { + "overlay": "grid place-items-center p-4 sm:py-8" + } + }, + { + "scrollable": false, + "fullscreen": false, + "class": { + "content": "top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 max-h-[calc(100dvh-2rem)] sm:max-h-[calc(100dvh-4rem)] overflow-hidden" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/navigation-menu.ts b/packages/devtools-app/.nuxt/ui/navigation-menu.ts new file mode 100644 index 000000000..0735626b3 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/navigation-menu.ts @@ -0,0 +1,513 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const highlightColor = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "pill", + "link" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +const contentOrientation = [ + "horizontal", + "vertical" +] as const + +export default { + "slots": { + "root": "relative flex gap-1.5 [&>div]:min-w-0", + "list": "isolate min-w-0", + "label": "w-full flex items-center gap-1.5 font-semibold text-xs/5 text-highlighted px-2.5 py-1.5", + "item": "min-w-0", + "link": "group relative w-full flex items-center gap-1.5 font-medium text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2", + "linkLeadingIcon": "shrink-0 size-5", + "linkLeadingAvatar": "shrink-0", + "linkLeadingAvatarSize": "2xs", + "linkLeadingChipSize": "sm", + "linkTrailing": "group ms-auto inline-flex gap-1.5 items-center", + "linkTrailingBadge": "shrink-0", + "linkTrailingBadgeSize": "sm", + "linkTrailingIcon": "size-5 transform shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200", + "linkLabel": "truncate", + "linkLabelExternalIcon": "inline-block size-3 align-top text-dimmed", + "childList": "isolate", + "childLabel": "text-xs text-highlighted", + "childItem": "", + "childLink": "group relative size-full flex items-start text-start text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2", + "childLinkWrapper": "min-w-0", + "childLinkIcon": "size-5 shrink-0", + "childLinkLabel": "truncate", + "childLinkLabelExternalIcon": "inline-block size-3 align-top text-dimmed", + "childLinkDescription": "text-muted", + "separator": "px-2 h-px bg-border", + "viewportWrapper": "absolute top-full left-0 flex w-full", + "viewport": "relative overflow-hidden bg-default shadow-lg rounded-md ring ring-default h-(--reka-navigation-menu-viewport-height) w-full transition-[width,height,left,right] duration-200 origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] z-1", + "content": "", + "indicator": "absolute left-0 data-[state=visible]:animate-[fade-in_100ms_ease-out] data-[state=hidden]:animate-[fade-out_100ms_ease-in] data-[state=hidden]:opacity-0 bottom-0 z-2 w-(--reka-navigation-menu-indicator-size) translate-x-(--reka-navigation-menu-indicator-position) flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200", + "arrow": "relative top-[50%] size-2.5 rotate-45 border border-default bg-default z-1 rounded-xs" + }, + "variants": { + "color": { + "primary": { + "link": "focus-visible:before:ring-primary", + "childLink": "focus-visible:before:ring-primary" + }, + "secondary": { + "link": "focus-visible:before:ring-secondary", + "childLink": "focus-visible:before:ring-secondary" + }, + "success": { + "link": "focus-visible:before:ring-success", + "childLink": "focus-visible:before:ring-success" + }, + "info": { + "link": "focus-visible:before:ring-info", + "childLink": "focus-visible:before:ring-info" + }, + "warning": { + "link": "focus-visible:before:ring-warning", + "childLink": "focus-visible:before:ring-warning" + }, + "error": { + "link": "focus-visible:before:ring-error", + "childLink": "focus-visible:before:ring-error" + }, + "neutral": { + "link": "focus-visible:before:ring-inverted", + "childLink": "focus-visible:before:ring-inverted" + } + }, + "highlightColor": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "pill": "", + "link": "" + }, + "orientation": { + "horizontal": { + "root": "items-center justify-between", + "list": "flex items-center", + "item": "py-2", + "link": "px-2.5 py-1.5 before:inset-x-px before:inset-y-0", + "childList": "grid p-2", + "childLink": "px-3 py-2 gap-2 before:inset-x-px before:inset-y-0", + "childLinkLabel": "font-medium", + "content": "absolute top-0 left-0 w-full max-h-[70vh] overflow-y-auto" + }, + "vertical": { + "root": "flex-col", + "link": "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0", + "childLabel": "px-1.5 py-0.5", + "childLink": "p-1.5 gap-1.5 before:inset-y-px before:inset-x-0" + } + }, + "contentOrientation": { + "horizontal": { + "viewportWrapper": "justify-center", + "content": "data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]" + }, + "vertical": { + "viewport": "sm:w-(--reka-navigation-menu-viewport-width) left-(--reka-navigation-menu-viewport-left) rtl:left-auto rtl:right-[calc(100%-var(--reka-navigation-menu-viewport-left)-var(--reka-navigation-menu-viewport-width))]" + } + }, + "active": { + "true": { + "childLink": "before:bg-elevated text-highlighted", + "childLinkIcon": "text-default" + }, + "false": { + "link": "text-muted", + "linkLeadingIcon": "text-dimmed", + "childLink": [ + "hover:before:bg-elevated/50 text-default hover:text-highlighted", + "transition-colors before:transition-colors" + ], + "childLinkIcon": [ + "text-dimmed group-hover:text-default", + "transition-colors" + ] + } + }, + "disabled": { + "true": { + "link": "cursor-not-allowed opacity-75" + } + }, + "highlight": { + "true": "" + }, + "level": { + "true": "" + }, + "collapsed": { + "true": "" + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "contentOrientation": "horizontal" as typeof contentOrientation[number], + "class": { + "childList": "grid-cols-2 gap-2" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "contentOrientation": "vertical" as typeof contentOrientation[number], + "class": { + "childList": "gap-1", + "content": "w-60" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "collapsed": false, + "class": { + "childList": "ms-5 border-s border-default", + "childItem": "ps-1.5 -ms-px", + "content": "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "collapsed": true, + "class": { + "link": "px-1.5", + "linkLabel": "hidden", + "linkTrailing": "hidden", + "content": "shadow-sm rounded-sm min-h-6 p-1" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "highlight": true, + "class": { + "link": [ + "after:absolute after:-bottom-2 after:inset-x-2.5 after:block after:h-px after:rounded-full", + "after:transition-colors" + ] + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "highlight": true, + "level": true, + "class": { + "link": [ + "after:absolute after:-start-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full", + "after:transition-colors" + ] + } + }, + { + "disabled": false, + "active": false, + "variant": "pill" as typeof variant[number], + "class": { + "link": [ + "hover:text-highlighted hover:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "linkLeadingIcon": [ + "group-hover:text-default", + "transition-colors" + ] + } + }, + { + "disabled": false, + "active": false, + "variant": "pill" as typeof variant[number], + "orientation": "horizontal" as typeof orientation[number], + "class": { + "link": "data-[state=open]:text-highlighted", + "linkLeadingIcon": "group-data-[state=open]:text-default" + } + }, + { + "disabled": false, + "variant": "pill" as typeof variant[number], + "highlight": true, + "orientation": "horizontal" as typeof orientation[number], + "class": { + "link": "data-[state=open]:before:bg-elevated/50" + } + }, + { + "disabled": false, + "variant": "pill" as typeof variant[number], + "highlight": false, + "active": false, + "orientation": "horizontal" as typeof orientation[number], + "class": { + "link": "data-[state=open]:before:bg-elevated/50" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-primary", + "linkLeadingIcon": "text-primary group-data-[state=open]:text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-secondary", + "linkLeadingIcon": "text-secondary group-data-[state=open]:text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-success", + "linkLeadingIcon": "text-success group-data-[state=open]:text-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-info", + "linkLeadingIcon": "text-info group-data-[state=open]:text-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-warning", + "linkLeadingIcon": "text-warning group-data-[state=open]:text-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-error", + "linkLeadingIcon": "text-error group-data-[state=open]:text-error" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "pill" as typeof variant[number], + "active": true, + "class": { + "link": "text-highlighted", + "linkLeadingIcon": "text-highlighted group-data-[state=open]:text-highlighted" + } + }, + { + "variant": "pill" as typeof variant[number], + "active": true, + "highlight": false, + "class": { + "link": "before:bg-elevated" + } + }, + { + "variant": "pill" as typeof variant[number], + "active": true, + "highlight": true, + "disabled": false, + "class": { + "link": [ + "hover:before:bg-elevated/50", + "before:transition-colors" + ] + } + }, + { + "disabled": false, + "active": false, + "variant": "link" as typeof variant[number], + "class": { + "link": [ + "hover:text-highlighted", + "transition-colors" + ], + "linkLeadingIcon": [ + "group-hover:text-default", + "transition-colors" + ] + } + }, + { + "disabled": false, + "active": false, + "variant": "link" as typeof variant[number], + "orientation": "horizontal" as typeof orientation[number], + "class": { + "link": "data-[state=open]:text-highlighted", + "linkLeadingIcon": "group-data-[state=open]:text-default" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-primary", + "linkLeadingIcon": "text-primary group-data-[state=open]:text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-secondary", + "linkLeadingIcon": "text-secondary group-data-[state=open]:text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-success", + "linkLeadingIcon": "text-success group-data-[state=open]:text-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-info", + "linkLeadingIcon": "text-info group-data-[state=open]:text-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-warning", + "linkLeadingIcon": "text-warning group-data-[state=open]:text-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-error", + "linkLeadingIcon": "text-error group-data-[state=open]:text-error" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "link" as typeof variant[number], + "active": true, + "class": { + "link": "text-highlighted", + "linkLeadingIcon": "text-highlighted group-data-[state=open]:text-highlighted" + } + }, + { + "highlightColor": "primary" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-primary" + } + }, + { + "highlightColor": "secondary" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-secondary" + } + }, + { + "highlightColor": "success" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-success" + } + }, + { + "highlightColor": "info" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-info" + } + }, + { + "highlightColor": "warning" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-warning" + } + }, + { + "highlightColor": "error" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-error" + } + }, + { + "highlightColor": "neutral" as typeof highlightColor[number], + "highlight": true, + "level": true, + "active": true, + "class": { + "link": "after:bg-inverted" + } + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "highlightColor": "primary" as typeof highlightColor[number], + "variant": "pill" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-anchors.ts b/packages/devtools-app/.nuxt/ui/page-anchors.ts new file mode 100644 index 000000000..dc52f46a2 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-anchors.ts @@ -0,0 +1,30 @@ +export default { + "slots": { + "root": "", + "list": "", + "item": "relative", + "link": "group text-sm flex items-center gap-1.5 py-1 focus-visible:outline-primary", + "linkLeading": "rounded-md p-1 inline-flex ring-inset ring", + "linkLeadingIcon": "size-4 shrink-0", + "linkLabel": "truncate", + "linkLabelExternalIcon": "size-3 absolute top-0 text-dimmed" + }, + "variants": { + "active": { + "true": { + "link": "text-primary font-semibold", + "linkLeading": "bg-primary ring-primary text-inverted" + }, + "false": { + "link": [ + "text-muted hover:text-default font-medium", + "transition-colors" + ], + "linkLeading": [ + "bg-elevated/50 ring-accented text-dimmed group-hover:bg-primary group-hover:ring-primary group-hover:text-inverted", + "transition" + ] + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-aside.ts b/packages/devtools-app/.nuxt/ui/page-aside.ts new file mode 100644 index 000000000..63dac7c04 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-aside.ts @@ -0,0 +1,10 @@ +export default { + "slots": { + "root": "hidden overflow-y-auto lg:block lg:max-h-[calc(100vh-var(--ui-header-height))] lg:sticky lg:top-(--ui-header-height) py-8 lg:ps-4 lg:-ms-4 lg:pe-6.5", + "container": "relative", + "top": "sticky -top-8 -mt-8 pointer-events-none z-[1]", + "topHeader": "h-8 bg-default -mx-4 px-4", + "topBody": "bg-default relative pointer-events-auto flex flex-col -mx-4 px-4", + "topFooter": "h-8 bg-gradient-to-b from-default -mx-4 px-4" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-body.ts b/packages/devtools-app/.nuxt/ui/page-body.ts new file mode 100644 index 000000000..9f5a021b6 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-body.ts @@ -0,0 +1,3 @@ +export default { + "base": "mt-8 pb-24 space-y-12" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-card.ts b/packages/devtools-app/.nuxt/ui/page-card.ts new file mode 100644 index 000000000..8b4583c48 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-card.ts @@ -0,0 +1,274 @@ +const variant = [ + "solid", + "outline", + "soft", + "subtle", + "ghost", + "naked" +] as const + +const highlightColor = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const spotlightColor = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative flex rounded-lg", + "spotlight": "absolute inset-0 rounded-[inherit] pointer-events-none bg-default/90", + "container": "relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6", + "wrapper": "flex flex-col flex-1 items-start", + "header": "mb-4", + "body": "flex-1", + "footer": "pt-4 mt-auto", + "leading": "inline-flex items-center mb-2.5", + "leadingIcon": "size-5 shrink-0 text-primary", + "title": "text-base text-pretty font-semibold text-highlighted", + "description": "text-[15px] text-pretty" + }, + "variants": { + "orientation": { + "horizontal": { + "container": "lg:grid-cols-2 lg:items-center" + }, + "vertical": { + "container": "" + } + }, + "reverse": { + "true": { + "wrapper": "order-last" + } + }, + "variant": { + "solid": { + "root": "bg-inverted text-inverted", + "title": "text-inverted", + "description": "text-dimmed" + }, + "outline": { + "root": "bg-default ring ring-default", + "description": "text-muted" + }, + "soft": { + "root": "bg-elevated/50", + "description": "text-toned" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default", + "description": "text-toned" + }, + "ghost": { + "description": "text-muted" + }, + "naked": { + "container": "p-0 sm:p-0", + "description": "text-muted" + } + }, + "to": { + "true": { + "root": [ + "has-focus-visible:ring-2 has-focus-visible:ring-primary", + "transition" + ] + } + }, + "title": { + "true": { + "description": "mt-1" + } + }, + "highlight": { + "true": { + "root": "ring-2" + } + }, + "highlightColor": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "spotlight": { + "true": { + "root": "[--spotlight-size:400px] before:absolute before:-inset-px before:pointer-events-none before:rounded-[inherit] before:bg-[radial-gradient(var(--spotlight-size)_var(--spotlight-size)_at_calc(var(--spotlight-x,0px))_calc(var(--spotlight-y,0px)),var(--spotlight-color),transparent_70%)]" + } + }, + "spotlightColor": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + } + }, + "compoundVariants": [ + { + "variant": "solid" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-inverted/90" + } + }, + { + "variant": "outline" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated/50" + } + }, + { + "variant": "soft" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated" + } + }, + { + "variant": "subtle" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated" + } + }, + { + "variant": "subtle" as typeof variant[number], + "to": true, + "highlight": false, + "class": { + "root": "hover:ring-accented" + } + }, + { + "variant": "ghost" as typeof variant[number], + "to": true, + "class": { + "root": "hover:bg-elevated/50" + } + }, + { + "highlightColor": "primary" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-primary" + } + }, + { + "highlightColor": "secondary" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-secondary" + } + }, + { + "highlightColor": "success" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-success" + } + }, + { + "highlightColor": "info" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-info" + } + }, + { + "highlightColor": "warning" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-warning" + } + }, + { + "highlightColor": "error" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-error" + } + }, + { + "highlightColor": "neutral" as typeof highlightColor[number], + "highlight": true, + "class": { + "root": "ring-inverted" + } + }, + { + "spotlightColor": "primary" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-primary)]" + } + }, + { + "spotlightColor": "secondary" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-secondary)]" + } + }, + { + "spotlightColor": "success" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-success)]" + } + }, + { + "spotlightColor": "info" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-info)]" + } + }, + { + "spotlightColor": "warning" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-warning)]" + } + }, + { + "spotlightColor": "error" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-error)]" + } + }, + { + "spotlightColor": "neutral" as typeof spotlightColor[number], + "spotlight": true, + "class": { + "root": "[--spotlight-color:var(--ui-bg-inverted)]" + } + } + ], + "defaultVariants": { + "variant": "outline" as typeof variant[number], + "highlightColor": "primary" as typeof highlightColor[number], + "spotlightColor": "primary" as typeof spotlightColor[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-columns.ts b/packages/devtools-app/.nuxt/ui/page-columns.ts new file mode 100644 index 000000000..64452951b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-columns.ts @@ -0,0 +1,3 @@ +export default { + "base": "relative column-1 md:columns-2 lg:columns-3 gap-8 space-y-8 *:break-inside-avoid-column *:will-change-transform" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-cta.ts b/packages/devtools-app/.nuxt/ui/page-cta.ts new file mode 100644 index 000000000..06641240f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-cta.ts @@ -0,0 +1,70 @@ +const variant = [ + "solid", + "outline", + "soft", + "subtle", + "naked" +] as const + +export default { + "slots": { + "root": "relative isolate rounded-xl overflow-hidden", + "container": "flex flex-col lg:grid px-6 py-12 sm:px-12 sm:py-24 lg:px-16 lg:py-24 gap-8 sm:gap-16", + "wrapper": "", + "header": "", + "title": "text-3xl sm:text-4xl text-pretty tracking-tight font-bold text-highlighted", + "description": "text-base sm:text-lg text-muted", + "body": "mt-8", + "footer": "mt-8", + "links": "flex flex-wrap gap-x-6 gap-y-3" + }, + "variants": { + "orientation": { + "horizontal": { + "container": "lg:grid-cols-2 lg:items-center", + "description": "text-pretty" + }, + "vertical": { + "container": "", + "title": "text-center", + "description": "text-center text-balance", + "links": "justify-center" + } + }, + "reverse": { + "true": { + "wrapper": "order-last" + } + }, + "variant": { + "solid": { + "root": "bg-inverted text-inverted", + "title": "text-inverted", + "description": "text-dimmed" + }, + "outline": { + "root": "bg-default ring ring-default", + "description": "text-muted" + }, + "soft": { + "root": "bg-elevated/50", + "description": "text-toned" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default", + "description": "text-toned" + }, + "naked": { + "description": "text-muted" + } + }, + "title": { + "true": { + "description": "mt-6" + } + } + }, + "defaultVariants": { + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-feature.ts b/packages/devtools-app/.nuxt/ui/page-feature.ts new file mode 100644 index 000000000..8efb4f557 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-feature.ts @@ -0,0 +1,34 @@ +export default { + "slots": { + "root": "relative rounded-sm", + "wrapper": "", + "leading": "inline-flex items-center justify-center", + "leadingIcon": "size-5 shrink-0 text-primary", + "title": "text-base text-pretty font-semibold text-highlighted", + "description": "text-[15px] text-pretty text-muted" + }, + "variants": { + "orientation": { + "horizontal": { + "root": "flex items-start gap-2.5", + "leading": "p-0.5" + }, + "vertical": { + "leading": "mb-2.5" + } + }, + "to": { + "true": { + "root": [ + "has-focus-visible:ring-2 has-focus-visible:ring-primary", + "transition" + ] + } + }, + "title": { + "true": { + "description": "mt-1" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-grid.ts b/packages/devtools-app/.nuxt/ui/page-grid.ts new file mode 100644 index 000000000..ec349198b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-grid.ts @@ -0,0 +1,3 @@ +export default { + "base": "relative grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-header.ts b/packages/devtools-app/.nuxt/ui/page-header.ts new file mode 100644 index 000000000..3e004746f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-header.ts @@ -0,0 +1,18 @@ +export default { + "slots": { + "root": "relative border-b border-default py-8", + "container": "", + "wrapper": "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4", + "headline": "mb-2.5 text-sm font-semibold text-primary flex items-center gap-1.5", + "title": "text-3xl sm:text-4xl text-pretty font-bold text-highlighted", + "description": "text-lg text-pretty text-muted", + "links": "flex flex-wrap items-center gap-1.5" + }, + "variants": { + "title": { + "true": { + "description": "mt-4" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-hero.ts b/packages/devtools-app/.nuxt/ui/page-hero.ts new file mode 100644 index 000000000..8c44ba604 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-hero.ts @@ -0,0 +1,44 @@ +export default { + "slots": { + "root": "relative isolate", + "container": "flex flex-col lg:grid py-24 sm:py-32 lg:py-40 gap-16 sm:gap-y-24", + "wrapper": "", + "header": "", + "headline": "mb-4", + "title": "text-5xl sm:text-7xl text-pretty tracking-tight font-bold text-highlighted", + "description": "text-lg sm:text-xl/8 text-muted", + "body": "mt-10", + "footer": "mt-10", + "links": "flex flex-wrap gap-x-6 gap-y-3" + }, + "variants": { + "orientation": { + "horizontal": { + "container": "lg:grid-cols-2 lg:items-center", + "description": "text-pretty" + }, + "vertical": { + "container": "", + "headline": "justify-center", + "wrapper": "text-center", + "description": "text-balance", + "links": "justify-center" + } + }, + "reverse": { + "true": { + "wrapper": "order-last" + } + }, + "headline": { + "true": { + "headline": "font-semibold text-primary flex items-center gap-1.5" + } + }, + "title": { + "true": { + "description": "mt-6" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-links.ts b/packages/devtools-app/.nuxt/ui/page-links.ts new file mode 100644 index 000000000..95faca92e --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-links.ts @@ -0,0 +1,25 @@ +export default { + "slots": { + "root": "flex flex-col gap-3", + "title": "text-sm font-semibold flex items-center gap-1.5", + "list": "flex flex-col gap-2", + "item": "relative", + "link": "group text-sm flex items-center gap-1.5 focus-visible:outline-primary", + "linkLeadingIcon": "size-5 shrink-0", + "linkLabel": "truncate", + "linkLabelExternalIcon": "size-3 absolute top-0 text-dimmed" + }, + "variants": { + "active": { + "true": { + "link": "text-primary font-medium" + }, + "false": { + "link": [ + "text-muted hover:text-default", + "transition-colors" + ] + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-list.ts b/packages/devtools-app/.nuxt/ui/page-list.ts new file mode 100644 index 000000000..d8b480915 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-list.ts @@ -0,0 +1,8 @@ +export default { + "base": "relative flex flex-col", + "variants": { + "divide": { + "true": "*:not-last:after:absolute *:not-last:after:inset-x-1 *:not-last:after:bottom-0 *:not-last:after:bg-border *:not-last:after:h-px" + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-logos.ts b/packages/devtools-app/.nuxt/ui/page-logos.ts new file mode 100644 index 000000000..0b57116f4 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-logos.ts @@ -0,0 +1,15 @@ +export default { + "slots": { + "root": "relative overflow-hidden", + "title": "text-lg text-center font-semibold text-highlighted", + "logos": "mt-10", + "logo": "size-10 shrink-0" + }, + "variants": { + "marquee": { + "false": { + "logos": "flex items-center shrink-0 justify-around gap-(--gap) [--gap:--spacing(16)]" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page-section.ts b/packages/devtools-app/.nuxt/ui/page-section.ts new file mode 100644 index 000000000..050a3bba0 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page-section.ts @@ -0,0 +1,84 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +export default { + "slots": { + "root": "relative isolate", + "container": "flex flex-col lg:grid py-16 sm:py-24 lg:py-32 gap-8 sm:gap-16", + "wrapper": "", + "header": "", + "leading": "flex items-center mb-6", + "leadingIcon": "size-10 shrink-0 text-primary", + "headline": "mb-3", + "title": "text-3xl sm:text-4xl lg:text-5xl text-pretty tracking-tight font-bold text-highlighted", + "description": "text-base sm:text-lg text-muted", + "body": "mt-8", + "features": "grid", + "footer": "mt-8", + "links": "flex flex-wrap gap-x-6 gap-y-3" + }, + "variants": { + "orientation": { + "horizontal": { + "container": "lg:grid-cols-2 lg:items-center", + "description": "text-pretty", + "features": "gap-4" + }, + "vertical": { + "container": "", + "headline": "justify-center", + "leading": "justify-center", + "title": "text-center", + "description": "text-center text-balance", + "links": "justify-center", + "features": "sm:grid-cols-2 lg:grid-cols-3 gap-8" + } + }, + "reverse": { + "true": { + "wrapper": "order-last" + } + }, + "headline": { + "true": { + "headline": "font-semibold text-primary flex items-center gap-1.5" + } + }, + "title": { + "true": { + "description": "mt-6" + } + }, + "description": { + "true": "" + }, + "body": { + "true": "" + } + }, + "compoundVariants": [ + { + "orientation": "vertical" as typeof orientation[number], + "title": true, + "class": { + "body": "mt-16" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "description": true, + "class": { + "body": "mt-16" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "body": true, + "class": { + "footer": "mt-16" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/page.ts b/packages/devtools-app/.nuxt/ui/page.ts new file mode 100644 index 000000000..4139425f5 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/page.ts @@ -0,0 +1,32 @@ +export default { + "slots": { + "root": "flex flex-col lg:grid lg:grid-cols-10 lg:gap-10", + "left": "lg:col-span-2", + "center": "lg:col-span-8", + "right": "lg:col-span-2 order-first lg:order-last" + }, + "variants": { + "left": { + "true": "" + }, + "right": { + "true": "" + } + }, + "compoundVariants": [ + { + "left": true, + "right": true, + "class": { + "center": "lg:col-span-6" + } + }, + { + "left": false, + "right": false, + "class": { + "center": "lg:col-span-10" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/pagination.ts b/packages/devtools-app/.nuxt/ui/pagination.ts new file mode 100644 index 000000000..00671514f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/pagination.ts @@ -0,0 +1,13 @@ +export default { + "slots": { + "root": "", + "list": "flex items-center gap-1", + "ellipsis": "pointer-events-none", + "label": "min-w-5 text-center", + "first": "", + "prev": "", + "item": "", + "next": "", + "last": "" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/pin-input.ts b/packages/devtools-app/.nuxt/ui/pin-input.ts new file mode 100644 index 000000000..8b17269cc --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/pin-input.ts @@ -0,0 +1,194 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative inline-flex items-center gap-1.5", + "base": [ + "rounded-md border-0 placeholder:text-dimmed text-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ] + }, + "variants": { + "size": { + "xs": { + "base": "size-6 text-sm/4" + }, + "sm": { + "base": "size-7 text-sm/4" + }, + "md": { + "base": "size-8 text-base/5" + }, + "lg": { + "base": "size-9 text-base/5" + }, + "xl": { + "base": "size-10 text-base" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/popover.ts b/packages/devtools-app/.nuxt/ui/popover.ts new file mode 100644 index 000000000..ca7c4e33a --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/popover.ts @@ -0,0 +1,6 @@ +export default { + "slots": { + "content": "bg-default shadow-lg rounded-md ring ring-default data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-popover-content-transform-origin) focus:outline-none pointer-events-auto", + "arrow": "fill-bg stroke-default" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/pricing-plan.ts b/packages/devtools-app/.nuxt/ui/pricing-plan.ts new file mode 100644 index 000000000..fdb30abc5 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/pricing-plan.ts @@ -0,0 +1,101 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +const variant = [ + "solid", + "outline", + "soft", + "subtle" +] as const + +export default { + "slots": { + "root": "relative grid rounded-lg p-6 lg:p-8 xl:p-10 gap-6", + "header": "", + "body": "flex flex-col min-w-0", + "footer": "flex flex-col gap-6 items-center", + "titleWrapper": "flex items-center gap-3", + "title": "text-highlighted truncate text-2xl sm:text-3xl text-pretty font-semibold", + "description": "text-muted text-base text-pretty mt-2", + "priceWrapper": "flex items-center gap-1", + "price": "text-highlighted text-3xl sm:text-4xl font-semibold", + "discount": "text-muted line-through text-xl sm:text-2xl", + "billing": "flex flex-col justify-between min-w-0", + "billingPeriod": "text-toned truncate text-xs font-medium", + "billingCycle": "text-muted truncate text-xs font-medium", + "features": "flex flex-col gap-3 flex-1 mt-6 grow-0", + "feature": "flex items-center gap-2 min-w-0", + "featureIcon": "size-5 shrink-0 text-primary", + "featureTitle": "text-muted text-sm truncate", + "badge": "", + "button": "", + "tagline": "text-base font-semibold text-default", + "terms": "text-xs/5 text-muted text-center text-balance" + }, + "variants": { + "orientation": { + "horizontal": { + "root": "grid-cols-1 lg:grid-cols-3 justify-between divide-y lg:divide-y-0 lg:divide-x divide-default", + "body": "lg:col-span-2 pb-6 lg:pb-0 lg:pr-6 justify-center", + "footer": "lg:justify-center lg:items-center lg:p-6 lg:max-w-xs lg:w-full lg:mx-auto", + "features": "lg:grid lg:grid-cols-2 lg:mt-12" + }, + "vertical": { + "footer": "justify-end", + "priceWrapper": "mt-6" + } + }, + "variant": { + "solid": { + "root": "bg-inverted", + "title": "text-inverted", + "description": "text-dimmed", + "price": "text-inverted", + "discount": "text-dimmed", + "billingCycle": "text-dimmed", + "billingPeriod": "text-dimmed", + "featureTitle": "text-dimmed" + }, + "outline": { + "root": "bg-default ring ring-default" + }, + "soft": { + "root": "bg-elevated/50" + }, + "subtle": { + "root": "bg-elevated/50 ring ring-default" + } + }, + "highlight": { + "true": { + "root": "ring-2 ring-inset ring-primary" + } + }, + "scale": { + "true": { + "root": "lg:scale-[1.1] lg:z-[1]" + } + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "variant": "soft" as typeof variant[number], + "class": { + "root": "divide-accented" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "variant": "subtle" as typeof variant[number], + "class": { + "root": "divide-accented" + } + } + ], + "defaultVariants": { + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/pricing-plans.ts b/packages/devtools-app/.nuxt/ui/pricing-plans.ts new file mode 100644 index 000000000..e7cf21c3f --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/pricing-plans.ts @@ -0,0 +1,22 @@ +export default { + "base": "flex flex-col gap-y-8", + "variants": { + "orientation": { + "horizontal": "lg:grid lg:grid-cols-[repeat(var(--count),minmax(0,1fr))]", + "vertical": "" + }, + "compact": { + "false": "gap-x-8" + }, + "scale": { + "true": "" + } + }, + "compoundVariants": [ + { + "compact": false, + "scale": true, + "class": "lg:gap-x-13" + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/pricing-table.ts b/packages/devtools-app/.nuxt/ui/pricing-table.ts new file mode 100644 index 000000000..434fc00d3 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/pricing-table.ts @@ -0,0 +1,51 @@ +export default { + "slots": { + "root": "w-full relative", + "table": "w-full table-fixed border-separate border-spacing-x-0 hidden md:table", + "list": "md:hidden flex flex-col gap-6 w-full", + "item": "p-6 flex flex-col border border-default rounded-lg", + "caption": "sr-only", + "thead": "", + "tbody": "", + "tr": "", + "th": "py-4 font-normal text-left border-b border-default", + "td": "px-6 py-4 text-center border-b border-default", + "tier": "p-6 text-left font-normal", + "tierTitleWrapper": "flex items-center gap-3", + "tierTitle": "text-lg font-semibold text-highlighted", + "tierDescription": "text-sm font-normal text-muted mt-1", + "tierBadge": "truncate", + "tierPriceWrapper": "flex items-center gap-1 mt-4", + "tierPrice": "text-highlighted text-3xl sm:text-4xl font-semibold", + "tierDiscount": "text-muted line-through text-xl sm:text-2xl", + "tierBilling": "flex flex-col justify-between min-w-0", + "tierBillingPeriod": "text-toned truncate text-xs font-medium", + "tierBillingCycle": "text-muted truncate text-xs font-medium", + "tierButton": "mt-6", + "tierFeatureIcon": "size-5 shrink-0", + "section": "mt-6 flex flex-col gap-2", + "sectionTitle": "font-semibold text-sm text-highlighted", + "feature": "flex items-center justify-between gap-1", + "featureTitle": "text-sm text-default", + "featureValue": "text-sm text-muted flex justify-center min-w-5" + }, + "variants": { + "section": { + "true": { + "tr": "*:pt-8" + } + }, + "active": { + "true": { + "tierFeatureIcon": "text-primary" + } + }, + "highlight": { + "true": { + "tier": "bg-elevated/50 border-x border-t border-default rounded-t-lg", + "td": "bg-elevated/50 border-x border-default", + "item": "bg-elevated/50" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/progress.ts b/packages/devtools-app/.nuxt/ui/progress.ts new file mode 100644 index 000000000..cbb1cb265 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/progress.ts @@ -0,0 +1,297 @@ +const animation = [ + "carousel", + "carousel-inverse", + "swing", + "elastic" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "2xs", + "xs", + "sm", + "md", + "lg", + "xl", + "2xl" +] as const + +const step = [ + "active", + "first", + "other", + "last" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +export default { + "slots": { + "root": "gap-2", + "base": "relative overflow-hidden rounded-full bg-accented", + "indicator": "rounded-full size-full transition-transform duration-200 ease-out", + "status": "flex text-dimmed transition-[width] duration-200", + "steps": "grid items-end", + "step": "truncate text-end row-start-1 col-start-1 transition-opacity" as typeof step[number] + }, + "variants": { + "animation": { + "carousel": "", + "carousel-inverse": "", + "swing": "", + "elastic": "" + }, + "color": { + "primary": { + "indicator": "bg-primary", + "steps": "text-primary" + }, + "secondary": { + "indicator": "bg-secondary", + "steps": "text-secondary" + }, + "success": { + "indicator": "bg-success", + "steps": "text-success" + }, + "info": { + "indicator": "bg-info", + "steps": "text-info" + }, + "warning": { + "indicator": "bg-warning", + "steps": "text-warning" + }, + "error": { + "indicator": "bg-error", + "steps": "text-error" + }, + "neutral": { + "indicator": "bg-inverted", + "steps": "text-inverted" + } + }, + "size": { + "2xs": { + "status": "text-xs", + "steps": "text-xs" + }, + "xs": { + "status": "text-xs", + "steps": "text-xs" + }, + "sm": { + "status": "text-sm", + "steps": "text-sm" + }, + "md": { + "status": "text-sm", + "steps": "text-sm" + }, + "lg": { + "status": "text-sm", + "steps": "text-sm" + }, + "xl": { + "status": "text-base", + "steps": "text-base" + }, + "2xl": { + "status": "text-base", + "steps": "text-base" + } + }, + "step": { + "active": { + "step": "opacity-100" as typeof step[number] + }, + "first": { + "step": "opacity-100 text-muted" as typeof step[number] + }, + "other": { + "step": "opacity-0" as typeof step[number] + }, + "last": { + "step": "" + } + }, + "orientation": { + "horizontal": { + "root": "w-full flex flex-col", + "base": "w-full", + "status": "flex-row items-center justify-end min-w-fit" + }, + "vertical": { + "root": "h-full flex flex-row-reverse", + "base": "h-full", + "status": "flex-col justify-end min-h-fit" + } + }, + "inverted": { + "true": { + "status": "self-end" + } + } + }, + "compoundVariants": [ + { + "inverted": true, + "orientation": "horizontal" as typeof orientation[number], + "class": { + "step": "text-start" as typeof step[number], + "status": "flex-row-reverse" + } + }, + { + "inverted": true, + "orientation": "vertical" as typeof orientation[number], + "class": { + "steps": "items-start", + "status": "flex-col-reverse" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "2xs" as typeof size[number], + "class": "h-px" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": "h-0.5" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": "h-1" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": "h-2" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": "h-3" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": "h-4" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "2xl" as typeof size[number], + "class": "h-5" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "2xs" as typeof size[number], + "class": "w-px" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": "w-0.5" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": "w-1" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": "w-2" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": "w-3" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": "w-4" + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "2xl" as typeof size[number], + "class": "w-5" + }, + { + "orientation": "horizontal" as typeof orientation[number], + "animation": "carousel" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[carousel_2s_ease-in-out_infinite] data-[state=indeterminate]:rtl:animate-[carousel-rtl_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "animation": "carousel" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[carousel-vertical_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "animation": "carousel-inverse" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[carousel-inverse_2s_ease-in-out_infinite] data-[state=indeterminate]:rtl:animate-[carousel-inverse-rtl_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "animation": "carousel-inverse" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[carousel-inverse-vertical_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "animation": "swing" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[swing_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "animation": "swing" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[swing-vertical_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "animation": "elastic" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[elastic_2s_ease-in-out_infinite]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "animation": "elastic" as typeof animation[number], + "class": { + "indicator": "data-[state=indeterminate]:animate-[elastic-vertical_2s_ease-in-out_infinite]" + } + } + ], + "defaultVariants": { + "animation": "carousel" as typeof animation[number], + "color": "primary" as typeof color[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/radio-group.ts b/packages/devtools-app/.nuxt/ui/radio-group.ts new file mode 100644 index 000000000..567a5daee --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/radio-group.ts @@ -0,0 +1,352 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "list", + "card", + "table" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +const indicator = [ + "start", + "end", + "hidden" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "relative", + "fieldset": "flex gap-x-2", + "legend": "mb-1 block font-medium text-default", + "item": "flex items-start", + "container": "flex items-center", + "base": "rounded-full ring ring-inset ring-accented overflow-hidden focus-visible:outline-2 focus-visible:outline-offset-2", + "indicator": "flex items-center justify-center size-full after:bg-default after:rounded-full" as typeof indicator[number], + "wrapper": "w-full", + "label": "block font-medium text-default", + "description": "text-muted" + }, + "variants": { + "color": { + "primary": { + "base": "focus-visible:outline-primary", + "indicator": "bg-primary" as typeof indicator[number] + }, + "secondary": { + "base": "focus-visible:outline-secondary", + "indicator": "bg-secondary" as typeof indicator[number] + }, + "success": { + "base": "focus-visible:outline-success", + "indicator": "bg-success" as typeof indicator[number] + }, + "info": { + "base": "focus-visible:outline-info", + "indicator": "bg-info" as typeof indicator[number] + }, + "warning": { + "base": "focus-visible:outline-warning", + "indicator": "bg-warning" as typeof indicator[number] + }, + "error": { + "base": "focus-visible:outline-error", + "indicator": "bg-error" as typeof indicator[number] + }, + "neutral": { + "base": "focus-visible:outline-inverted", + "indicator": "bg-inverted" as typeof indicator[number] + } + }, + "variant": { + "list": { + "item": "" + }, + "card": { + "item": "border border-muted rounded-lg" + }, + "table": { + "item": "border border-muted" + } + }, + "orientation": { + "horizontal": { + "fieldset": "flex-row" + }, + "vertical": { + "fieldset": "flex-col" + } + }, + "indicator": { + "start": { + "item": "flex-row", + "wrapper": "ms-2" + }, + "end": { + "item": "flex-row-reverse", + "wrapper": "me-2" + }, + "hidden": { + "base": "sr-only", + "wrapper": "text-center" + } + }, + "size": { + "xs": { + "fieldset": "gap-y-0.5", + "legend": "text-xs", + "base": "size-3", + "item": "text-xs", + "container": "h-4", + "indicator": "after:size-1" as typeof indicator[number] + }, + "sm": { + "fieldset": "gap-y-0.5", + "legend": "text-xs", + "base": "size-3.5", + "item": "text-xs", + "container": "h-4", + "indicator": "after:size-1" as typeof indicator[number] + }, + "md": { + "fieldset": "gap-y-1", + "legend": "text-sm", + "base": "size-4", + "item": "text-sm", + "container": "h-5", + "indicator": "after:size-1.5" as typeof indicator[number] + }, + "lg": { + "fieldset": "gap-y-1", + "legend": "text-sm", + "base": "size-4.5", + "item": "text-sm", + "container": "h-5", + "indicator": "after:size-1.5" as typeof indicator[number] + }, + "xl": { + "fieldset": "gap-y-1.5", + "legend": "text-base", + "base": "size-5", + "item": "text-base", + "container": "h-6", + "indicator": "after:size-2" as typeof indicator[number] + } + }, + "disabled": { + "true": { + "item": "opacity-75", + "base": "cursor-not-allowed", + "label": "cursor-not-allowed", + "description": "cursor-not-allowed" + } + }, + "required": { + "true": { + "legend": "after:content-['*'] after:ms-0.5 after:text-error" + } + } + }, + "compoundVariants": [ + { + "size": "xs" as typeof size[number], + "variant": [ + "card" as typeof variant[number], + "table" as typeof variant[number] + ], + "class": { + "item": "p-2.5" + } + }, + { + "size": "sm" as typeof size[number], + "variant": [ + "card" as typeof variant[number], + "table" as typeof variant[number] + ], + "class": { + "item": "p-3" + } + }, + { + "size": "md" as typeof size[number], + "variant": [ + "card" as typeof variant[number], + "table" as typeof variant[number] + ], + "class": { + "item": "p-3.5" + } + }, + { + "size": "lg" as typeof size[number], + "variant": [ + "card" as typeof variant[number], + "table" as typeof variant[number] + ], + "class": { + "item": "p-4" + } + }, + { + "size": "xl" as typeof size[number], + "variant": [ + "card" as typeof variant[number], + "table" as typeof variant[number] + ], + "class": { + "item": "p-4.5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "first-of-type:rounded-s-lg last-of-type:rounded-e-lg", + "fieldset": "gap-0 -space-x-px" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "first-of-type:rounded-t-lg last-of-type:rounded-b-lg", + "fieldset": "gap-0 -space-y-px" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-error" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "card" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:border-inverted" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-primary/10 has-data-[state=checked]:border-primary/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-secondary/10 has-data-[state=checked]:border-secondary/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "success" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-success/10 has-data-[state=checked]:border-success/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "info" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-info/10 has-data-[state=checked]:border-info/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-warning/10 has-data-[state=checked]:border-warning/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "error" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-error/10 has-data-[state=checked]:border-error/50 has-data-[state=checked]:z-[1]" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "table" as typeof variant[number], + "class": { + "item": "has-data-[state=checked]:bg-elevated has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:z-[1]" + } + }, + { + "variant": [ + "card" as typeof variant[number], + "table" as typeof variant[number] + ], + "disabled": true, + "class": { + "item": "cursor-not-allowed" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "list" as typeof variant[number], + "orientation": "vertical" as typeof orientation[number], + "indicator": "start" as typeof indicator[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/scroll-area.ts b/packages/devtools-app/.nuxt/ui/scroll-area.ts new file mode 100644 index 000000000..fcbf12ee4 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/scroll-area.ts @@ -0,0 +1,21 @@ +export default { + "slots": { + "root": "relative", + "viewport": "relative flex", + "item": "" + }, + "variants": { + "orientation": { + "vertical": { + "root": "overflow-y-auto overflow-x-hidden", + "viewport": "flex-col", + "item": "" + }, + "horizontal": { + "root": "overflow-x-auto overflow-y-hidden", + "viewport": "flex-row", + "item": "" + } + } + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/select-menu.ts b/packages/devtools-app/.nuxt/ui/select-menu.ts new file mode 100644 index 000000000..7ea4f9089 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/select-menu.ts @@ -0,0 +1,385 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "base": [ + "relative group rounded-md inline-flex items-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute inset-y-0 end-0 flex items-center", + "trailingIcon": "shrink-0 text-dimmed", + "value": "truncate pointer-events-none", + "placeholder": "truncate text-dimmed", + "arrow": "fill-bg stroke-default", + "content": [ + "max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col", + "origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)" + ], + "viewport": "relative scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "empty": "text-center text-muted", + "label": "font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": [ + "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ], + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemLeadingChip": "shrink-0", + "itemLeadingChipSize": "", + "itemTrailing": "ms-auto inline-flex gap-1.5 items-center", + "itemTrailingIcon": "shrink-0", + "itemWrapper": "flex-1 flex flex-col min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted", + "input": "border-b border-default", + "focusScope": "flex flex-col min-h-0", + "trailingClear": "p-0" + }, + "variants": { + "fieldGroup": { + "horizontal": "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]", + "vertical": "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]" + }, + "size": { + "xs": { + "base": "px-2 py-1 text-xs gap-1", + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailingIcon": "size-4", + "empty": "p-2 text-xs" + }, + "sm": { + "base": "px-2.5 py-1.5 text-xs gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailingIcon": "size-4", + "empty": "p-2.5 text-xs" + }, + "md": { + "base": "px-2.5 py-1.5 text-sm gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailingIcon": "size-5", + "empty": "p-2.5 text-sm" + }, + "lg": { + "base": "px-3 py-2 text-sm gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailingIcon": "size-5", + "empty": "p-3 text-sm" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6", + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6", + "itemLeadingAvatarSize": "xs", + "itemLeadingChip": "size-6", + "itemLeadingChipSize": "lg", + "itemTrailingIcon": "size-6", + "empty": "p-3 text-base" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + }, + "virtualize": { + "true": { + "viewport": "p-1 isolate" + }, + "false": { + "viewport": "divide-y divide-default" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/select.ts b/packages/devtools-app/.nuxt/ui/select.ts new file mode 100644 index 000000000..f76717fe5 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/select.ts @@ -0,0 +1,371 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "base": [ + "relative group rounded-md inline-flex items-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ], + "leading": "absolute inset-y-0 start-0 flex items-center", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute inset-y-0 end-0 flex items-center", + "trailingIcon": "shrink-0 text-dimmed", + "value": "truncate pointer-events-none", + "placeholder": "truncate text-dimmed", + "arrow": "fill-bg stroke-default", + "content": "max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col", + "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1", + "group": "p-1 isolate", + "empty": "text-center text-muted", + "label": "font-semibold text-highlighted", + "separator": "-mx-1 my-1 h-px bg-border", + "item": [ + "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50", + "transition-colors before:transition-colors" + ], + "itemLeadingIcon": [ + "shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default", + "transition-colors" + ], + "itemLeadingAvatar": "shrink-0", + "itemLeadingAvatarSize": "", + "itemLeadingChip": "shrink-0", + "itemLeadingChipSize": "", + "itemTrailing": "ms-auto inline-flex gap-1.5 items-center", + "itemTrailingIcon": "shrink-0", + "itemWrapper": "flex-1 flex flex-col min-w-0", + "itemLabel": "truncate", + "itemDescription": "truncate text-muted" + }, + "variants": { + "fieldGroup": { + "horizontal": "not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]", + "vertical": "not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]" + }, + "size": { + "xs": { + "base": "px-2 py-1 text-xs gap-1", + "leading": "ps-2", + "trailing": "pe-2", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "label": "p-1 text-[10px]/3 gap-1", + "item": "p-1 text-xs gap-1", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailingIcon": "size-4", + "empty": "p-2 text-xs" + }, + "sm": { + "base": "px-2.5 py-1.5 text-xs gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4", + "label": "p-1.5 text-[10px]/3 gap-1.5", + "item": "p-1.5 text-xs gap-1.5", + "itemLeadingIcon": "size-4", + "itemLeadingAvatarSize": "3xs", + "itemLeadingChip": "size-4", + "itemLeadingChipSize": "sm", + "itemTrailingIcon": "size-4", + "empty": "p-2.5 text-xs" + }, + "md": { + "base": "px-2.5 py-1.5 text-sm gap-1.5", + "leading": "ps-2.5", + "trailing": "pe-2.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "label": "p-1.5 text-xs gap-1.5", + "item": "p-1.5 text-sm gap-1.5", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailingIcon": "size-5", + "empty": "p-2.5 text-sm" + }, + "lg": { + "base": "px-3 py-2 text-sm gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5", + "label": "p-2 text-xs gap-2", + "item": "p-2 text-sm gap-2", + "itemLeadingIcon": "size-5", + "itemLeadingAvatarSize": "2xs", + "itemLeadingChip": "size-5", + "itemLeadingChipSize": "md", + "itemTrailingIcon": "size-5", + "empty": "p-3 text-sm" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leading": "ps-3", + "trailing": "pe-3", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6", + "label": "p-2 text-sm gap-2", + "item": "p-2 text-base gap-2", + "itemLeadingIcon": "size-6", + "itemLeadingAvatarSize": "xs", + "itemLeadingChip": "size-6", + "itemLeadingChipSize": "lg", + "itemTrailingIcon": "size-6", + "empty": "p-3 text-base" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus:ring-2 focus:ring-inset focus:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/separator.ts b/packages/devtools-app/.nuxt/ui/separator.ts new file mode 100644 index 000000000..0eb89bbd7 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/separator.ts @@ -0,0 +1,172 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const type = [ + "solid", + "dashed", + "dotted" +] as const + +export default { + "slots": { + "root": "flex items-center align-center text-center", + "border": "", + "container": "font-medium text-default flex", + "icon": "shrink-0 size-5", + "avatar": "shrink-0", + "avatarSize": "2xs", + "label": "text-sm" + }, + "variants": { + "color": { + "primary": { + "border": "border-primary" + }, + "secondary": { + "border": "border-secondary" + }, + "success": { + "border": "border-success" + }, + "info": { + "border": "border-info" + }, + "warning": { + "border": "border-warning" + }, + "error": { + "border": "border-error" + }, + "neutral": { + "border": "border-default" + } + }, + "orientation": { + "horizontal": { + "root": "w-full flex-row", + "border": "w-full", + "container": "mx-3 whitespace-nowrap" + }, + "vertical": { + "root": "h-full flex-col", + "border": "h-full", + "container": "my-2" + } + }, + "size": { + "xs": "", + "sm": "", + "md": "", + "lg": "", + "xl": "" + }, + "type": { + "solid": { + "border": "border-solid" + }, + "dashed": { + "border": "border-dashed" + }, + "dotted": { + "border": "border-dotted" + } + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "border": "border-t" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "border": "border-t-[2px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "border": "border-t-[3px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "border": "border-t-[4px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "border": "border-t-[5px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "border": "border-s" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "border": "border-s-[2px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "border": "border-s-[3px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "border": "border-s-[4px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "border": "border-s-[5px]" + } + } + ], + "defaultVariants": { + "color": "neutral" as typeof color[number], + "size": "xs" as typeof size[number], + "type": "solid" as typeof type[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/sidebar.ts b/packages/devtools-app/.nuxt/ui/sidebar.ts new file mode 100644 index 000000000..f6a331893 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/sidebar.ts @@ -0,0 +1,164 @@ +const side = [ + "left", + "right" +] as const + +const collapsible = [ + "offcanvas", + "icon", + "none" +] as const + +const variant = [ + "sidebar", + "floating", + "inset" +] as const + +export default { + "slots": { + "root": "peer [--sidebar-width:16rem] [--sidebar-width-icon:4rem]", + "gap": "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear", + "container": "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear lg:flex", + "inner": "flex size-full flex-col overflow-hidden divide-y divide-default", + "header": "flex items-center gap-1.5 overflow-hidden px-4 min-h-(--ui-header-height)", + "wrapper": "min-w-0 flex-1", + "title": "text-highlighted font-semibold truncate", + "description": "text-muted text-sm truncate", + "actions": "flex items-center gap-1.5 shrink-0", + "close": "", + "body": "flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4", + "footer": "flex items-center gap-1.5 overflow-hidden p-4", + "rail": [ + "absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-px lg:flex hover:after:bg-(--ui-border-accented)", + "after:transition-colors" + ] + }, + "variants": { + "side": { + "left": { + "container": "left-0 border-e border-default", + "rail": "end-0 translate-x-1/2" + }, + "right": { + "container": "right-0 border-s border-default", + "rail": "-start-px -translate-x-1/2" + } + }, + "collapsible": { + "offcanvas": { + "root": "group/sidebar hidden lg:block", + "gap": "data-[state=collapsed]:w-0" + }, + "icon": { + "root": "group/sidebar hidden lg:block", + "gap": "data-[state=collapsed]:w-(--sidebar-width-icon)", + "container": "data-[state=collapsed]:w-(--sidebar-width-icon)", + "actions": "group-data-[state=collapsed]/sidebar:hidden", + "body": "group-data-[state=collapsed]/sidebar:overflow-hidden" + }, + "none": { + "root": "h-full w-(--sidebar-width)" + } + }, + "variant": { + "sidebar": {}, + "floating": { + "container": "p-4 border-transparent", + "inner": "rounded-lg ring ring-default shadow-lg", + "rail": "inset-y-4" + }, + "inset": { + "container": "py-4 border-transparent", + "inner": "divide-transparent", + "rail": "inset-y-4" + } + } + }, + "compoundVariants": [ + { + "side": "left" as typeof side[number], + "collapsible": [ + "offcanvas" as typeof collapsible[number], + "icon" as typeof collapsible[number] + ], + "class": { + "rail": "cursor-w-resize data-[state=collapsed]:cursor-e-resize" + } + }, + { + "side": "right" as typeof side[number], + "collapsible": [ + "offcanvas" as typeof collapsible[number], + "icon" as typeof collapsible[number] + ], + "class": { + "rail": "cursor-e-resize data-[state=collapsed]:cursor-w-resize" + } + }, + { + "side": "left" as typeof side[number], + "collapsible": "none" as typeof collapsible[number], + "class": { + "root": "border-e border-default" + } + }, + { + "side": "right" as typeof side[number], + "collapsible": "none" as typeof collapsible[number], + "class": { + "root": "border-s border-default" + } + }, + { + "side": "left" as typeof side[number], + "collapsible": "offcanvas" as typeof collapsible[number], + "class": { + "container": "data-[state=collapsed]:-left-(--sidebar-width)" + } + }, + { + "side": "right" as typeof side[number], + "collapsible": "offcanvas" as typeof collapsible[number], + "class": { + "container": "data-[state=collapsed]:-right-(--sidebar-width)" + } + }, + { + "variant": "floating" as typeof variant[number], + "collapsible": "icon" as typeof collapsible[number], + "class": { + "gap": "data-[state=collapsed]:w-[calc(var(--sidebar-width-icon)+--spacing(8))]", + "container": "data-[state=collapsed]:w-[calc(var(--sidebar-width-icon)+--spacing(8)+2px)]" + } + }, + { + "variant": "floating" as typeof variant[number], + "collapsible": "none" as typeof collapsible[number], + "class": { + "root": "p-4 border-0" + } + }, + { + "variant": "inset" as typeof variant[number], + "collapsible": "none" as typeof collapsible[number], + "class": { + "root": "py-4 border-0" + } + }, + { + "variant": "floating" as typeof variant[number], + "side": "left" as typeof side[number], + "class": { + "rail": "end-4" + } + }, + { + "variant": "floating" as typeof variant[number], + "side": "right" as typeof side[number], + "class": { + "rail": "start-[calc(--spacing(4)-1px)]" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/skeleton.ts b/packages/devtools-app/.nuxt/ui/skeleton.ts new file mode 100644 index 000000000..f3ee3c2cf --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/skeleton.ts @@ -0,0 +1,3 @@ +export default { + "base": "animate-pulse rounded-md bg-elevated" +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/slideover.ts b/packages/devtools-app/.nuxt/ui/slideover.ts new file mode 100644 index 000000000..be7759a12 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/slideover.ts @@ -0,0 +1,132 @@ +const side = [ + "top", + "right", + "bottom", + "left" +] as const + +export default { + "slots": { + "overlay": "fixed inset-0 bg-elevated/75", + "content": "fixed bg-default divide-y divide-default sm:ring ring-default sm:shadow-lg flex flex-col focus:outline-none", + "header": "flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)", + "wrapper": "", + "body": "flex-1 overflow-y-auto p-4 sm:p-6", + "footer": "flex items-center gap-1.5 p-4 sm:px-6", + "title": "text-highlighted font-semibold", + "description": "mt-1 text-muted text-sm", + "close": "absolute top-4 end-4" + }, + "variants": { + "side": { + "top": { + "content": "" + }, + "right": { + "content": "max-w-md" + }, + "bottom": { + "content": "" + }, + "left": { + "content": "max-w-md" + } + }, + "inset": { + "true": { + "content": "rounded-lg" + } + }, + "transition": { + "true": { + "overlay": "data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]" + } + } + }, + "compoundVariants": [ + { + "side": "top" as typeof side[number], + "inset": true, + "class": { + "content": "max-h-[calc(100%-2rem)] inset-x-4 top-4" + } + }, + { + "side": "top" as typeof side[number], + "inset": false, + "class": { + "content": "max-h-full inset-x-0 top-0" + } + }, + { + "side": "right" as typeof side[number], + "inset": true, + "class": { + "content": "w-[calc(100%-2rem)] inset-y-4 right-4" + } + }, + { + "side": "right" as typeof side[number], + "inset": false, + "class": { + "content": "w-full inset-y-0 right-0" + } + }, + { + "side": "bottom" as typeof side[number], + "inset": true, + "class": { + "content": "max-h-[calc(100%-2rem)] inset-x-4 bottom-4" + } + }, + { + "side": "bottom" as typeof side[number], + "inset": false, + "class": { + "content": "max-h-full inset-x-0 bottom-0" + } + }, + { + "side": "left" as typeof side[number], + "inset": true, + "class": { + "content": "w-[calc(100%-2rem)] inset-y-4 left-4" + } + }, + { + "side": "left" as typeof side[number], + "inset": false, + "class": { + "content": "w-full inset-y-0 left-0" + } + }, + { + "transition": true, + "side": "top" as typeof side[number], + "class": { + "content": "data-[state=open]:animate-[slide-in-from-top_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-top_200ms_ease-in-out]" + } + }, + { + "transition": true, + "side": "right" as typeof side[number], + "class": { + "content": "data-[state=open]:animate-[slide-in-from-right_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-right_200ms_ease-in-out]" + } + }, + { + "transition": true, + "side": "bottom" as typeof side[number], + "class": { + "content": "data-[state=open]:animate-[slide-in-from-bottom_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-bottom_200ms_ease-in-out]" + } + }, + { + "transition": true, + "side": "left" as typeof side[number], + "class": { + "content": "data-[state=open]:animate-[slide-in-from-left_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-left_200ms_ease-in-out]" + } + } + ] +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/slider.ts b/packages/devtools-app/.nuxt/ui/slider.ts new file mode 100644 index 000000000..574973d29 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/slider.ts @@ -0,0 +1,171 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +export default { + "slots": { + "root": "relative flex items-center select-none touch-none", + "track": "relative bg-accented overflow-hidden rounded-full grow", + "range": "absolute rounded-full", + "thumb": "rounded-full bg-default ring-2 focus-visible:outline-2 focus-visible:outline-offset-2" + }, + "variants": { + "color": { + "primary": { + "range": "bg-primary", + "thumb": "ring-primary focus-visible:outline-primary/50" + }, + "secondary": { + "range": "bg-secondary", + "thumb": "ring-secondary focus-visible:outline-secondary/50" + }, + "success": { + "range": "bg-success", + "thumb": "ring-success focus-visible:outline-success/50" + }, + "info": { + "range": "bg-info", + "thumb": "ring-info focus-visible:outline-info/50" + }, + "warning": { + "range": "bg-warning", + "thumb": "ring-warning focus-visible:outline-warning/50" + }, + "error": { + "range": "bg-error", + "thumb": "ring-error focus-visible:outline-error/50" + }, + "neutral": { + "range": "bg-inverted", + "thumb": "ring-inverted focus-visible:outline-inverted/50" + } + }, + "size": { + "xs": { + "thumb": "size-3" + }, + "sm": { + "thumb": "size-3.5" + }, + "md": { + "thumb": "size-4" + }, + "lg": { + "thumb": "size-4.5" + }, + "xl": { + "thumb": "size-5" + } + }, + "orientation": { + "horizontal": { + "root": "w-full", + "range": "h-full" + }, + "vertical": { + "root": "flex-col h-full", + "range": "w-full" + } + }, + "disabled": { + "true": { + "root": "opacity-75 cursor-not-allowed" + } + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "track": "h-[6px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "track": "h-[7px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "track": "h-[8px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "track": "h-[9px]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "track": "h-[10px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "track": "w-[6px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "track": "w-[7px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "track": "w-[8px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "track": "w-[9px]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "track": "w-[10px]" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/stepper.ts b/packages/devtools-app/.nuxt/ui/stepper.ts new file mode 100644 index 000000000..401aa72eb --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/stepper.ts @@ -0,0 +1,202 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "flex gap-4", + "header": "flex", + "item": "group text-center relative w-full", + "container": "relative", + "trigger": "rounded-full font-medium text-center align-middle flex items-center justify-center font-semibold group-data-[state=completed]:text-inverted group-data-[state=active]:text-inverted text-muted bg-elevated focus-visible:outline-2 focus-visible:outline-offset-2", + "indicator": "flex items-center justify-center size-full", + "icon": "shrink-0", + "separator": "absolute rounded-full group-data-[disabled]:opacity-75 bg-accented", + "wrapper": "", + "title": "font-medium text-default", + "description": "text-muted text-wrap", + "content": "size-full" + }, + "variants": { + "orientation": { + "horizontal": { + "root": "flex-col", + "container": "flex justify-center", + "separator": "top-[calc(50%-2px)] h-0.5", + "wrapper": "mt-1" + }, + "vertical": { + "header": "flex-col gap-4", + "item": "flex text-start", + "separator": "start-[calc(50%-1px)] -bottom-[10px] w-0.5" + } + }, + "size": { + "xs": { + "trigger": "size-6 text-xs", + "icon": "size-3", + "title": "text-xs", + "description": "text-xs", + "wrapper": "mt-1.5" + }, + "sm": { + "trigger": "size-8 text-sm", + "icon": "size-4", + "title": "text-xs", + "description": "text-xs", + "wrapper": "mt-2" + }, + "md": { + "trigger": "size-10 text-base", + "icon": "size-5", + "title": "text-sm", + "description": "text-sm", + "wrapper": "mt-2.5" + }, + "lg": { + "trigger": "size-12 text-lg", + "icon": "size-6", + "title": "text-base", + "description": "text-base", + "wrapper": "mt-3" + }, + "xl": { + "trigger": "size-14 text-xl", + "icon": "size-7", + "title": "text-lg", + "description": "text-lg", + "wrapper": "mt-3.5" + } + }, + "color": { + "primary": { + "trigger": "group-data-[state=completed]:bg-primary group-data-[state=active]:bg-primary focus-visible:outline-primary", + "separator": "group-data-[state=completed]:bg-primary" + }, + "secondary": { + "trigger": "group-data-[state=completed]:bg-secondary group-data-[state=active]:bg-secondary focus-visible:outline-secondary", + "separator": "group-data-[state=completed]:bg-secondary" + }, + "success": { + "trigger": "group-data-[state=completed]:bg-success group-data-[state=active]:bg-success focus-visible:outline-success", + "separator": "group-data-[state=completed]:bg-success" + }, + "info": { + "trigger": "group-data-[state=completed]:bg-info group-data-[state=active]:bg-info focus-visible:outline-info", + "separator": "group-data-[state=completed]:bg-info" + }, + "warning": { + "trigger": "group-data-[state=completed]:bg-warning group-data-[state=active]:bg-warning focus-visible:outline-warning", + "separator": "group-data-[state=completed]:bg-warning" + }, + "error": { + "trigger": "group-data-[state=completed]:bg-error group-data-[state=active]:bg-error focus-visible:outline-error", + "separator": "group-data-[state=completed]:bg-error" + }, + "neutral": { + "trigger": "group-data-[state=completed]:bg-inverted group-data-[state=active]:bg-inverted focus-visible:outline-inverted", + "separator": "group-data-[state=completed]:bg-inverted" + } + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "separator": "start-[calc(50%+16px)] end-[calc(-50%+16px)]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "separator": "start-[calc(50%+20px)] end-[calc(-50%+20px)]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "separator": "start-[calc(50%+28px)] end-[calc(-50%+28px)]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "separator": "start-[calc(50%+32px)] end-[calc(-50%+32px)]" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "separator": "start-[calc(50%+36px)] end-[calc(-50%+36px)]" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "separator": "top-[30px]", + "item": "gap-1.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "separator": "top-[38px]", + "item": "gap-2" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "separator": "top-[46px]", + "item": "gap-2.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "separator": "top-[54px]", + "item": "gap-3" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "separator": "top-[62px]", + "item": "gap-3.5" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/switch.ts b/packages/devtools-app/.nuxt/ui/switch.ts new file mode 100644 index 000000000..b9af89c43 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/switch.ts @@ -0,0 +1,132 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "relative flex items-start", + "base": [ + "inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-2 focus-visible:outline-offset-2 data-[state=unchecked]:bg-accented", + "transition-[background] duration-200" + ], + "container": "flex items-center", + "thumb": "group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center", + "icon": [ + "absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12", + "transition-[color,opacity] duration-200" + ], + "wrapper": "ms-2", + "label": "block font-medium text-default", + "description": "text-muted" + }, + "variants": { + "color": { + "primary": { + "base": "data-[state=checked]:bg-primary focus-visible:outline-primary", + "icon": "group-data-[state=checked]:text-primary" + }, + "secondary": { + "base": "data-[state=checked]:bg-secondary focus-visible:outline-secondary", + "icon": "group-data-[state=checked]:text-secondary" + }, + "success": { + "base": "data-[state=checked]:bg-success focus-visible:outline-success", + "icon": "group-data-[state=checked]:text-success" + }, + "info": { + "base": "data-[state=checked]:bg-info focus-visible:outline-info", + "icon": "group-data-[state=checked]:text-info" + }, + "warning": { + "base": "data-[state=checked]:bg-warning focus-visible:outline-warning", + "icon": "group-data-[state=checked]:text-warning" + }, + "error": { + "base": "data-[state=checked]:bg-error focus-visible:outline-error", + "icon": "group-data-[state=checked]:text-error" + }, + "neutral": { + "base": "data-[state=checked]:bg-inverted focus-visible:outline-inverted", + "icon": "group-data-[state=checked]:text-highlighted" + } + }, + "size": { + "xs": { + "base": "w-7", + "container": "h-4", + "thumb": "size-3 data-[state=checked]:translate-x-3 data-[state=checked]:rtl:-translate-x-3", + "wrapper": "text-xs" + }, + "sm": { + "base": "w-8", + "container": "h-4", + "thumb": "size-3.5 data-[state=checked]:translate-x-3.5 data-[state=checked]:rtl:-translate-x-3.5", + "wrapper": "text-xs" + }, + "md": { + "base": "w-9", + "container": "h-5", + "thumb": "size-4 data-[state=checked]:translate-x-4 data-[state=checked]:rtl:-translate-x-4", + "wrapper": "text-sm" + }, + "lg": { + "base": "w-10", + "container": "h-5", + "thumb": "size-4.5 data-[state=checked]:translate-x-4.5 data-[state=checked]:rtl:-translate-x-4.5", + "wrapper": "text-sm" + }, + "xl": { + "base": "w-11", + "container": "h-6", + "thumb": "size-5 data-[state=checked]:translate-x-5 data-[state=checked]:rtl:-translate-x-5", + "wrapper": "text-base" + } + }, + "checked": { + "true": { + "icon": "group-data-[state=checked]:opacity-100" + } + }, + "unchecked": { + "true": { + "icon": "group-data-[state=unchecked]:opacity-100" + } + }, + "loading": { + "true": { + "icon": "animate-spin" + } + }, + "required": { + "true": { + "label": "after:content-['*'] after:ms-0.5 after:text-error" + } + }, + "disabled": { + "true": { + "root": "opacity-75", + "base": "cursor-not-allowed", + "label": "cursor-not-allowed", + "description": "cursor-not-allowed" + } + } + }, + "defaultVariants": { + "color": "primary" as typeof color[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/table.ts b/packages/devtools-app/.nuxt/ui/table.ts new file mode 100644 index 000000000..7b974093a --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/table.ts @@ -0,0 +1,162 @@ +const loadingAnimation = [ + "carousel", + "carousel-inverse", + "swing", + "elastic" +] as const + +const loadingColor = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative overflow-auto", + "base": "min-w-full", + "caption": "sr-only", + "thead": "relative", + "tbody": "isolate [&>tr]:data-[selectable=true]:hover:bg-elevated/50 [&>tr]:data-[selectable=true]:focus-visible:outline-primary", + "tfoot": "relative", + "tr": "data-[selected=true]:bg-elevated/50", + "th": "px-4 py-3.5 text-sm text-highlighted text-left rtl:text-right font-semibold [&:has([role=checkbox])]:pe-0", + "td": "p-4 text-sm text-muted whitespace-nowrap [&:has([role=checkbox])]:pe-0", + "separator": "absolute z-1 left-0 w-full h-px bg-(--ui-border-accented)", + "empty": "py-6 text-center text-sm text-muted", + "loading": "py-6 text-center" + }, + "variants": { + "virtualize": { + "false": { + "base": "overflow-clip", + "tbody": "divide-y divide-default" + } + }, + "pinned": { + "true": { + "th": "sticky bg-default/75 z-1", + "td": "sticky bg-default/75 z-1" + } + }, + "sticky": { + "true": { + "thead": "sticky top-0 inset-x-0 bg-default/75 backdrop-blur z-1", + "tfoot": "sticky bottom-0 inset-x-0 bg-default/75 backdrop-blur z-1" + }, + "header": { + "thead": "sticky top-0 inset-x-0 bg-default/75 backdrop-blur z-1" + }, + "footer": { + "tfoot": "sticky bottom-0 inset-x-0 bg-default/75 backdrop-blur z-1" + } + }, + "loading": { + "true": { + "thead": "after:absolute after:z-1 after:h-px" + } + }, + "loadingAnimation": { + "carousel": "", + "carousel-inverse": "", + "swing": "", + "elastic": "" + }, + "loadingColor": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + } + }, + "compoundVariants": [ + { + "loading": true, + "loadingColor": "primary" as typeof loadingColor[number], + "class": { + "thead": "after:bg-primary" + } + }, + { + "loading": true, + "loadingColor": "secondary" as typeof loadingColor[number], + "class": { + "thead": "after:bg-secondary" + } + }, + { + "loading": true, + "loadingColor": "success" as typeof loadingColor[number], + "class": { + "thead": "after:bg-success" + } + }, + { + "loading": true, + "loadingColor": "info" as typeof loadingColor[number], + "class": { + "thead": "after:bg-info" + } + }, + { + "loading": true, + "loadingColor": "warning" as typeof loadingColor[number], + "class": { + "thead": "after:bg-warning" + } + }, + { + "loading": true, + "loadingColor": "error" as typeof loadingColor[number], + "class": { + "thead": "after:bg-error" + } + }, + { + "loading": true, + "loadingColor": "neutral" as typeof loadingColor[number], + "class": { + "thead": "after:bg-inverted" + } + }, + { + "loading": true, + "loadingAnimation": "carousel" as typeof loadingAnimation[number], + "class": { + "thead": "after:animate-[carousel_2s_ease-in-out_infinite] rtl:after:animate-[carousel-rtl_2s_ease-in-out_infinite]" + } + }, + { + "loading": true, + "loadingAnimation": "carousel-inverse" as typeof loadingAnimation[number], + "class": { + "thead": "after:animate-[carousel-inverse_2s_ease-in-out_infinite] rtl:after:animate-[carousel-inverse-rtl_2s_ease-in-out_infinite]" + } + }, + { + "loading": true, + "loadingAnimation": "swing" as typeof loadingAnimation[number], + "class": { + "thead": "after:animate-[swing_2s_ease-in-out_infinite]" + } + }, + { + "loading": true, + "loadingAnimation": "elastic" as typeof loadingAnimation[number], + "class": { + "thead": "after:animate-[elastic_2s_ease-in-out_infinite]" + } + } + ], + "defaultVariants": { + "loadingColor": "primary" as typeof loadingColor[number], + "loadingAnimation": "carousel" as typeof loadingAnimation[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/tabs.ts b/packages/devtools-app/.nuxt/ui/tabs.ts new file mode 100644 index 000000000..751ea6bc3 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/tabs.ts @@ -0,0 +1,258 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const variant = [ + "pill", + "link" +] as const + +const orientation = [ + "horizontal", + "vertical" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "flex items-center gap-2", + "list": "relative flex p-1 group", + "indicator": "absolute transition-[translate,width] duration-200", + "trigger": [ + "group relative inline-flex items-center min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ], + "leadingIcon": "shrink-0", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "label": "truncate", + "trailingBadge": "shrink-0", + "trailingBadgeSize": "sm", + "content": "focus:outline-none w-full" + }, + "variants": { + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "variant": { + "pill": { + "list": "bg-elevated rounded-lg", + "trigger": "grow", + "indicator": "rounded-md shadow-xs" + }, + "link": { + "list": "border-default", + "indicator": "rounded-full", + "trigger": "focus:outline-none" + } + }, + "orientation": { + "horizontal": { + "root": "flex-col", + "list": "w-full", + "indicator": "left-0 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position)", + "trigger": "justify-center" + }, + "vertical": { + "list": "flex-col", + "indicator": "top-0 h-(--reka-tabs-indicator-size) translate-y-(--reka-tabs-indicator-position)" + } + }, + "size": { + "xs": { + "trigger": "px-2 py-1 text-xs gap-1", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs" + }, + "sm": { + "trigger": "px-2.5 py-1.5 text-xs gap-1.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs" + }, + "md": { + "trigger": "px-3 py-1.5 text-sm gap-1.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs" + }, + "lg": { + "trigger": "px-3 py-2 text-sm gap-2", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs" + }, + "xl": { + "trigger": "px-3 py-2 text-base gap-2", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs" + } + } + }, + "compoundVariants": [ + { + "orientation": "horizontal" as typeof orientation[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "inset-y-1" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "variant": "link" as typeof variant[number], + "class": { + "list": "border-b -mb-px", + "indicator": "-bottom-px h-px" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "inset-x-1", + "list": "items-center" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "variant": "link" as typeof variant[number], + "class": { + "list": "border-s -ms-px", + "indicator": "-start-px w-px" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-primary", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-secondary", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-success", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-info", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-warning", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-error", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-error" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "pill" as typeof variant[number], + "class": { + "indicator": "bg-inverted", + "trigger": "data-[state=active]:text-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-inverted" + } + }, + { + "color": "primary" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-primary", + "trigger": "data-[state=active]:text-primary focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-secondary", + "trigger": "data-[state=active]:text-secondary focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + } + }, + { + "color": "success" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-success", + "trigger": "data-[state=active]:text-success focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + } + }, + { + "color": "info" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-info", + "trigger": "data-[state=active]:text-info focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + } + }, + { + "color": "warning" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-warning", + "trigger": "data-[state=active]:text-warning focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + } + }, + { + "color": "error" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-error", + "trigger": "data-[state=active]:text-error focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + } + }, + { + "color": "neutral" as typeof color[number], + "variant": "link" as typeof variant[number], + "class": { + "indicator": "bg-inverted", + "trigger": "data-[state=active]:text-highlighted focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + } + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "variant": "pill" as typeof variant[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/textarea.ts b/packages/devtools-app/.nuxt/ui/textarea.ts new file mode 100644 index 000000000..111d2908b --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/textarea.ts @@ -0,0 +1,317 @@ +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +const variant = [ + "outline", + "soft", + "subtle", + "ghost", + "none" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative inline-flex items-center", + "base": [ + "w-full rounded-md border-0 appearance-none placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75", + "transition-colors" + ], + "leading": "absolute start-0 flex items-start", + "leadingIcon": "shrink-0 text-dimmed", + "leadingAvatar": "shrink-0", + "leadingAvatarSize": "", + "trailing": "absolute end-0 flex items-start", + "trailingIcon": "shrink-0 text-dimmed" + }, + "variants": { + "fieldGroup": { + "horizontal": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none" + }, + "vertical": { + "root": "group has-focus-visible:z-[1]", + "base": "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none" + } + }, + "size": { + "xs": { + "base": "px-2 py-1 text-sm/4 gap-1", + "leading": "ps-2 inset-y-1", + "trailing": "pe-2 inset-y-1", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "sm": { + "base": "px-2.5 py-1.5 text-sm/4 gap-1.5", + "leading": "ps-2.5 inset-y-1.5", + "trailing": "pe-2.5 inset-y-1.5", + "leadingIcon": "size-4", + "leadingAvatarSize": "3xs", + "trailingIcon": "size-4" + }, + "md": { + "base": "px-2.5 py-1.5 text-base/5 gap-1.5", + "leading": "ps-2.5 inset-y-1.5", + "trailing": "pe-2.5 inset-y-1.5", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "lg": { + "base": "px-3 py-2 text-base/5 gap-2", + "leading": "ps-3 inset-y-2", + "trailing": "pe-3 inset-y-2", + "leadingIcon": "size-5", + "leadingAvatarSize": "2xs", + "trailingIcon": "size-5" + }, + "xl": { + "base": "px-3 py-2 text-base gap-2", + "leading": "ps-3 inset-y-2", + "trailing": "pe-3 inset-y-2", + "leadingIcon": "size-6", + "leadingAvatarSize": "xs", + "trailingIcon": "size-6" + } + }, + "variant": { + "outline": "text-highlighted bg-default ring ring-inset ring-accented", + "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50", + "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented", + "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent", + "none": "text-highlighted bg-transparent" + }, + "color": { + "primary": "", + "secondary": "", + "success": "", + "info": "", + "warning": "", + "error": "", + "neutral": "" + }, + "leading": { + "true": "" + }, + "trailing": { + "true": "" + }, + "loading": { + "true": "" + }, + "highlight": { + "true": "" + }, + "fixed": { + "false": "" + }, + "type": { + "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none" + }, + "autoresize": { + "true": { + "base": "resize-none" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary" + }, + { + "color": "success" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success" + }, + { + "color": "info" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info" + }, + { + "color": "warning" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning" + }, + { + "color": "error" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error" + }, + { + "color": "primary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-primary" + }, + { + "color": "secondary" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-secondary" + }, + { + "color": "success" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-success" + }, + { + "color": "info" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-info" + }, + { + "color": "warning" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-warning" + }, + { + "color": "error" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-error" + }, + { + "color": "neutral" as typeof color[number], + "variant": [ + "outline" as typeof variant[number], + "subtle" as typeof variant[number] + ], + "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted" + }, + { + "color": "neutral" as typeof color[number], + "highlight": true, + "class": "ring ring-inset ring-inverted" + }, + { + "leading": true, + "size": "xs" as typeof size[number], + "class": "ps-7" + }, + { + "leading": true, + "size": "sm" as typeof size[number], + "class": "ps-8" + }, + { + "leading": true, + "size": "md" as typeof size[number], + "class": "ps-9" + }, + { + "leading": true, + "size": "lg" as typeof size[number], + "class": "ps-10" + }, + { + "leading": true, + "size": "xl" as typeof size[number], + "class": "ps-11" + }, + { + "trailing": true, + "size": "xs" as typeof size[number], + "class": "pe-7" + }, + { + "trailing": true, + "size": "sm" as typeof size[number], + "class": "pe-8" + }, + { + "trailing": true, + "size": "md" as typeof size[number], + "class": "pe-9" + }, + { + "trailing": true, + "size": "lg" as typeof size[number], + "class": "pe-10" + }, + { + "trailing": true, + "size": "xl" as typeof size[number], + "class": "pe-11" + }, + { + "loading": true, + "leading": true, + "class": { + "leadingIcon": "animate-spin" + } + }, + { + "loading": true, + "leading": false, + "trailing": true, + "class": { + "trailingIcon": "animate-spin" + } + }, + { + "fixed": false, + "size": "xs" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "sm" as typeof size[number], + "class": "md:text-xs" + }, + { + "fixed": false, + "size": "md" as typeof size[number], + "class": "md:text-sm" + }, + { + "fixed": false, + "size": "lg" as typeof size[number], + "class": "md:text-sm" + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number], + "variant": "outline" as typeof variant[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/timeline.ts b/packages/devtools-app/.nuxt/ui/timeline.ts new file mode 100644 index 000000000..28bb42e0c --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/timeline.ts @@ -0,0 +1,321 @@ +const orientation = [ + "horizontal", + "vertical" +] as const + +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "3xs", + "2xs", + "xs", + "sm", + "md", + "lg", + "xl", + "2xl", + "3xl" +] as const + +export default { + "slots": { + "root": "flex gap-1.5", + "item": "group relative flex flex-1 gap-3", + "container": "relative flex items-center gap-1.5", + "indicator": "group-data-[state=completed]:text-inverted group-data-[state=active]:text-inverted text-muted", + "separator": "flex-1 rounded-full bg-elevated", + "wrapper": "w-full", + "date": "text-dimmed text-xs/5", + "title": "font-medium text-highlighted text-sm", + "description": "text-muted text-wrap text-sm" + }, + "variants": { + "orientation": { + "horizontal": { + "root": "flex-row w-full", + "item": "flex-col", + "separator": "h-0.5" + }, + "vertical": { + "root": "flex-col", + "container": "flex-col", + "separator": "w-0.5" + } + }, + "color": { + "primary": { + "indicator": "group-data-[state=completed]:bg-primary group-data-[state=active]:bg-primary" + }, + "secondary": { + "indicator": "group-data-[state=completed]:bg-secondary group-data-[state=active]:bg-secondary" + }, + "success": { + "indicator": "group-data-[state=completed]:bg-success group-data-[state=active]:bg-success" + }, + "info": { + "indicator": "group-data-[state=completed]:bg-info group-data-[state=active]:bg-info" + }, + "warning": { + "indicator": "group-data-[state=completed]:bg-warning group-data-[state=active]:bg-warning" + }, + "error": { + "indicator": "group-data-[state=completed]:bg-error group-data-[state=active]:bg-error" + }, + "neutral": { + "indicator": "group-data-[state=completed]:bg-inverted group-data-[state=active]:bg-inverted" + } + }, + "size": { + "3xs": "", + "2xs": "", + "xs": "", + "sm": "", + "md": "", + "lg": "", + "xl": "", + "2xl": "", + "3xl": "" + }, + "reverse": { + "true": "" + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-secondary" + } + }, + { + "color": "success" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-success" + } + }, + { + "color": "info" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-info" + } + }, + { + "color": "warning" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-warning" + } + }, + { + "color": "error" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-error" + } + }, + { + "color": "primary" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-primary group-data-[state=completed]:bg-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-secondary group-data-[state=completed]:bg-secondary" + } + }, + { + "color": "success" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-success group-data-[state=completed]:bg-success" + } + }, + { + "color": "info" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-info group-data-[state=completed]:bg-info" + } + }, + { + "color": "warning" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-warning group-data-[state=completed]:bg-warning" + } + }, + { + "color": "error" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-error group-data-[state=completed]:bg-error" + } + }, + { + "color": "neutral" as typeof color[number], + "reverse": false, + "class": { + "separator": "group-data-[state=completed]:bg-inverted" + } + }, + { + "color": "neutral" as typeof color[number], + "reverse": true, + "class": { + "separator": "group-data-[state=active]:bg-inverted group-data-[state=completed]:bg-inverted" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "3xs" as typeof size[number], + "class": { + "wrapper": "pe-4.5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "2xs" as typeof size[number], + "class": { + "wrapper": "pe-5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "wrapper": "pe-5.5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "wrapper": "pe-6" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "wrapper": "pe-6.5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "wrapper": "pe-7" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "wrapper": "pe-7.5" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "2xl" as typeof size[number], + "class": { + "wrapper": "pe-8" + } + }, + { + "orientation": "horizontal" as typeof orientation[number], + "size": "3xl" as typeof size[number], + "class": { + "wrapper": "pe-8.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "3xs" as typeof size[number], + "class": { + "wrapper": "-mt-0.5 pb-4.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "2xs" as typeof size[number], + "class": { + "wrapper": "pb-5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xs" as typeof size[number], + "class": { + "wrapper": "mt-0.5 pb-5.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "sm" as typeof size[number], + "class": { + "wrapper": "mt-1 pb-6" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "md" as typeof size[number], + "class": { + "wrapper": "mt-1.5 pb-6.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "lg" as typeof size[number], + "class": { + "wrapper": "mt-2 pb-7" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "xl" as typeof size[number], + "class": { + "wrapper": "mt-2.5 pb-7.5" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "2xl" as typeof size[number], + "class": { + "wrapper": "mt-3 pb-8" + } + }, + { + "orientation": "vertical" as typeof orientation[number], + "size": "3xl" as typeof size[number], + "class": { + "wrapper": "mt-3.5 pb-8.5" + } + } + ], + "defaultVariants": { + "size": "md" as typeof size[number], + "color": "primary" as typeof color[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/toast.ts b/packages/devtools-app/.nuxt/ui/toast.ts new file mode 100644 index 000000000..cce506bca --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/toast.ts @@ -0,0 +1,74 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +export default { + "slots": { + "root": "relative group overflow-hidden bg-default shadow-lg rounded-lg ring ring-default p-4 flex gap-2.5 focus:outline-none", + "wrapper": "w-0 flex-1 flex flex-col", + "title": "text-sm font-medium text-highlighted", + "description": "text-sm text-muted", + "icon": "shrink-0 size-5", + "avatar": "shrink-0", + "avatarSize": "2xl", + "actions": "flex gap-1.5 shrink-0", + "progress": "absolute inset-x-0 bottom-0", + "close": "p-0" + }, + "variants": { + "color": { + "primary": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary", + "icon": "text-primary" + }, + "secondary": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary", + "icon": "text-secondary" + }, + "success": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success", + "icon": "text-success" + }, + "info": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info", + "icon": "text-info" + }, + "warning": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning", + "icon": "text-warning" + }, + "error": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error", + "icon": "text-error" + }, + "neutral": { + "root": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted", + "icon": "text-highlighted" + } + }, + "orientation": { + "horizontal": { + "root": "items-center", + "actions": "items-center" + }, + "vertical": { + "root": "items-start", + "actions": "items-start mt-2.5" + } + }, + "title": { + "true": { + "description": "mt-1" + } + } + }, + "defaultVariants": { + "color": "primary" as typeof color[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/toaster.ts b/packages/devtools-app/.nuxt/ui/toaster.ts new file mode 100644 index 000000000..41a68b234 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/toaster.ts @@ -0,0 +1,91 @@ +const position = [ + "top-left", + "top-center", + "top-right", + "bottom-left", + "bottom-center", + "bottom-right" +] as const + +const swipeDirection = [ + "up", + "right", + "down", + "left" +] as const + +export default { + "slots": { + "viewport": "fixed flex flex-col w-[calc(100%-2rem)] sm:w-96 z-[100] data-[expanded=true]:h-(--height) focus:outline-none", + "base": "pointer-events-auto absolute inset-x-0 z-(--index) transform-(--transform) data-[expanded=false]:data-[front=false]:h-(--front-height) data-[expanded=false]:data-[front=false]:*:opacity-0 data-[front=false]:*:transition-opacity data-[front=false]:*:duration-100 data-[state=closed]:animate-[toast-closed_200ms_ease-in-out] data-[state=closed]:data-[expanded=false]:data-[front=false]:animate-[toast-collapsed-closed_200ms_ease-in-out] data-[state=open]:data-[pulsing=odd]:animate-[toast-pulse-a_300ms_ease-out] data-[state=open]:data-[pulsing=even]:animate-[toast-pulse-b_300ms_ease-out] data-[swipe=move]:transition-none transition-[transform,translate,height] duration-200 ease-out" + }, + "variants": { + "position": { + "top-left": { + "viewport": "left-4" + }, + "top-center": { + "viewport": "left-1/2 transform -translate-x-1/2" + }, + "top-right": { + "viewport": "right-4" + }, + "bottom-left": { + "viewport": "left-4" + }, + "bottom-center": { + "viewport": "left-1/2 transform -translate-x-1/2" + }, + "bottom-right": { + "viewport": "right-4" + } + }, + "swipeDirection": { + "up": "data-[swipe=end]:animate-[toast-slide-up_200ms_ease-out]", + "right": "data-[swipe=end]:animate-[toast-slide-right_200ms_ease-out]", + "down": "data-[swipe=end]:animate-[toast-slide-down_200ms_ease-out]", + "left": "data-[swipe=end]:animate-[toast-slide-left_200ms_ease-out]" + } + }, + "compoundVariants": [ + { + "position": [ + "top-left" as typeof position[number], + "top-center" as typeof position[number], + "top-right" as typeof position[number] + ], + "class": { + "viewport": "top-4", + "base": "top-0 data-[state=open]:animate-[toast-slide-in-from-top_200ms_ease-in-out]" + } + }, + { + "position": [ + "bottom-left" as typeof position[number], + "bottom-center" as typeof position[number], + "bottom-right" as typeof position[number] + ], + "class": { + "viewport": "bottom-4", + "base": "bottom-0 data-[state=open]:animate-[toast-slide-in-from-bottom_200ms_ease-in-out]" + } + }, + { + "swipeDirection": [ + "left" as typeof swipeDirection[number], + "right" as typeof swipeDirection[number] + ], + "class": "data-[swipe=move]:translate-x-(--reka-toast-swipe-move-x) data-[swipe=end]:translate-x-(--reka-toast-swipe-end-x) data-[swipe=cancel]:translate-x-0" + }, + { + "swipeDirection": [ + "up" as typeof swipeDirection[number], + "down" as typeof swipeDirection[number] + ], + "class": "data-[swipe=move]:translate-y-(--reka-toast-swipe-move-y) data-[swipe=end]:translate-y-(--reka-toast-swipe-end-y) data-[swipe=cancel]:translate-y-0" + } + ], + "defaultVariants": { + "position": "bottom-right" as typeof position[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/tooltip.ts b/packages/devtools-app/.nuxt/ui/tooltip.ts new file mode 100644 index 000000000..9089b6fd9 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/tooltip.ts @@ -0,0 +1,9 @@ +export default { + "slots": { + "content": "flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto", + "arrow": "fill-bg stroke-default", + "text": "truncate", + "kbds": "hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5", + "kbdsSize": "sm" + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/tree.ts b/packages/devtools-app/.nuxt/ui/tree.ts new file mode 100644 index 000000000..729684954 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/tree.ts @@ -0,0 +1,168 @@ +const color = [ + "primary", + "secondary", + "success", + "info", + "warning", + "error", + "neutral" +] as const + +const size = [ + "xs", + "sm", + "md", + "lg", + "xl" +] as const + +export default { + "slots": { + "root": "relative isolate", + "item": "w-full", + "listWithChildren": "border-s border-default", + "itemWithChildren": "ps-1.5 -ms-px", + "link": "relative group w-full flex items-center text-sm select-none before:absolute before:inset-y-px before:inset-x-0 before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2", + "linkLeadingIcon": "shrink-0 relative", + "linkLabel": "truncate", + "linkTrailing": "ms-auto inline-flex gap-1.5 items-center", + "linkTrailingIcon": "shrink-0 transform transition-transform duration-200 group-data-expanded:rotate-180" + }, + "variants": { + "virtualize": { + "true": { + "root": "overflow-y-auto" + } + }, + "color": { + "primary": { + "link": "focus-visible:before:ring-primary" + }, + "secondary": { + "link": "focus-visible:before:ring-secondary" + }, + "success": { + "link": "focus-visible:before:ring-success" + }, + "info": { + "link": "focus-visible:before:ring-info" + }, + "warning": { + "link": "focus-visible:before:ring-warning" + }, + "error": { + "link": "focus-visible:before:ring-error" + }, + "neutral": { + "link": "focus-visible:before:ring-inverted" + } + }, + "size": { + "xs": { + "listWithChildren": "ms-4", + "link": "px-2 py-1 text-xs gap-1", + "linkLeadingIcon": "size-4", + "linkTrailingIcon": "size-4" + }, + "sm": { + "listWithChildren": "ms-4.5", + "link": "px-2.5 py-1.5 text-xs gap-1.5", + "linkLeadingIcon": "size-4", + "linkTrailingIcon": "size-4" + }, + "md": { + "listWithChildren": "ms-5", + "link": "px-2.5 py-1.5 text-sm gap-1.5", + "linkLeadingIcon": "size-5", + "linkTrailingIcon": "size-5" + }, + "lg": { + "listWithChildren": "ms-5.5", + "link": "px-3 py-2 text-sm gap-2", + "linkLeadingIcon": "size-5", + "linkTrailingIcon": "size-5" + }, + "xl": { + "listWithChildren": "ms-6", + "link": "px-3 py-2 text-base gap-2", + "linkLeadingIcon": "size-6", + "linkTrailingIcon": "size-6" + } + }, + "selected": { + "true": { + "link": "before:bg-elevated" + } + }, + "disabled": { + "true": { + "link": "cursor-not-allowed opacity-75" + } + } + }, + "compoundVariants": [ + { + "color": "primary" as typeof color[number], + "selected": true, + "class": { + "link": "text-primary" + } + }, + { + "color": "secondary" as typeof color[number], + "selected": true, + "class": { + "link": "text-secondary" + } + }, + { + "color": "success" as typeof color[number], + "selected": true, + "class": { + "link": "text-success" + } + }, + { + "color": "info" as typeof color[number], + "selected": true, + "class": { + "link": "text-info" + } + }, + { + "color": "warning" as typeof color[number], + "selected": true, + "class": { + "link": "text-warning" + } + }, + { + "color": "error" as typeof color[number], + "selected": true, + "class": { + "link": "text-error" + } + }, + { + "color": "neutral" as typeof color[number], + "selected": true, + "class": { + "link": "text-highlighted" + } + }, + { + "selected": false, + "disabled": false, + "class": { + "link": [ + "hover:text-highlighted hover:before:bg-elevated/50", + "transition-colors before:transition-colors" + ] + } + } + ], + "defaultVariants": { + "color": "primary" as typeof color[number], + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/.nuxt/ui/user.ts b/packages/devtools-app/.nuxt/ui/user.ts new file mode 100644 index 000000000..73ef2e387 --- /dev/null +++ b/packages/devtools-app/.nuxt/ui/user.ts @@ -0,0 +1,101 @@ +const size = [ + "3xs", + "2xs", + "xs", + "sm", + "md", + "lg", + "xl", + "2xl", + "3xl" +] as const + +export default { + "slots": { + "root": "relative group/user", + "wrapper": "", + "name": "font-medium", + "description": "text-muted", + "avatar": "shrink-0" + }, + "variants": { + "orientation": { + "horizontal": { + "root": "flex items-center" + }, + "vertical": { + "root": "flex flex-col" + } + }, + "to": { + "true": { + "name": [ + "text-default peer-hover:text-highlighted peer-focus-visible:text-highlighted", + "transition-colors" + ], + "description": [ + "peer-hover:text-toned peer-focus-visible:text-toned", + "transition-colors" + ], + "avatar": "transform transition-transform duration-200 group-hover/user:scale-115 group-has-focus-visible/user:scale-115" + }, + "false": { + "name": "text-highlighted", + "description": "" + } + }, + "size": { + "3xs": { + "root": "gap-1", + "wrapper": "flex items-center gap-1", + "name": "text-xs", + "description": "text-xs" + }, + "2xs": { + "root": "gap-1.5", + "wrapper": "flex items-center gap-1.5", + "name": "text-xs", + "description": "text-xs" + }, + "xs": { + "root": "gap-1.5", + "wrapper": "flex items-center gap-1.5", + "name": "text-xs", + "description": "text-xs" + }, + "sm": { + "root": "gap-2", + "name": "text-xs", + "description": "text-xs" + }, + "md": { + "root": "gap-2", + "name": "text-sm", + "description": "text-xs" + }, + "lg": { + "root": "gap-2.5", + "name": "text-sm", + "description": "text-sm" + }, + "xl": { + "root": "gap-2.5", + "name": "text-base", + "description": "text-sm" + }, + "2xl": { + "root": "gap-3", + "name": "text-base", + "description": "text-base" + }, + "3xl": { + "root": "gap-3", + "name": "text-lg", + "description": "text-base" + } + } + }, + "defaultVariants": { + "size": "md" as typeof size[number] + } +} \ No newline at end of file diff --git a/packages/devtools-app/app/app.config.ts b/packages/devtools-app/app/app.config.ts new file mode 100644 index 000000000..a4e6a6b22 --- /dev/null +++ b/packages/devtools-app/app/app.config.ts @@ -0,0 +1,55 @@ +export default defineAppConfig({ + ui: { + colors: { + primary: 'amber', + neutral: 'stone', + }, + badge: { + defaultVariants: { + variant: 'subtle' as const, + }, + }, + card: { + slots: { + root: 'rounded-xl', + }, + }, + tabs: { + trigger: 'leading-8', + label: 'font-medium', + list: 'h-[48px] gap-5', + variants: { + size: { md: { trigger: 'px-0 pt-0' } }, + }, + }, + icons: { + caution: 'i-carbon-warning-alt', + copy: 'i-carbon-copy', + dark: 'i-carbon-moon', + document: 'i-carbon-document', + external: 'i-carbon-launch', + hash: 'i-carbon-hashtag', + light: 'i-carbon-sun', + menu: 'i-carbon-menu', + next: 'i-carbon-arrow-right', + note: 'i-carbon-information', + prev: 'i-carbon-arrow-left', + system: 'i-carbon-screen', + tip: 'i-carbon-idea', + warning: 'i-carbon-warning', + chevronDoubleLeft: 'i-carbon-chevron-double-left', + chevronDoubleRight: 'i-carbon-chevron-double-right', + chevronDown: 'i-carbon-chevron-down', + chevronLeft: 'i-carbon-chevron-left', + chevronRight: 'i-carbon-chevron-right', + arrowLeft: 'i-carbon-arrow-left', + arrowRight: 'i-carbon-arrow-right', + check: 'i-carbon-checkmark', + close: 'i-carbon-close', + ellipsis: 'i-carbon-overflow-menu-horizontal', + loading: 'i-carbon-loading', + minus: 'i-carbon-subtract', + search: 'i-carbon-search', + }, + }, +}) diff --git a/packages/devtools-app/app/app.vue b/packages/devtools-app/app/app.vue new file mode 100644 index 000000000..e9369568d --- /dev/null +++ b/packages/devtools-app/app/app.vue @@ -0,0 +1,72 @@ +<script setup lang="ts"> +import type { DevtoolsNavItem } from '~/components/DevtoolsLayout.vue' +import { brokenLinks, validateLinks } from '~/composables/link-checker' +import { useDevtoolsConnection } from '~/composables/rpc' +import { loadShiki } from '~/composables/shiki' +import { state } from '~/composables/state' +import { checkForUpdate, hasUpdate, latestVersion } from '~/composables/update-check' + +useDevtoolsConnection() +loadShiki() + +// Validate external links whenever tags change +watch(() => state.value.tags, tags => validateLinks(tags), { immediate: true }) + +// Check for version updates once we have the version +watch(() => state.value.version, v => checkForUpdate(v), { immediate: true }) + +const tagsErrors = computed(() => brokenLinks.value.size) +const tagsWarnings = computed(() => (state.value.validationRules || []).filter(r => r.severity === 'warn').length) + +const socialErrors = computed(() => { + let count = 0 + for (const tag of state.value.tags) { + if (tag.tag !== 'meta') + continue + const key = tag.props?.property || tag.props?.name || '' + if (!key.startsWith('og:') && !key.startsWith('twitter:')) + continue + const content = tag.props?.content + if (content && brokenLinks.value.has(content)) + count++ + } + return count +}) + +const navItems = computed<DevtoolsNavItem[]>(() => [ + { value: 'tags', to: '/', icon: 'i-carbon-tag-group', label: 'Tags', errors: tagsErrors.value, warnings: tagsWarnings.value }, + { value: 'social', to: '/social', icon: 'i-carbon-share', label: 'Social', errors: socialErrors.value }, + { value: 'serp', to: '/serp', icon: 'i-carbon-search', label: 'SERP' }, + { value: 'identity', to: '/identity', icon: 'i-carbon-user-profile', label: 'Identity' }, + { value: 'schema', to: '/schema', icon: 'i-carbon-chart-relationship', label: 'Schema.org' }, + { value: 'scripts', to: '/scripts', icon: 'i-carbon-script', label: 'Scripts' }, + { value: 'docs', to: '/docs', icon: 'i-carbon-document', label: 'Docs' }, +]) +</script> + +<template> + <UApp> + <DevtoolsLayout :nav-items="navItems"> + <template #brand> + <div class="flex items-center gap-1.5 text-sm font-semibold text-highlighted"> + <Logo /> + <UTooltip v-if="state.version" :text="hasUpdate ? `Update available: v${latestVersion}` : `v${state.version}`"> + <a + :href="hasUpdate ? 'https://npmx.dev/unhead' : undefined" + :target="hasUpdate ? '_blank' : undefined" + rel="noopener" + class="relative inline-flex items-center" + > + <UBadge class="font-mono text-[10px]"> + v{{ state.version }} + </UBadge> + <span v-if="hasUpdate" class="absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full bg-green-500 border border-[var(--ui-bg)]" /> + </a> + </UTooltip> + </div> + </template> + <template #stats /> + <NuxtPage /> + </DevtoolsLayout> + </UApp> +</template> diff --git a/packages/devtools-app/app/assets/css/global.css b/packages/devtools-app/app/assets/css/global.css new file mode 100644 index 000000000..50af35059 --- /dev/null +++ b/packages/devtools-app/app/assets/css/global.css @@ -0,0 +1,126 @@ +@import "tailwindcss"; +@import "@nuxt/ui"; + +@font-face { + font-family: 'Hubot Sans'; + src: url('../fonts/hubot-sans.woff2') format('woff2'); + font-weight: 100 900; + font-display: swap; + font-style: normal; +} + +@font-face { + font-family: 'Fira Code'; + src: url('../fonts/fira-code.woff2') format('woff2'); + font-weight: 100 900; + font-display: swap; + font-style: normal; +} + +@theme { + --font-sans: 'Hubot Sans', ui-sans-serif, system-ui, sans-serif; + --font-display: 'Hubot Sans', ui-sans-serif, system-ui, sans-serif; + --font-mono: 'Fira Code', ui-monospace, monospace; + + /* Warm amber-tinted neutral scale (hue 75) */ + --color-neutral-50: oklch(0.984 0.003 75); + --color-neutral-100: oklch(0.968 0.006 75); + --color-neutral-200: oklch(0.920 0.010 75); + --color-neutral-300: oklch(0.870 0.014 75); + --color-neutral-400: oklch(0.710 0.018 75); + --color-neutral-500: oklch(0.555 0.018 75); + --color-neutral-600: oklch(0.445 0.016 75); + --color-neutral-700: oklch(0.370 0.014 75); + --color-neutral-800: oklch(0.270 0.012 75); + --color-neutral-900: oklch(0.190 0.010 75); + --color-neutral-950: oklch(0.110 0.008 75); + + --ui-text-secondary: #82AAFF; +} + +:root { + --ui-text: oklch(0.370 0.014 75); + --ui-text-highlighted: oklch(0.210 0.012 75); +} + +.dark { + --ui-bg: var(--color-neutral-950); + --ui-bg-muted: var(--color-neutral-900); + --ui-bg-elevated: var(--color-neutral-800); + --ui-bg-accented: var(--color-neutral-700); + --ui-bg-inverted: #fff; + --ui-text-dimmed: var(--color-neutral-500); + --ui-text-muted: var(--color-neutral-400); + --ui-text-toned: var(--color-neutral-300); + --ui-text: var(--color-neutral-300); + --ui-text-highlighted: var(--color-neutral-100); + --ui-text-inverted: var(--color-neutral-900); + --ui-border: var(--color-neutral-800); + --ui-border-muted: var(--color-neutral-800); + --ui-border-accented: var(--color-neutral-700); + --ui-border-inverted: #fff; +} + +html, body { + margin: 0; + padding: 0; + font-size: 13px; + -webkit-font-smoothing: antialiased; +} + +p, h1, h2, h3, h4, h5, h6 { + overflow-wrap: break-word; +} + +h1, h2, h3, h4, h5, h6 { + font-family: var(--font-display); + text-wrap: balance; +} + +#root, #__nuxt { + isolation: isolate; +} + +/* Noise grain overlay */ +body::before { + content: ''; + position: fixed; + inset: 0; + z-index: 10; + pointer-events: none; + opacity: 0.035; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 128 128' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + background-repeat: repeat; + background-size: 128px 128px; +} + +html:not(.dark) body::before { + opacity: 0.06; +} + +/* Scrollbar */ +* { + --scrollbar-track: initial; + --scrollbar-thumb: initial; + scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); + scrollbar-width: thin; + --scrollbar-thumb: #acbad2; +} + +.dark * { + --scrollbar-thumb: #3b5178; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-thumb { + background-color: var(--scrollbar-thumb); + border-radius: 3px; +} + +::-webkit-scrollbar-track { + background: transparent; +} diff --git a/packages/devtools-app/app/assets/fonts/fira-code.woff2 b/packages/devtools-app/app/assets/fonts/fira-code.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/app/assets/fonts/hubot-sans.woff2 b/packages/devtools-app/app/assets/fonts/hubot-sans.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/packages/devtools-app/app/components/DevtoolsAlert.vue b/packages/devtools-app/app/components/DevtoolsAlert.vue new file mode 100644 index 000000000..dbe87b272 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsAlert.vue @@ -0,0 +1,79 @@ +<script setup lang="ts"> +const { + icon, + variant = 'info', +} = defineProps<{ + icon?: string + variant?: 'info' | 'warning' | 'error' | 'success' +}>() + +const defaultIcons: Record<string, string> = { + info: 'i-carbon-information', + warning: 'i-carbon-warning', + error: 'i-carbon-close-outline', + success: 'i-carbon-checkmark-outline', +} +</script> + +<template> + <div class="devtools-alert" :class="`devtools-alert--${variant}`" :role="variant === 'error' ? 'alert' : 'status'"> + <UIcon :name="icon || defaultIcons[variant]" class="shrink-0" aria-hidden="true" /> + <div class="flex-1 min-w-0 text-sm"> + <slot /> + </div> + <div v-if="$slots.action" class="ml-auto shrink-0"> + <slot name="action" /> + </div> + </div> +</template> + +<style scoped> +.devtools-alert { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.625rem 0.75rem; + border-radius: var(--ui-radius); + border: 1px solid; +} + +.devtools-alert--info { + border-color: oklch(75% 0.1 230 / 0.2); + background: oklch(85% 0.1 230 / 0.08); + color: oklch(55% 0.12 230); +} +.dark .devtools-alert--info { + background: oklch(45% 0.1 230 / 0.12); + color: oklch(80% 0.1 230); +} + +.devtools-alert--warning { + border-color: oklch(75% 0.12 85 / 0.2); + background: oklch(85% 0.12 85 / 0.08); + color: oklch(55% 0.15 85); +} +.dark .devtools-alert--warning { + background: oklch(45% 0.12 85 / 0.12); + color: oklch(80% 0.12 85); +} + +.devtools-alert--error { + border-color: oklch(55% 0.15 25 / 0.25); + background: oklch(65% 0.18 25 / 0.08); + color: oklch(52% 0.18 25); +} +.dark .devtools-alert--error { + background: oklch(40% 0.14 25 / 0.15); + color: oklch(75% 0.14 25); +} + +.devtools-alert--success { + border-color: oklch(65% 0.12 145 / 0.2); + background: oklch(75% 0.15 145 / 0.08); + color: oklch(50% 0.15 145); +} +.dark .devtools-alert--success { + background: oklch(50% 0.15 145 / 0.12); + color: oklch(75% 0.18 145); +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsCopyButton.vue b/packages/devtools-app/app/components/DevtoolsCopyButton.vue new file mode 100644 index 000000000..597ff9945 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsCopyButton.vue @@ -0,0 +1,21 @@ +<script setup lang="ts"> +const { text } = defineProps<{ + text: string +}>() + +const { copy, copied } = useCopy() +</script> + +<template> + <UTooltip :text="copied ? 'Copied!' : 'Copy'"> + <UButton + :icon="copied ? 'i-carbon-checkmark' : 'i-carbon-copy'" + :aria-label="copied ? 'Copied' : 'Copy to clipboard'" + size="xs" + variant="ghost" + color="neutral" + :class="copied ? 'text-green-500' : ''" + @click="copy(text)" + /> + </UTooltip> +</template> diff --git a/packages/devtools-app/app/components/DevtoolsDocs.vue b/packages/devtools-app/app/components/DevtoolsDocs.vue new file mode 100644 index 000000000..7332ee53d --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsDocs.vue @@ -0,0 +1,11 @@ +<script setup lang="ts"> +const { url } = defineProps<{ + url: string +}>() +</script> + +<template> + <div class="h-full max-h-full overflow-hidden"> + <iframe :src="url" :title="`Documentation: ${url}`" class="w-full h-full border-none" style="min-height: calc(100vh - 100px);" /> + </div> +</template> diff --git a/packages/devtools-app/app/components/DevtoolsEmptyState.vue b/packages/devtools-app/app/components/DevtoolsEmptyState.vue new file mode 100644 index 000000000..947c1aa75 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsEmptyState.vue @@ -0,0 +1,28 @@ +<script setup lang="ts"> +const { + icon = 'i-carbon-search', + title, + description, +} = defineProps<{ + icon?: string + title: string + description?: string +}>() +</script> + +<template> + <div class="text-center py-12"> + <UIcon :name="icon" class="text-4xl text-muted mb-3" aria-hidden="true" /> + <p class="font-medium text-sm mb-1"> + {{ title }} + </p> + <p v-if="description || $slots.description" class="text-xs text-muted max-w-sm mx-auto"> + <slot name="description"> + {{ description }} + </slot> + </p> + <div v-if="$slots.default" class="mt-3"> + <slot /> + </div> + </div> +</template> diff --git a/packages/devtools-app/app/components/DevtoolsHeadEntry.vue b/packages/devtools-app/app/components/DevtoolsHeadEntry.vue new file mode 100644 index 000000000..de710e598 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsHeadEntry.vue @@ -0,0 +1,35 @@ +<script setup lang="ts"> +import type { SerializedEntry } from '~/composables/state' + +const { entry } = defineProps<{ + entry: SerializedEntry +}>() + +const modeConfig = { + server: { color: 'info', icon: 'i-carbon-cloud' }, + client: { color: 'warning', icon: 'i-carbon-laptop' }, + hydrated: { color: 'success', icon: 'i-carbon-arrows-horizontal' }, +} as const +</script> + +<template> + <details class="border border-default rounded-lg overflow-hidden group"> + <summary class="flex items-center gap-3 p-3 bg-default cursor-pointer select-none list-none [&::-webkit-details-marker]:hidden"> + <UIcon name="i-carbon-chevron-right" class="text-xs transition-transform group-open:rotate-90 shrink-0" /> + <span class="font-mono text-sm">#{{ entry.id }}</span> + <UBadge variant="subtle" size="xs"> + {{ entry.tagCount }} tags + </UBadge> + <UBadge :color="modeConfig[entry.mode]?.color || 'neutral'" variant="subtle" size="xs"> + <UIcon :name="modeConfig[entry.mode]?.icon || 'i-carbon-help'" class="text-xs" /> + {{ entry.mode }} + </UBadge> + <span v-if="entry.source" class="text-xs text-muted font-mono ml-auto"> + {{ entry.source }} + </span> + </summary> + <div class="p-3 bg-elevated border-t border-default"> + <OCodeBlock :code="JSON.stringify(entry.input, null, 2)" lang="json" /> + </div> + </details> +</template> diff --git a/packages/devtools-app/app/components/DevtoolsKeyValue.vue b/packages/devtools-app/app/components/DevtoolsKeyValue.vue new file mode 100644 index 000000000..4b8517a64 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsKeyValue.vue @@ -0,0 +1,132 @@ +<script setup lang="ts"> +export interface KeyValueItem { + key: string + value: string | number | boolean | undefined + copyable?: boolean + mono?: boolean + link?: string + code?: 'js' | 'json' | 'xml' | 'css' +} + +const { items, striped = false } = defineProps<{ + items: KeyValueItem[] + striped?: boolean +}>() + +const urlRe = /^https?:\/\/\S+$/ +const colorRe = /^#(?:[0-9a-f]{3,4}){1,2}$|^rgba?\([\d\s,./]+\)$|^hsla?\([\d\s%,./]+\)$/i + +function isAutoLink(item: KeyValueItem): boolean { + return !item.link && !item.code && typeof item.value === 'string' && urlRe.test(item.value) +} + +function isColor(item: KeyValueItem): boolean { + return typeof item.value === 'string' && colorRe.test(item.value.trim()) +} +</script> + +<template> + <div class="divide-y divide-[var(--ui-border)]"> + <div + v-for="item in items" + :key="item.key" + class="devtools-kv-row group" + :class="{ + 'devtools-kv-striped': striped, + 'devtools-kv-stacked': !!item.code, + }" + > + <span class="devtools-kv-key">{{ item.key }}</span> + <div class="devtools-kv-value-wrap" :class="{ 'w-full': !!item.code }"> + <a + v-if="item.link" + :href="item.link" + target="_blank" + rel="noopener noreferrer" + class="text-xs text-muted hover:text-default flex items-center gap-1" + > + {{ item.value }} + <UIcon name="i-carbon-launch" class="text-xs" /> + </a> + <DevtoolsSnippet + v-else-if="item.code && item.value !== undefined && item.value !== ''" + :code="String(item.value)" + :lang="item.code" + class="w-full" + /> + <a + v-else-if="isAutoLink(item)" + :href="String(item.value)" + target="_blank" + rel="noopener noreferrer" + class="text-xs text-muted hover:text-default flex items-center gap-1" + > + {{ item.value }} + <UIcon name="i-carbon-launch" class="text-xs" /> + </a> + <span + v-else + class="devtools-kv-value flex items-center gap-1.5" + :class="{ + 'font-mono': item.mono !== false, + 'text-green-500': item.value === true, + 'text-red-400': item.value === false, + 'text-muted italic': item.value === undefined || item.value === '', + }" + > + <span + v-if="isColor(item)" + class="inline-block w-3 h-3 rounded-sm shrink-0 border border-[var(--ui-border)]" + :style="{ background: String(item.value).trim() }" + /> + {{ item.value === undefined || item.value === '' ? '(empty)' : item.value }} + </span> + <DevtoolsCopyButton + v-if="!item.code && item.copyable && item.value !== undefined && item.value !== ''" + :text="String(item.value)" + class="opacity-0 group-hover:opacity-100 transition-opacity" + /> + </div> + </div> + </div> +</template> + +<style scoped> +.devtools-kv-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + padding: 0.5rem 0.75rem; + transition: background-color 150ms ease; +} +.devtools-kv-row.devtools-kv-stacked { + flex-direction: column; + align-items: flex-start; + gap: 0.375rem; +} +.devtools-kv-row:hover { + background: var(--ui-bg-muted); +} +.devtools-kv-striped:nth-child(even) { + background: var(--ui-bg-muted); +} +.devtools-kv-key { + font-size: 0.8125rem; + font-family: var(--font-mono); + color: var(--ui-text-muted); + flex-shrink: 0; +} +.devtools-kv-value-wrap { + display: flex; + align-items: center; + gap: 0.5rem; + min-width: 0; +} +.devtools-kv-value { + font-size: 0.8125rem; + text-align: right; + overflow-wrap: break-word; + word-break: break-all; +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsLayout.vue b/packages/devtools-app/app/components/DevtoolsLayout.vue new file mode 100644 index 000000000..718726500 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsLayout.vue @@ -0,0 +1,80 @@ +<script setup lang="ts"> +export interface DevtoolsNavItem { + value: string + to: string + icon: string + label: string + warnings?: number + errors?: number +} + +const { + navItems, +} = defineProps<{ + navItems: DevtoolsNavItem[] +}>() + +const router = useRouter() +const route = useRoute() + +const activeTab = computed(() => { + for (const item of navItems) { + if (item.to === '/' && route.path === '/') + return item.value + if (item.to !== '/' && route.path.startsWith(item.to)) + return item.value + } + return navItems[0]?.value +}) + +const routeMap = computed(() => Object.fromEntries(navItems.map(i => [i.value, i.to]))) + +function onTabChange(value: string | number) { + const to = routeMap.value[value] + if (to) + router.push(to) +} +</script> + +<template> + <div class="flex flex-col h-screen overflow-hidden"> + <header class="devtools-header shrink-0"> + <div class="flex items-center gap-3 min-w-0"> + <slot name="brand" /> + <UTabs + :model-value="activeTab" + :items="navItems" + value-key="value" + label-key="label" + variant="link" + color="neutral" + :content="false" + :ui="{ root: 'min-w-0', list: 'border-none gap-5', leadingIcon: 'size-3.5 opacity-50 group-data-[state=open]:opacity-90 transition-opacity' }" + @update:model-value="onTabChange" + > + <template #trailing="{ item }"> + <span v-if="item.errors" class="size-1.5 rounded-full bg-red-500" /> + <span v-else-if="item.warnings" class="size-1.5 rounded-full bg-amber-500" /> + </template> + </UTabs> + </div> + <div class="ml-auto flex items-center gap-1.5"> + <slot name="stats" /> + </div> + </header> + <main class="flex-1 overflow-auto p-4"> + <slot /> + </main> + </div> +</template> + +<style scoped> +.devtools-header { + display: flex; + align-items: center; + gap: 1rem; + padding: 0.5rem 1rem; + border-bottom: 1px solid var(--ui-border); + background: var(--ui-bg); +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsMetric.vue b/packages/devtools-app/app/components/DevtoolsMetric.vue new file mode 100644 index 000000000..bf78187b1 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsMetric.vue @@ -0,0 +1,72 @@ +<script setup lang="ts"> +const { + label, + value, + icon, + variant = 'default', +} = defineProps<{ + label?: string + value: string | number + icon?: string + variant?: 'default' | 'success' | 'warning' | 'danger' | 'info' +}>() +</script> + +<template> + <div class="devtools-metric" :class="`devtools-metric--${variant}`"> + <UIcon v-if="icon" :name="icon" class="text-sm shrink-0" aria-hidden="true" /> + <span class="font-mono font-semibold">{{ value }}</span> + <span v-if="label" class="opacity-70">{{ label }}</span> + </div> +</template> + +<style scoped> +.devtools-metric { + display: inline-flex; + align-items: center; + gap: 0.375rem; + padding: 0.25rem 0.625rem; + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--ui-radius); + font-variant-numeric: tabular-nums; +} + +.devtools-metric--default { + background: var(--ui-bg-elevated); + border: 1px solid var(--ui-border); + color: var(--ui-text); +} +.devtools-metric--success { + background: oklch(75% 0.15 145 / 0.12); + color: oklch(50% 0.15 145); +} +.dark .devtools-metric--success { + background: oklch(50% 0.15 145 / 0.15); + color: oklch(75% 0.18 145); +} +.devtools-metric--warning { + background: oklch(80% 0.12 85 / 0.12); + color: oklch(55% 0.15 85); +} +.dark .devtools-metric--warning { + background: oklch(55% 0.12 85 / 0.15); + color: oklch(75% 0.15 85); +} +.devtools-metric--danger { + background: oklch(65% 0.12 25 / 0.1); + color: oklch(55% 0.15 25); +} +.dark .devtools-metric--danger { + background: oklch(45% 0.1 25 / 0.15); + color: oklch(70% 0.12 25); +} +.devtools-metric--info { + background: oklch(85% 0.08 200 / 0.1); + color: oklch(50% 0.12 200); +} +.dark .devtools-metric--info { + background: oklch(35% 0.08 200 / 0.15); + color: oklch(70% 0.1 200); +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsPanel.vue b/packages/devtools-app/app/components/DevtoolsPanel.vue new file mode 100644 index 000000000..5e21c2feb --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsPanel.vue @@ -0,0 +1,64 @@ +<script setup lang="ts"> +const { + title, + closable = false, + icon, + padding = true, +} = defineProps<{ + title?: string + closable?: boolean + icon?: string + padding?: boolean +}>() + +defineEmits<{ + close: [] +}>() +</script> + +<template> + <div class="devtools-panel"> + <div v-if="title || $slots.header" class="devtools-panel-header"> + <slot name="header"> + <div class="flex items-center gap-2"> + <UIcon v-if="icon" :name="icon" class="text-lg text-muted" /> + <span class="text-sm font-medium">{{ title }}</span> + </div> + </slot> + <div v-if="closable || $slots.actions" class="flex items-center gap-1"> + <slot name="actions" /> + <UButton + v-if="closable" + icon="i-carbon-close" + size="xs" + variant="ghost" + color="neutral" + aria-label="Close panel" + @click="$emit('close')" + /> + </div> + </div> + <div :class="padding ? 'p-3' : ''"> + <slot /> + </div> + </div> +</template> + +<style scoped> +.devtools-panel { + display: flex; + flex-direction: column; + border-radius: var(--ui-radius); + border: 1px solid var(--ui-border); + background: var(--ui-bg-elevated); + overflow: hidden; +} +.devtools-panel-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.625rem 0.75rem; + border-bottom: 1px solid var(--ui-border); + background: var(--ui-bg-muted); +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsSection.vue b/packages/devtools-app/app/components/DevtoolsSection.vue new file mode 100644 index 000000000..288138652 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsSection.vue @@ -0,0 +1,93 @@ +<script setup lang="ts"> +const { + icon, + text, + description, + collapse = true, + padding = true, +} = defineProps<{ + icon?: string + text?: string + description?: string + collapse?: boolean + open?: boolean + padding?: boolean +}>() + +const open = defineModel('open', { default: true }) + +function onToggle(e: any) { + open.value = e.target.open +} +</script> + +<template> + <details :open="open" class="section-block" @toggle="onToggle"> + <summary class="section-header" :class="collapse ? '' : 'pointer-events-none'"> + <div class="section-title" :class="open ? '' : 'opacity-60'"> + <UIcon v-if="icon" :name="icon" class="text-lg text-muted shrink-0" /> + <div class="flex-1 min-w-0"> + <div class="text-sm font-semibold"> + <slot name="text"> + {{ text }} + </slot> + </div> + <div v-if="description || $slots.description" class="text-xs text-muted mt-0.5"> + <slot name="description"> + {{ description }} + </slot> + </div> + </div> + <slot name="actions" /> + <UIcon + v-if="collapse" + name="i-carbon-chevron-down" + class="section-chevron text-muted" + /> + </div> + </summary> + <div :class="padding ? 'p-3' : ''"> + <slot /> + </div> + </details> +</template> + +<style scoped> +.section-block { + border: 1px solid var(--ui-border); + border-radius: var(--ui-radius); + overflow: hidden; + background: var(--ui-bg-elevated); +} + +.section-header { + cursor: pointer; + user-select: none; + padding: 0.75rem; + list-style: none; + transition: background-color 150ms ease; +} +.section-header::-webkit-details-marker { display: none; } +.section-header:hover { background: var(--ui-bg-muted); } + +details[open] > .section-header { + border-bottom: 1px solid var(--ui-border); +} + +.section-title { + display: flex; + align-items: center; + gap: 0.5rem; + transition: opacity 150ms ease; +} + +.section-chevron { + font-size: 0.875rem; + shrink: 0; + transition: transform 200ms cubic-bezier(0.22, 1, 0.36, 1); +} + +details[open] .section-chevron { + transform: rotate(180deg); +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsSnippet.vue b/packages/devtools-app/app/components/DevtoolsSnippet.vue new file mode 100644 index 000000000..36c05a421 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsSnippet.vue @@ -0,0 +1,39 @@ +<script setup lang="ts"> +const { + label, + code, + lang = 'json', +} = defineProps<{ + label?: string + code: string + lang?: 'js' | 'json' | 'xml' | 'css' +}>() +</script> + +<template> + <div class="devtools-snippet"> + <div v-if="label || $slots.header" class="devtools-snippet-header"> + <slot name="header"> + <code class="text-xs font-mono text-muted">{{ label }}</code> + </slot> + <DevtoolsCopyButton :text="code" /> + </div> + <OCodeBlock :code="code" :lang="lang" class="devtools-snippet-block" /> + </div> +</template> + +<style scoped> +.devtools-snippet-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.375rem; +} +.devtools-snippet-block { + border-radius: var(--ui-radius); + padding: 0.5rem 0.625rem; + max-height: 300px; + overflow-y: auto; + background: var(--ui-bg-elevated); +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsTagTable.vue b/packages/devtools-app/app/components/DevtoolsTagTable.vue new file mode 100644 index 000000000..a2c36ff13 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsTagTable.vue @@ -0,0 +1,436 @@ +<script setup lang="ts"> +import type { SerializedTag } from '~/composables/state' +import { brokenLinks, isBrokenUrl } from '~/composables/link-checker' +import { state } from '~/composables/state' + +const { tags, title = 'Tags', icon = 'i-carbon-tag-group' } = defineProps<{ + tags: SerializedTag[] + title?: string + icon?: string +}>() + +const tagFilter = ref('') +const activeTagType = ref<string | null>(null) +const activeSource = ref<string | null>(null) + +const tagTypeColors: Record<string, string> = { + meta: 'info', + link: 'success', + title: 'primary', + script: 'error', + htmlAttrs: 'warning', + titleTemplate: 'neutral', + templateParams: 'neutral', +} + +function tagTypeColor(tag: string) { + return (tagTypeColors[tag] || 'neutral') as 'info' | 'success' | 'primary' | 'error' | 'warning' | 'neutral' +} + +const tagTypeCounts = computed(() => { + const counts: Record<string, number> = {} + for (const t of tags) { + counts[t.tag] = (counts[t.tag] || 0) + 1 + } + return counts +}) + +const singletonTags = new Set(['title', 'titleTemplate', 'templateParams', 'htmlAttrs', 'bodyAttrs']) + +const filteredTags = computed(() => { + let result = tags + if (activeTagType.value) + result = result.filter(t => t.tag === activeTagType.value) + if (activeSource.value) + result = result.filter(t => (t.source || '') === activeSource.value) + const filter = tagFilter.value.toLowerCase() + if (!filter) + return result + return result.filter((t) => { + const name = t.props?.name || t.props?.property || t.props?.rel || t.props?.src || '' + return t.tag.includes(filter) || name.toLowerCase().includes(filter) || (t.source || '').toLowerCase().includes(filter) + }) +}) + +function toggleSource(source: string) { + activeSource.value = activeSource.value === source ? null : source +} + +function toggleTagType(tag: string) { + activeTagType.value = activeTagType.value === tag ? null : tag +} + +// Merge server validation rules with client-side broken link checks +const validationRules = computed(() => { + const rules = [...(state.value.validationRules || [])] + for (const broken of brokenLinks.value.values()) { + rules.push({ + id: 'broken-link', + message: `${broken.identifier} URL is broken or unreachable: ${broken.url}`, + severity: 'warn', + tagDedupeKey: broken.tagDedupeKey, + }) + } + return rules +}) + +const URL_SUFFIX_RE = /:\s+(https?:\/\/\S+|\/\S+)$/ +const colorRe = /^#(?:[0-9a-f]{3,4}){1,2}$|^rgba?\([\d\s,./]+\)$|^hsla?\([\d\s%,./]+\)$/i +const imageExtRe = /\.(?:png|jpe?g|gif|svg|ico|webp|avif)(?:\?.*)?$/i +const OG_IMAGE_RE = /^og:image|twitter:image/ +const ICON_REL_RE = /icon|apple-touch-icon/ + +function tagMatchKey(tag: any): string { + return tag.dedupeKey || tag._h || `${tag.tag}:${JSON.stringify(tag.props || {})}` +} + +const warningsByTag = computed(() => { + const byKey = new Map<string, typeof validationRules.value>() + const byUrl = new Map<string, typeof validationRules.value>() + for (const rule of validationRules.value) { + if (rule.tagDedupeKey) { + const existing = byKey.get(rule.tagDedupeKey) || [] + existing.push(rule) + byKey.set(rule.tagDedupeKey, existing) + } + if (rule.id === 'broken-link') { + const urlMatch = rule.message.match(URL_SUFFIX_RE) as RegExpMatchArray | null + if (urlMatch?.[1]) { + const existing = byUrl.get(urlMatch[1]) || [] + existing.push(rule) + byUrl.set(urlMatch[1], existing) + } + } + } + return { byKey, byUrl } +}) + +function tagWarnings(tag: any) { + const { byKey, byUrl } = warningsByTag.value + const byKeyResult = byKey.get(tagMatchKey(tag)) || [] + const url = tagUrl(tag) || tagValue(tag) + const byUrlResult = url ? (byUrl.get(url) || []) : [] + if (!byKeyResult.length) + return byUrlResult + if (!byUrlResult.length) + return byKeyResult + const seen = new Set(byKeyResult) + return [...byKeyResult, ...byUrlResult.filter(r => !seen.has(r))] +} + +function tagIdentifier(tag: any): string { + if (tag.tag === 'meta') { + if (tag.props?.name) + return tag.props.name + if (tag.props?.property) + return tag.props.property + if (tag.props?.charset) + return 'charset' + if (tag.props?.['http-equiv']) + return tag.props['http-equiv'] + return '-' + } + if (tag.tag === 'link') + return tag.props?.rel || '-' + if (tag.tag === 'script') + return tag.props?.src || '(inline)' + if (tag.tag === 'title' || tag.tag === 'titleTemplate') + return '-' + if (tag.tag === 'htmlAttrs' || tag.tag === 'bodyAttrs') + return '-' + return '-' +} + +function tagValue(tag: any): string { + if (tag.tag === 'meta') { + if (tag.props?.content) + return tag.props.content + if (tag.props?.charset) + return tag.props.charset + return '' + } + if (tag.tag === 'title' || tag.tag === 'titleTemplate') + return tag.textContent || '' + if (tag.tag === 'link') + return tag.props?.href || '' + if (tag.tag === 'script') + return tag.props?.src || '(inline)' + if (tag.tag === 'htmlAttrs' || tag.tag === 'bodyAttrs') { + const attrs = Object.entries(tag.props || {}).map(([k, v]) => v === true ? k : `${k}="${v}"`).join(' ') + return attrs || '' + } + return '' +} + +function isColorValue(tag: any): string | false { + if (tag.tag === 'meta' && (tag.props?.name === 'theme-color' || tag.props?.name === 'msapplication-TileColor')) { + const v = tag.props?.content + if (v && colorRe.test(v.trim())) + return v.trim() + } + return false +} + +function tagUrl(tag: any): string | false { + if (tag.tag === 'meta' && tag.props?.content?.startsWith('http')) + return tag.props.content + if (tag.tag === 'link' && tag.props?.href?.startsWith('http')) + return tag.props.href + if (tag.tag === 'script' && tag.props?.src?.startsWith('http')) + return tag.props.src + return false +} + +function isImageUrl(tag: any): string | false { + const val = tagValue(tag) + if (!val) + return false + if (tag.tag === 'meta' && OG_IMAGE_RE.test(tag.props?.property || tag.props?.name || '')) + return val + if (tag.tag === 'link' && ICON_REL_RE.test(tag.props?.rel || '') && val) + return val + if (imageExtRe.test(val)) + return val + return false +} + +function hasInlineCode(tag: any): false | { code: string, lang: 'js' | 'json' | 'xml' | 'css' } { + if (tag.tag === 'script' && tag.innerHTML && !tag.props?.src) + return { code: tag.innerHTML, lang: tag.props?.type === 'application/ld+json' ? 'json' : 'js' } + if (tag.tag === 'style' && tag.innerHTML) + return { code: tag.innerHTML, lang: 'css' } + return false +} + +const expandedRows = ref(new Set<number>()) + +function toggleRow(index: number) { + if (expandedRows.value.has(index)) + expandedRows.value.delete(index) + else + expandedRows.value.add(index) +} +</script> + +<template> + <UCard> + <template #header> + <div class="space-y-3"> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon :name="icon" class="text-lg" /> + <span class="font-medium">{{ title }} ({{ filteredTags.length }}<template v-if="activeTagType || activeSource || tagFilter"> / {{ tags.length }}</template>)</span> + <button v-if="activeSource" class="inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-elevated border border-default hover:bg-muted transition-colors" @click="activeSource = null"> + source: {{ activeSource }} + <UIcon name="i-carbon-close" class="text-xs" /> + </button> + </div> + <slot name="actions" /> + </div> + </div> + </template> + <div class="overflow-auto max-h-[400px]"> + <UInput v-model="tagFilter" placeholder="Filter tags…" aria-label="Filter tags" name="tag-filter" autocomplete="off" size="xs" class="w-48" /> + <div v-if="Object.keys(tagTypeCounts).length > 1" class="flex flex-wrap gap-2" role="group" aria-label="Filter by tag type"> + <button + v-for="(count, tag) in tagTypeCounts" + :key="tag" + class="inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium transition-colors duration-150 border" + :class="activeTagType === tag + ? 'tag-filter-active border-current' + : 'tag-filter border-transparent hover:border-current'" + :data-color="tagTypeColor(tag as string)" + :aria-pressed="activeTagType === tag" + @click="toggleTagType(tag as string)" + > + <span class="tag-filter-dot" /> + <template v-if="singletonTags.has(tag as string)"> + {{ tag }} + </template> + <template v-else> + {{ count }} {{ tag }} + </template> + </button> + </div> + <table class="w-full text-sm"> + <thead class="sticky top-0 bg-default"> + <tr class="text-left text-muted border-b border-default"> + <th scope="col" class="p-2 w-20"> + Tag + </th> + <th scope="col" class="p-2"> + Identifier + </th> + <th scope="col" class="p-2"> + Value + </th> + <th scope="col" class="p-2"> + Source + </th> + <th scope="col" class="p-2 w-24"> + Mode + </th> + </tr> + </thead> + <tbody> + <template v-for="(tag, i) in filteredTags" :key="i"> + <tr + class="border-b border-default hover:bg-elevated transition-colors cursor-pointer" + :class="{ 'bg-elevated/30': expandedRows.has(i) }" + @click="toggleRow(i)" + > + <td class="p-2"> + <div class="flex items-center gap-1.5"> + <UIcon + name="i-carbon-chevron-right" + class="text-xs text-muted shrink-0 transition-transform duration-150" + :class="{ 'rotate-90': expandedRows.has(i) }" + /> + <UBadge :color="tagTypeColor(tag.tag)" variant="subtle" size="xs"> + {{ tag.tag }} + </UBadge> + </div> + </td> + <td class="p-2 font-mono text-xs"> + {{ tagIdentifier(tag) }} + </td> + <td class="p-2 font-mono text-xs max-w-[300px]"> + <div class="flex items-center gap-1.5"> + <UIcon + v-if="tagWarnings(tag).some(r => r.id === 'broken-link')" + name="i-carbon-error-filled" + class="text-red-500 text-sm shrink-0" + /> + <UIcon + v-else-if="tagWarnings(tag).length" + name="i-carbon-warning-filled" + class="text-amber-500 text-sm shrink-0" + /> + <span + v-if="isColorValue(tag)" + class="inline-block w-3 h-3 rounded-sm shrink-0 border border-default" + :style="{ background: isColorValue(tag) as string }" + /> + <UIcon + v-if="isImageUrl(tag)" + name="i-carbon-image" + class="text-muted text-sm shrink-0" + /> + <span class="truncate" :class="{ 'line-through text-red-400/70': (tagUrl(tag) && isBrokenUrl(tagUrl(tag) as string)) || isBrokenUrl(tagValue(tag)) }">{{ tagValue(tag) }}</span> + </div> + </td> + <td class="p-2 font-mono text-xs text-muted"> + <button v-if="tag.source" class="hover:text-default hover:underline transition-colors cursor-pointer" :class="{ 'text-default font-medium': activeSource === tag.source }" @click.stop="toggleSource(tag.source!)"> + {{ tag.source }} + </button> + </td> + <td class="p-2"> + <UBadge :color="tag.mode === 'server' ? 'info' : tag.mode === 'client' ? 'warning' : 'success'" variant="subtle" size="xs"> + {{ tag.mode }} + </UBadge> + </td> + </tr> + <tr v-if="expandedRows.has(i)" class="border-b border-default"> + <td colspan="5" class="px-4 py-3 bg-elevated/50"> + <div class="space-y-3"> + <!-- Warnings --> + <div v-if="tagWarnings(tag).length" class="space-y-1"> + <div + v-for="(rule, j) in tagWarnings(tag)" :key="j" + class="flex items-start gap-2 py-1 px-2 rounded-md" + :class="rule.id === 'broken-link' ? 'bg-red-500/5' : rule.severity === 'warn' ? 'bg-amber-500/5' : 'bg-blue-500/5'" + > + <UIcon + :name="rule.id === 'broken-link' ? 'i-carbon-error-filled' : rule.severity === 'warn' ? 'i-carbon-warning-filled' : 'i-carbon-information-filled'" + class="text-sm mt-0.5 shrink-0" + :class="rule.id === 'broken-link' ? 'text-red-500' : rule.severity === 'warn' ? 'text-amber-500' : 'text-blue-400'" + /> + <div class="min-w-0"> + <span class="text-xs font-mono">{{ rule.id }}</span> + <p class="text-xs text-muted"> + {{ rule.message }} + </p> + </div> + </div> + </div> + <!-- Image preview --> + <div v-if="isImageUrl(tag)" class="tag-image-preview"> + <img + :src="isImageUrl(tag) as string" + :alt="tagIdentifier(tag)" + class="max-w-full max-h-40 rounded border border-default object-contain bg-elevated" + loading="lazy" + @error="($event.target as HTMLImageElement).style.display = 'none'" + > + </div> + <!-- Inline code --> + <DevtoolsSnippet + v-if="hasInlineCode(tag)" + :label="tag.tag === 'script' ? (tag.props?.type || 'text/javascript') : 'text/css'" + :code="(hasInlineCode(tag) as { code: string, lang: 'js' | 'json' | 'xml' | 'css' }).code" + :lang="(hasInlineCode(tag) as { code: string, lang: 'js' | 'json' | 'xml' | 'css' }).lang" + /> + <!-- Tag details --> + <DevtoolsKeyValue + :items="[ + ...Object.entries(tag.props || {}).map(([k, v]) => ({ key: k, value: String(v), mono: true })), + ...(tag.textContent ? [{ key: 'textContent', value: tag.textContent, mono: true }] : []), + ...(tag.innerHTML && !hasInlineCode(tag) ? [{ key: 'innerHTML', value: tag.innerHTML, mono: true }] : []), + ...(tag.dedupeKey ? [{ key: 'dedupeKey', value: tag.dedupeKey, mono: true }] : []), + ...(tag.position ? [{ key: 'position', value: tag.position, mono: true }] : []), + ...(tag.priority != null ? [{ key: 'priority', value: String(tag.priority), mono: true }] : []), + ]" + /> + </div> + </td> + </tr> + </template> + </tbody> + </table> + <DevtoolsEmptyState v-if="!filteredTags.length" icon="i-carbon-tag-group" title="No tags found" description="Try adjusting your filter." /> + </div> + </UCard> +</template> + +<style scoped> +.tag-filter-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + opacity: 0.6; +} + +/* Color mapping via data attribute */ +.tag-filter[data-color="info"], +.tag-filter-active[data-color="info"] { color: var(--ui-text-secondary); } +.tag-filter[data-color="success"], +.tag-filter-active[data-color="success"] { color: oklch(65% 0.2 145); } +.tag-filter[data-color="primary"], +.tag-filter-active[data-color="primary"] { color: var(--ui-color-primary); } +.tag-filter[data-color="error"], +.tag-filter-active[data-color="error"] { color: oklch(62% 0.2 25); } +.tag-filter[data-color="warning"], +.tag-filter-active[data-color="warning"] { color: oklch(70% 0.18 80); } +.tag-filter[data-color="neutral"], +.tag-filter-active[data-color="neutral"] { color: var(--ui-text-muted); } + +.tag-filter { + background: transparent; + opacity: 0.7; +} +.tag-filter:hover { + opacity: 1; + background: color-mix(in oklch, currentColor 6%, transparent); +} +.tag-filter-active { + opacity: 1; + background: color-mix(in oklch, currentColor 10%, transparent); +} +.tag-filter-active .tag-filter-dot { + opacity: 1; +} +.tag-image-preview { + padding: 0.25rem; +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsTip.vue b/packages/devtools-app/app/components/DevtoolsTip.vue new file mode 100644 index 000000000..3c7ce6346 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsTip.vue @@ -0,0 +1,45 @@ +<script setup lang="ts"> +const { + icon = 'i-carbon-idea', + label = 'Tip', +} = defineProps<{ + icon?: string + label?: string +}>() +</script> + +<template> + <div class="devtools-tip"> + <UIcon :name="icon" class="shrink-0 text-sm" aria-hidden="true" /> + <span v-if="label" class="devtools-tip__label">{{ label }}</span> + <span class="text-xs"> + <slot /> + </span> + </div> +</template> + +<style scoped> +.devtools-tip { + display: flex; + align-items: center; + gap: 0.375rem; + padding: 0.5rem 0.625rem; + border-radius: var(--ui-radius); + background: oklch(85% 0.06 230 / 0.06); + border: 1px solid oklch(75% 0.06 230 / 0.12); + color: oklch(55% 0.08 230); + font-size: 0.75rem; +} +.dark .devtools-tip { + background: oklch(35% 0.04 230 / 0.12); + border-color: oklch(50% 0.06 230 / 0.15); + color: oklch(78% 0.06 230); +} +.devtools-tip__label { + font-size: 0.625rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + opacity: 0.7; +} +</style> diff --git a/packages/devtools-app/app/components/DevtoolsToolbar.vue b/packages/devtools-app/app/components/DevtoolsToolbar.vue new file mode 100644 index 000000000..66ad72ba6 --- /dev/null +++ b/packages/devtools-app/app/components/DevtoolsToolbar.vue @@ -0,0 +1,33 @@ +<script setup lang="ts"> +const { + variant = 'default', +} = defineProps<{ + variant?: 'default' | 'minimal' +}>() +</script> + +<template> + <div class="devtools-toolbar" :class="`devtools-toolbar--${variant}`" role="toolbar"> + <slot /> + </div> +</template> + +<style scoped> +.devtools-toolbar { + display: flex; + align-items: center; + border-bottom: 1px solid var(--ui-border); +} +.devtools-toolbar--default { + justify-content: space-between; + gap: 0.75rem; + padding: 0.625rem 0.75rem; + background: var(--ui-bg-elevated); +} +.devtools-toolbar--minimal { + gap: 0.5rem; + padding: 0.5rem 0.75rem; + font-size: 0.75rem; + background: var(--ui-bg-muted); +} +</style> diff --git a/packages/devtools-app/app/components/Logo.vue b/packages/devtools-app/app/components/Logo.vue new file mode 100644 index 000000000..9362087d9 --- /dev/null +++ b/packages/devtools-app/app/components/Logo.vue @@ -0,0 +1,68 @@ +<template> + <div class="flex items-center"> + <svg + width="24" + height="24" + viewBox="0 0 24 24" + class="mr-1 logo-svg" + > + <defs> + <linearGradient id="modernGradient" x1="0%" y1="0%" x2="100%" y2="100%"> + <stop offset="0%" style="stop-color:#FBBF24" /> + <stop offset="100%" style="stop-color:#f0db4f" /> + </linearGradient> + <mask id="cutoutMask"> + <rect width="100%" height="100%" fill="white" /> + <path d="M12 32 L1 32 L15 15 Z" fill="black" /> + </mask> + </defs> + + <path + class="logo-path" + stroke="url(#modernGradient)" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="3" + fill="transparent" + d="M6 4v14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4" + mask="url(#cutoutMask)" + /> + </svg> + <span + v-for="(l, i) in 'Unhead'" + :key="i" + class="logo-letter" + :style="{ animationDelay: `${0.8 + i * 0.1}s` }" + >{{ l }}</span> + </div> +</template> + +<style scoped> +.logo-path { + stroke-dasharray: 60; + stroke-dashoffset: 60; + animation: draw 1.5s ease forwards 0.3s; +} + +@keyframes draw { + to { + stroke-dashoffset: 0; + } +} + +.logo-letter { + opacity: 0; + animation: fadeIn 0.3s ease forwards; +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateX(-4px); + } + to { + opacity: 1; + transform: translateX(0); + } +} +</style> diff --git a/packages/devtools-app/app/components/OCodeBlock.vue b/packages/devtools-app/app/components/OCodeBlock.vue new file mode 100644 index 000000000..8e8929df9 --- /dev/null +++ b/packages/devtools-app/app/components/OCodeBlock.vue @@ -0,0 +1,35 @@ +<script setup lang="ts"> +import { useRenderCodeHighlight } from '../composables/shiki' + +const { code, lang } = defineProps<{ + code: string + lang: 'json' | 'xml' | 'js' | 'css' +}>() + +const rendered = useRenderCodeHighlight(computed(() => code), lang) +</script> + +<template> + <pre + v-if="rendered" + class="code-block" + v-html="rendered" + /> + <pre v-else class="text-xs font-mono overflow-auto leading-relaxed">{{ code }}</pre> +</template> + +<style scoped> +.code-block { + font-size: 0.6875rem; + line-height: 1.6; + overflow: auto; +} +.code-block :deep(pre) { + margin: 0; + padding: 0.5rem 0.625rem; + background: transparent !important; +} +.code-block :deep(code) { + font-family: var(--font-mono); +} +</style> diff --git a/packages/devtools-app/app/composables/clipboard.ts b/packages/devtools-app/app/composables/clipboard.ts new file mode 100644 index 000000000..5b56b572f --- /dev/null +++ b/packages/devtools-app/app/composables/clipboard.ts @@ -0,0 +1,4 @@ +export function useCopy(timeout = 2000): { copy: (text: string) => Promise<void>, copied: Ref<boolean> } { + const { copy, copied } = useClipboard({ legacy: true, copiedDuring: timeout }) + return { copy, copied } +} diff --git a/packages/devtools-app/app/composables/link-checker.ts b/packages/devtools-app/app/composables/link-checker.ts new file mode 100644 index 000000000..0b6a298e4 --- /dev/null +++ b/packages/devtools-app/app/composables/link-checker.ts @@ -0,0 +1,114 @@ +import type { SerializedTag } from './state' + +export interface BrokenLink { + url: string + tag: string + identifier: string + status: number | 'error' + tagDedupeKey?: string +} + +const IMAGE_URL_META = new Set(['og:image', 'og:image:url', 'og:image:secure_url', 'twitter:image', 'twitter:image:src']) +const URL_META = new Set([...IMAGE_URL_META, 'og:url', 'og:video', 'og:video:url', 'og:audio', 'og:audio:url']) +const ICON_RELS = new Set(['icon', 'apple-touch-icon', 'apple-touch-icon-precomposed']) +const IMAGE_EXT_RE = /\.(?:png|jpe?g|gif|svg|ico|webp|avif)(?:\?.*)?$/i + +/** All broken link results keyed by URL */ +export const brokenLinks = shallowRef(new Map<string, BrokenLink>()) +/** URLs currently being checked */ +export const pendingUrls = shallowRef(new Set<string>()) +/** All URLs that have been checked (including successful ones) */ +const checkedUrls = new Set<string>() + +function triggerBrokenLinks() { + brokenLinks.value = new Map(brokenLinks.value) +} +function triggerPending() { + pendingUrls.value = new Set(pendingUrls.value) +} + +export function isBrokenUrl(url: string): boolean { + return brokenLinks.value.has(url) +} + +function extractCheckableUrls(tags: SerializedTag[]): Array<{ url: string, tag: string, identifier: string, tagDedupeKey?: string }> { + const results: Array<{ url: string, tag: string, identifier: string, tagDedupeKey?: string }> = [] + + for (const t of tags) { + const dedupeKey = t.dedupeKey || undefined + + // Meta tags with URL values (og:image, twitter:image, og:url, etc.) + if (t.tag === 'meta') { + const key = t.props?.property || t.props?.name || '' + if (URL_META.has(key) && t.props?.content?.startsWith('http')) { + results.push({ url: t.props.content, tag: t.tag, identifier: key, tagDedupeKey: dedupeKey }) + } + } + + // Link tags with absolute URLs (stylesheets, canonical, etc.) + if (t.tag === 'link' && t.props?.href?.startsWith('http')) { + results.push({ url: t.props.href, tag: t.tag, identifier: t.props.rel || 'link', tagDedupeKey: dedupeKey }) + } + // Link tags with relative/local image URLs (icons, apple-touch-icon) + else if (t.tag === 'link' && t.props?.href && !t.props.href.startsWith('http') && (ICON_RELS.has(t.props.rel || '') || IMAGE_EXT_RE.test(t.props.href))) { + results.push({ url: t.props.href, tag: t.tag, identifier: t.props.rel || 'link', tagDedupeKey: dedupeKey }) + } + + // Script tags with src + if (t.tag === 'script' && t.props?.src?.startsWith('http')) { + results.push({ url: t.props.src, tag: t.tag, identifier: 'src', tagDedupeKey: dedupeKey }) + } + } + + return results +} + +async function checkUrl(url: string, identifier: string): Promise<number | 'error'> { + // For image URLs (including relative icon paths), use Image() which reliably detects broken images + if (IMAGE_URL_META.has(identifier) || ICON_RELS.has(identifier) || IMAGE_EXT_RE.test(url)) { + return new Promise<number>((resolve) => { + const img = new Image() + img.onload = () => resolve(200) + img.onerror = () => resolve(0) + img.src = url + }) + } + // For non-image URLs, try fetch with cors first, fall back to no-cors + try { + const res = await fetch(url, { method: 'HEAD' }) + return res.status + } + catch { + // CORS blocked, can't determine status so assume OK + return 200 + } +} + +export function validateLinks(tags: SerializedTag[]) { + const urls = extractCheckableUrls(tags) + + for (const { url, tag, identifier, tagDedupeKey } of urls) { + if (checkedUrls.has(url)) + continue + checkedUrls.add(url) + pendingUrls.value.add(url) + triggerPending() + + checkUrl(url, identifier).then((status) => { + pendingUrls.value.delete(url) + triggerPending() + // 200 = loaded fine, skip. 0 = image failed to load + if (status === 'error' || status === 0 || (status >= 400 && status < 600)) { + brokenLinks.value.set(url, { url, tag, identifier, status, tagDedupeKey }) + triggerBrokenLinks() + } + }) + } +} + +/** Reset all state (useful when tags change significantly) */ +export function resetLinkChecker() { + brokenLinks.value = new Map() + pendingUrls.value = new Set() + checkedUrls.clear() +} diff --git a/packages/devtools-app/app/composables/rpc.ts b/packages/devtools-app/app/composables/rpc.ts new file mode 100644 index 000000000..7cea7f12f --- /dev/null +++ b/packages/devtools-app/app/composables/rpc.ts @@ -0,0 +1,26 @@ +import type { UnheadDevtoolsState } from './state' +import { getDevToolsRpcClient } from '@vitejs/devtools-kit/client' +import { isConnected, syncState } from './state' + +export const colorMode = ref<'dark' | 'light'>('dark') + +export async function useDevtoolsConnection(): Promise<void> { + if (typeof window === 'undefined') + return + + const client = await getDevToolsRpcClient() + const sharedState = await (client.sharedState as any).get('unhead:state') + const current = sharedState.value() as UnheadDevtoolsState | null + + if (current) { + isConnected.value = true + syncState(current) + } + + sharedState.on('updated', (newState: UnheadDevtoolsState) => { + if (newState) { + isConnected.value = true + syncState(newState) + } + }) +} diff --git a/packages/devtools-app/app/composables/shiki.ts b/packages/devtools-app/app/composables/shiki.ts new file mode 100644 index 000000000..20349a9ee --- /dev/null +++ b/packages/devtools-app/app/composables/shiki.ts @@ -0,0 +1,39 @@ +import type { HighlighterCore } from 'shiki' +import type { ComputedRef, MaybeRef } from 'vue' +import { createHighlighterCore } from 'shiki/core' +import { createJavaScriptRegexEngine } from 'shiki/engine/javascript' + +export const shiki: Ref<HighlighterCore | undefined> = ref() + +export async function loadShiki(): Promise<HighlighterCore | undefined> { + shiki.value = await createHighlighterCore({ + themes: [ + import('@shikijs/themes/vitesse-light'), + import('@shikijs/themes/vitesse-dark'), + ], + langs: [ + import('@shikijs/langs/json'), + import('@shikijs/langs/js'), + import('@shikijs/langs/xml'), + ], + engine: createJavaScriptRegexEngine(), + }).catch((err) => { + console.warn('[unhead] Failed to load shiki highlighter:', err) + return undefined + }) + return shiki.value +} + +export function useRenderCodeHighlight(code: MaybeRef<string>, lang: string): ComputedRef<string> { + return computed(() => { + if (!shiki.value) + return '' + return shiki.value.codeToHtml(toValue(code) || '', { + lang, + themes: { + light: 'vitesse-light', + dark: 'vitesse-dark', + }, + }) || '' + }) +} diff --git a/packages/devtools-app/app/composables/state.ts b/packages/devtools-app/app/composables/state.ts new file mode 100644 index 000000000..530e1c8fd --- /dev/null +++ b/packages/devtools-app/app/composables/state.ts @@ -0,0 +1,99 @@ +import { ref } from 'vue' + +export interface SeoOverview { + title: string + description: string + canonical: string + robots: string + ogTitle: string + ogDescription: string + ogImage: string +} + +export type TagRenderMode = 'server' | 'client' | 'hydrated' + +export interface SerializedEntry { + id: number + source?: string + input: Record<string, any> + tagCount: number + mode: TagRenderMode +} + +export interface SerializedTag { + tag: string + props: Record<string, string> + innerHTML?: string + textContent?: string + position?: string + priority?: number + order?: number + dedupeKey?: string + source?: string + mode: TagRenderMode +} + +export interface SerializedScript { + id: string + src: string + status: string + warmupStrategy?: string + events: { type: string, timestamp: number }[] + fetchpriority?: string + crossorigin?: string + defer?: boolean + async?: boolean +} + +export interface SerializedValidationRule { + id: string + message: string + severity: 'warn' | 'info' + source?: string + tagDedupeKey?: string +} + +export interface UnheadDevtoolsState { + version: string + entries: SerializedEntry[] + tags: SerializedTag[] + plugins: string[] + title: string + scripts: SerializedScript[] + seo: SeoOverview + titleTemplate: string | null + templateParams: Record<string, any> | null + separator: string + ssr: boolean + dirty: boolean + domElementCount: number + tagTypeCounts: Record<string, number> + validationRules: SerializedValidationRule[] +} + +const defaultState: UnheadDevtoolsState = { + version: '', + entries: [], + tags: [], + plugins: [], + title: '', + scripts: [], + seo: { title: '', description: '', canonical: '', robots: '', ogTitle: '', ogDescription: '', ogImage: '' }, + titleTemplate: null, + templateParams: null, + separator: '|', + ssr: false, + dirty: false, + domElementCount: 0, + tagTypeCounts: {}, + validationRules: [], +} + +export const state = ref<UnheadDevtoolsState>({ ...defaultState }) +export const isConnected = ref(false) + +export function syncState(newState: UnheadDevtoolsState) { + if (!newState) + return + state.value = newState +} diff --git a/packages/devtools-app/app/composables/tools.ts b/packages/devtools-app/app/composables/tools.ts new file mode 100644 index 000000000..b35f2c8d4 --- /dev/null +++ b/packages/devtools-app/app/composables/tools.ts @@ -0,0 +1,133 @@ +const NON_WORD_RE = /[^\w\s]/g +const WHITESPACE_RE = /\s+/ + +export const SEO_LIMITS = { + TITLE_MAX_CHARS: 60, + TITLE_WARN_CHARS: 50, + TITLE_MAX_PIXELS: 580, + DESC_MAX_CHARS: 160, + DESC_WARN_CHARS: 150, + DESC_MAX_PIXELS: 920, +} as const + +export const ENGINE_LIMITS = { + google: { label: 'Google', titleMax: 60, descMax: 160, icon: 'i-carbon-search' }, + bing: { label: 'Bing', titleMax: 65, descMax: 150, icon: 'i-carbon-search-locate' }, + duckduckgo: { label: 'DuckDuckGo', titleMax: 65, descMax: 150, icon: 'i-carbon-search-locate-mirror' }, + ai: { label: 'AI Search', titleMax: 70, descMax: 200, icon: 'i-carbon-machine-learning-model' }, +} as const + +export type SearchEngine = keyof typeof ENGINE_LIMITS + +const STOPWORDS = new Set([ + 'a', + 'an', + 'the', + 'and', + 'or', + 'but', + 'in', + 'on', + 'at', + 'to', + 'for', + 'of', + 'with', + 'by', + 'is', + 'are', + 'was', + 'were', + 'be', + 'been', + 'being', + 'have', + 'has', + 'had', + 'do', + 'does', + 'did', + 'will', + 'would', + 'could', + 'should', + 'may', + 'might', + 'can', + 'shall', + 'it', + 'its', + 'this', + 'that', + 'these', + 'those', + 'i', + 'we', + 'you', + 'he', + 'she', + 'they', + 'me', + 'us', + 'him', + 'her', + 'them', + 'my', + 'our', + 'your', + 'his', + 'their', + 'from', + 'not', + 'no', + 'so', + 'if', + 'as', + 'up', + 'out', + 'about', + 'into', + 'over', + 'after', + 'how', + 'all', + 'new', + 'more', + 'when', + 'who', + 'what', + 'where', +]) + +export function extractKeywords(text: string): { word: string, count: number }[] { + const words = text.toLowerCase().replace(NON_WORD_RE, '').split(WHITESPACE_RE).filter(Boolean) + const freq = new Map<string, number>() + for (const w of words) { + if (w.length < 2 || STOPWORDS.has(w)) + continue + freq.set(w, (freq.get(w) || 0) + 1) + } + return [...freq.entries()] + .map(([word, count]) => ({ word, count })) + .sort((a, b) => b.count - a.count) +} + +export function estimatePixelWidth(text: string, fontSize: number = 16): number { + return Math.round(text.length * fontSize * 0.55) +} + +export function titleColor(length: number) { + if (length > SEO_LIMITS.TITLE_MAX_CHARS) + return 'error' + if (length < 30) + return 'warning' + return 'success' +} + +export function descColor(length: number) { + if (length > SEO_LIMITS.DESC_MAX_CHARS) + return 'error' + if (length > SEO_LIMITS.DESC_WARN_CHARS || length < 70) + return 'warning' + return 'success' +} diff --git a/packages/devtools-app/app/composables/update-check.ts b/packages/devtools-app/app/composables/update-check.ts new file mode 100644 index 000000000..8a8fc4286 --- /dev/null +++ b/packages/devtools-app/app/composables/update-check.ts @@ -0,0 +1,20 @@ +export const latestVersion = ref<string | null>(null) +export const hasUpdate = ref(false) + +let checked = false + +export function checkForUpdate(currentVersion: string) { + if (checked || !currentVersion) + return + checked = true + + fetch('https://registry.npmjs.org/unhead/latest') + .then(r => r.json()) + .then((data) => { + if (data?.version) { + latestVersion.value = data.version + hasUpdate.value = data.version !== currentVersion + } + }) + .catch(() => {}) +} diff --git a/packages/devtools-app/app/pages/docs.vue b/packages/devtools-app/app/pages/docs.vue new file mode 100644 index 000000000..073de79d2 --- /dev/null +++ b/packages/devtools-app/app/pages/docs.vue @@ -0,0 +1,3 @@ +<template> + <DevtoolsDocs url="https://unhead.unjs.io" /> +</template> diff --git a/packages/devtools-app/app/pages/identity.vue b/packages/devtools-app/app/pages/identity.vue new file mode 100644 index 000000000..efd78a155 --- /dev/null +++ b/packages/devtools-app/app/pages/identity.vue @@ -0,0 +1,475 @@ +<script setup lang="ts"> +import { isBrokenUrl } from '~/composables/link-checker' +import { state } from '~/composables/state' + +const seo = computed(() => state.value.seo) + +// Extract icons from tags +const icons = computed(() => + state.value.tags + .filter(t => t.tag === 'link' && ['icon', 'apple-touch-icon'].includes(t.props?.rel || '')) + .map(t => ({ + rel: t.props?.rel || 'icon', + href: t.props?.href || '', + type: t.props?.type, + sizes: t.props?.sizes, + media: t.props?.media, + })), +) + +const iconsByRel = computed(() => { + const groups: Record<string, typeof icons.value> = {} + for (const icon of icons.value) { + const rel = icon.rel + if (!groups[rel]) + groups[rel] = [] + groups[rel]!.push(icon) + } + return groups +}) + +const iconRelLabels: Record<string, { label: string, description: string }> = { + 'icon': { label: 'Favicon', description: 'Browser tab icons' }, + 'apple-touch-icon': { label: 'Apple Touch Icon', description: 'iOS home screen icon' }, +} + +// Extract theme colors from tags +const themeColors = computed(() => + state.value.tags + .filter(t => t.tag === 'meta' && t.props?.name === 'theme-color') + .map((t) => { + const media = t.props?.media || null + let context: 'light' | 'dark' | 'default' = 'default' + if (media?.includes('prefers-color-scheme: light')) + context = 'light' + else if (media?.includes('prefers-color-scheme: dark')) + context = 'dark' + return { color: t.props?.content || '', media, context } + }), +) + +// Color scheme meta +const colorScheme = computed(() => { + const tag = state.value.tags.find(t => t.tag === 'meta' && t.props?.name === 'color-scheme') + return tag?.props?.content || null +}) + +// Favicon for browser tab mockup +const faviconUrl = computed(() => { + const ico = icons.value.find(i => i.href?.includes('favicon.ico')) + if (ico) + return ico.href + return icons.value.find(i => i.rel === 'icon')?.href || null +}) + +// Language +const htmlLang = computed(() => { + const tag = state.value.tags.find(t => t.tag === 'htmlAttrs') + return tag?.props?.lang || null +}) +</script> + +<template> + <div class="space-y-4"> + <!-- Browser Tab Preview --> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-application-web" class="text-lg" /> + <span class="font-medium">Browser Preview</span> + </div> + </template> + + <div class="id-browser" role="img" aria-label="Browser tab preview"> + <div class="id-browser__chrome"> + <div class="id-browser__dots" aria-hidden="true"> + <span /><span /><span /> + </div> + <div class="id-browser__bar"> + <UIcon name="i-carbon-locked" class="id-browser__lock" /> + <span class="id-browser__url">{{ seo.canonical || 'localhost' }}</span> + </div> + <div class="id-browser__actions" aria-hidden="true"> + <span /><span /><span /> + </div> + </div> + <div class="id-browser__tabs"> + <div class="id-browser__tab id-browser__tab--active"> + <UIcon v-if="!faviconUrl || isBrokenUrl(faviconUrl)" name="i-carbon-earth" class="id-browser__favicon-placeholder" /> + <img v-else :src="faviconUrl" class="id-browser__favicon" alt="" width="14" height="14"> + <span class="id-browser__title">{{ seo.title || 'Untitled' }}</span> + </div> + <div class="id-browser__tab"> + <span class="id-browser__title text-muted/40">New Tab</span> + </div> + </div> + <div class="id-browser__body" aria-hidden="true" /> + </div> + + <div class="mt-3 space-y-2"> + <DevtoolsTip v-if="!seo.title"> + Add a <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">title</code> via <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">useHead()</code> to set the browser tab text. + </DevtoolsTip> + <DevtoolsTip v-if="!seo.canonical"> + Set a <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">canonical</code> URL so search engines know the preferred page address. + </DevtoolsTip> + <DevtoolsTip v-if="!htmlLang"> + Set the <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">lang</code> attribute on <code class="bg-elevated px-1 py-0.5 rounded text-[11px]"><html></code> for accessibility and SEO. + </DevtoolsTip> + </div> + </UCard> + + <!-- Icons --> + <UCard> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-image" class="text-lg" /> + <span class="font-medium">Icons</span> + </div> + <UBadge v-if="icons.length" variant="subtle" size="xs" color="neutral"> + {{ icons.length }} + </UBadge> + </div> + </template> + + <template v-if="icons.length"> + <div v-for="(groupIcons, rel) in iconsByRel" :key="rel" class="mb-5 last:mb-0"> + <div class="id-group-header"> + <span>{{ iconRelLabels[rel]?.label || rel }}</span> + <span class="id-group-count">{{ groupIcons.length }}</span> + </div> + <p class="text-xs text-muted mb-3"> + {{ iconRelLabels[rel]?.description || '' }} + </p> + <div class="id-icon-grid"> + <div v-for="icon in groupIcons" :key="icon.href" class="id-icon-card" :class="{ 'id-icon-card--broken': isBrokenUrl(icon.href) }"> + <div class="id-icon-preview"> + <template v-if="isBrokenUrl(icon.href)"> + <UIcon name="i-carbon-warning-filled" class="text-red-400 text-lg" /> + </template> + <img v-else :src="icon.href" :alt="icon.rel" class="id-icon-img" width="32" height="32" loading="lazy"> + </div> + <div class="id-icon-meta"> + <p class="text-xs font-mono truncate" :class="isBrokenUrl(icon.href) ? 'text-red-400' : 'text-muted'"> + {{ icon.href }} + </p> + <div class="id-icon-badges"> + <UBadge v-if="isBrokenUrl(icon.href)" color="error" variant="subtle" size="xs"> + Broken + </UBadge> + <UBadge v-if="icon.sizes" variant="subtle" size="xs"> + {{ icon.sizes }} + </UBadge> + <UBadge v-if="icon.type" variant="subtle" size="xs" color="neutral"> + {{ icon.type }} + </UBadge> + <UBadge v-if="icon.media" variant="subtle" size="xs" color="info"> + {{ icon.media.includes('dark') ? 'Dark' : icon.media.includes('light') ? 'Light' : icon.media }} + </UBadge> + </div> + </div> + </div> + </div> + <DevtoolsTip v-if="!groupIcons.some(i => i.sizes)" class="mt-3"> + Specify <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">sizes</code> on icons so browsers pick the best resolution. + </DevtoolsTip> + </div> + </template> + + <template v-else> + <DevtoolsEmptyState icon="i-carbon-image" title="No favicons detected"> + <template #description> + Add a <code class="bg-elevated px-1.5 py-0.5 rounded text-xs"><link rel="icon"></code> tag via <code class="bg-elevated px-1.5 py-0.5 rounded text-xs">useHead()</code> to set your favicon. + </template> + </DevtoolsEmptyState> + <DevtoolsTip class="mt-2"> + Consider adding both a <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">favicon.ico</code> and an <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">apple-touch-icon</code> for full device coverage. + </DevtoolsTip> + </template> + </UCard> + + <!-- Theme Colors --> + <UCard> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-color-palette" class="text-lg" /> + <span class="font-medium">Theme Colors</span> + </div> + <UBadge v-if="themeColors.length" variant="subtle" size="xs" color="neutral"> + {{ themeColors.length }} + </UBadge> + </div> + </template> + + <!-- Color Scheme --> + <div v-if="colorScheme" class="mb-5"> + <div class="id-group-header"> + <span>Color Scheme</span> + </div> + <div class="flex items-center gap-3"> + <div class="w-10 h-6 rounded border border-default" style="background: linear-gradient(90deg, #fff 50%, #1a1a1a 50%)" aria-hidden="true" /> + <div> + <span class="text-sm font-mono font-medium">{{ colorScheme }}</span> + <p class="text-xs text-muted"> + Supported color schemes for system preferences + </p> + </div> + </div> + </div> + + <!-- Theme Color Swatches --> + <div v-if="themeColors.length"> + <div class="id-group-header"> + <span>Theme Colors</span> + </div> + <div class="id-color-grid"> + <div v-for="(tc, i) in themeColors" :key="i" class="id-color-card"> + <div + class="id-color-card__swatch" + role="img" + :aria-label="`Color swatch: ${tc.color}`" + :style="{ backgroundColor: tc.color }" + /> + <div class="id-color-card__meta"> + <span class="text-sm font-mono font-medium">{{ tc.color }}</span> + <UBadge v-if="tc.context !== 'default'" variant="subtle" size="xs"> + {{ tc.context }} + </UBadge> + </div> + </div> + </div> + <DevtoolsTip v-if="themeColors.length === 1 && themeColors[0]?.context === 'default'" class="mt-3"> + Add separate <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">theme-color</code> values with <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">media="(prefers-color-scheme: dark)"</code> for light/dark mode support. + </DevtoolsTip> + </div> + + <template v-if="!themeColors.length && !colorScheme"> + <DevtoolsEmptyState icon="i-carbon-color-palette" title="No theme colors set"> + <template #description> + Theme colors customize the browser chrome and mobile status bar. + </template> + </DevtoolsEmptyState> + <DevtoolsTip class="mt-2"> + Add a <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">theme-color</code> meta tag via <code class="bg-elevated px-1 py-0.5 rounded text-[11px]">useHead()</code> to brand the browser UI on mobile. + </DevtoolsTip> + </template> + </UCard> + </div> +</template> + +<style scoped> +/* Browser mockup */ +.id-browser { + border-radius: 10px; + overflow: hidden; + border: 1px solid var(--ui-border); +} +.id-browser__chrome { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 0.75rem; + background: var(--ui-bg-muted); +} +.id-browser__dots { + display: flex; + gap: 5px; + flex-shrink: 0; +} +.id-browser__dots span { + width: 10px; + height: 10px; + border-radius: 50%; +} +.id-browser__dots span:nth-child(1) { background: oklch(65% 0.2 25); } +.id-browser__dots span:nth-child(2) { background: oklch(80% 0.15 85); } +.id-browser__dots span:nth-child(3) { background: oklch(70% 0.15 145); } +.id-browser__bar { + display: flex; + align-items: center; + gap: 0.375rem; + flex: 1; + padding: 0.375rem 0.75rem; + border-radius: 6px; + background: var(--ui-bg); + border: 1px solid var(--ui-border); +} +.id-browser__lock { + width: 12px; + height: 12px; + color: var(--ui-text-muted); + flex-shrink: 0; +} +.id-browser__url { + font-size: 0.6875rem; + font-family: var(--font-mono); + color: var(--ui-text-muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.id-browser__actions { + display: flex; + gap: 6px; + flex-shrink: 0; +} +.id-browser__actions span { + width: 14px; + height: 2px; + border-radius: 1px; + background: var(--ui-border); +} +.id-browser__tabs { + display: flex; + align-items: stretch; + background: var(--ui-bg-muted); + border-bottom: 1px solid var(--ui-border); + padding: 0 0.5rem; + gap: 1px; +} +.id-browser__tab { + display: flex; + align-items: center; + gap: 0.375rem; + padding: 0.375rem 0.75rem; + max-width: 180px; + border-radius: 8px 8px 0 0; + margin-bottom: -1px; + border: 1px solid transparent; + border-bottom: none; +} +.id-browser__tab--active { + background: var(--ui-bg-elevated); + border-color: var(--ui-border); +} +.id-browser__body { + height: 32px; + background: var(--ui-bg-elevated); +} +.id-browser__favicon { + width: 14px; + height: 14px; + flex-shrink: 0; + object-fit: contain; +} +.id-browser__favicon-placeholder { + width: 14px; + height: 14px; + color: var(--ui-text-muted); + flex-shrink: 0; +} +.id-browser__title { + font-size: 0.6875rem; + font-weight: 500; + color: var(--ui-text-muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* Group Headers */ +.id-group-header { + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 0.625rem; + padding-bottom: 0.375rem; + border-bottom: 1px solid var(--ui-border); +} +.id-group-header span { + font-size: 0.6875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--ui-text-muted); +} +.id-group-count { + font-family: var(--font-mono) !important; + font-size: 0.625rem !important; + font-weight: 500 !important; + text-transform: none !important; + letter-spacing: 0 !important; + padding: 0 0.375rem; + border-radius: 9999px; + background: var(--ui-bg-elevated); + border: 1px solid var(--ui-border); +} + +/* Icon Grid */ +.id-icon-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); + gap: 0.75rem; +} +.id-icon-card { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem; + border-radius: 8px; + border: 1px solid var(--ui-border); + background: var(--ui-bg-elevated); +} +.id-icon-card--broken { + border-color: oklch(65% 0.2 25 / 0.3); + background: oklch(65% 0.2 25 / 0.04); +} +.id-icon-preview { + width: 40px; + height: 40px; + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--ui-border); + background-image: linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%); + background-size: 8px 8px; + background-position: 0 0, 0 4px, 4px -4px, -4px 0px; + flex-shrink: 0; +} +.id-icon-img { + width: 32px; + height: 32px; + object-fit: contain; +} +.id-icon-meta { + min-width: 0; + flex: 1; +} +.id-icon-badges { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; + margin-top: 0.25rem; +} + +/* Color Grid */ +.id-color-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); + gap: 0.75rem; +} +.id-color-card { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.625rem; + border-radius: 8px; + border: 1px solid var(--ui-border); + background: var(--ui-bg-elevated); +} +.id-color-card__swatch { + width: 40px; + height: 40px; + border-radius: 8px; + border: 1px solid var(--ui-border); + flex-shrink: 0; +} +.id-color-card__meta { + display: flex; + flex-direction: column; + gap: 0.25rem; +} +</style> diff --git a/packages/devtools-app/app/pages/index.vue b/packages/devtools-app/app/pages/index.vue new file mode 100644 index 000000000..24afea7d6 --- /dev/null +++ b/packages/devtools-app/app/pages/index.vue @@ -0,0 +1,38 @@ +<script setup lang="ts"> +import { state } from '~/composables/state' +</script> + +<template> + <div class="space-y-4"> + <DevtoolsTagTable :tags="state.tags" title="Resolved Tags" /> + + <!-- Entries (always expanded) --> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-list" class="text-lg" /> + <span class="font-medium">Head Entries ({{ state.entries.length }})</span> + </div> + </template> + <div class="space-y-3"> + <DevtoolsHeadEntry v-for="entry in state.entries" :key="entry.id" :entry="entry" /> + <DevtoolsEmptyState v-if="!state.entries.length" icon="i-carbon-list" title="No entries detected" /> + </div> + </UCard> + + <!-- Plugins --> + <UCard v-if="state.plugins.length"> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-plug" class="text-lg" /> + <span class="font-medium">Plugins ({{ state.plugins.length }})</span> + </div> + </template> + <div class="flex flex-wrap gap-2"> + <UBadge v-for="plugin in state.plugins" :key="plugin" variant="subtle" size="xs"> + {{ plugin }} + </UBadge> + </div> + </UCard> + </div> +</template> diff --git a/packages/devtools-app/app/pages/schema.vue b/packages/devtools-app/app/pages/schema.vue new file mode 100644 index 000000000..85250a885 --- /dev/null +++ b/packages/devtools-app/app/pages/schema.vue @@ -0,0 +1,201 @@ +<script setup lang="ts"> +import { state } from '~/composables/state' +import { + analyzeNodeProperties, + formatPropertyValue, + getNestedProperty, + getNodeDescription, + getNodeType, + getSchemaIcon, + googleRichResultsRequirements, + isRichResultType, + nodeToSchemaOrgLink, +} from '~/utils/schema-validation' + +// Extract JSON-LD from script tags +const jsonLdData = computed(() => { + const jsonLdTags = state.value.tags.filter( + t => t.tag === 'script' && t.props?.type === 'application/ld+json', + ) + if (!jsonLdTags.length) + return null + + for (const tag of jsonLdTags) { + try { + return JSON.parse(tag.innerHTML || '{}') + } + catch { + continue + } + } + return null +}) + +// Extract only top-level @graph nodes (no recursive nesting) +const graphNodes = computed(() => { + const data = jsonLdData.value + if (!data) + return [] + + if (data['@graph'] && Array.isArray(data['@graph'])) { + return data['@graph'].filter((node: any) => { + if (!node || typeof node !== 'object') + return false + // Skip bare @id references + if (Object.keys(node).length === 1 && node['@id']) + return false + return !!node['@type'] + }) + } + + if (data['@type']) + return [data] + + return [] +}) + +const richResultNodes = computed(() => graphNodes.value.filter((n: any) => isRichResultType(getNodeType(n)))) + +const validationSummary = computed(() => { + let errors = 0 + let warnings = 0 + for (const node of richResultNodes.value) { + const analysis = analyzeNodeProperties(node) + errors += analysis.missingRequired.length + warnings += analysis.missingRecommended.length + } + return { errors, warnings } +}) +</script> + +<template> + <div class="space-y-4"> + <!-- No JSON-LD detected --> + <DevtoolsEmptyState v-if="!jsonLdData" icon="i-carbon-chart-relationship" title="No structured data detected"> + <template #description> + Add JSON-LD structured data via <code class="bg-elevated px-1.5 py-0.5 rounded text-xs">useSchemaOrg()</code> or <code class="bg-elevated px-1.5 py-0.5 rounded text-xs">useHead()</code> with a script tag. + </template> + </DevtoolsEmptyState> + + <template v-else> + <!-- Summary --> + <DevtoolsAlert + v-if="validationSummary.errors > 0" + variant="error" + > + <p class="font-medium"> + {{ validationSummary.errors }} missing required propert{{ validationSummary.errors > 1 ? 'ies' : 'y' }} + </p> + </DevtoolsAlert> + <DevtoolsAlert + v-else-if="validationSummary.warnings > 0" + variant="warning" + > + <p class="font-medium"> + {{ validationSummary.warnings }} missing recommended propert{{ validationSummary.warnings > 1 ? 'ies' : 'y' }} + </p> + </DevtoolsAlert> + + <!-- Node Cards --> + <UCard v-for="(node, index) in graphNodes" :key="index"> + <template #header> + <div class="flex items-center gap-2"> + <UIcon :name="getSchemaIcon(getNodeType(node))" class="text-lg" /> + <span class="font-medium text-sm">{{ getNodeType(node) }}</span> + <UBadge v-if="isRichResultType(getNodeType(node))" color="info" variant="subtle" size="xs"> + Google Supported + </UBadge> + </div> + <p class="text-xs text-muted mt-1 truncate"> + {{ getNodeDescription(node) }} + </p> + </template> + + <!-- Validation for Google-supported types --> + <div v-if="googleRichResultsRequirements[getNodeType(node)]" class="space-y-4"> + <!-- Required Properties --> + <div v-if="googleRichResultsRequirements[getNodeType(node)]?.required.length"> + <div class="text-xs font-semibold uppercase tracking-wider text-muted mb-2"> + Required + </div> + <div class="space-y-0.5"> + <div + v-for="prop in googleRichResultsRequirements[getNodeType(node)]!.required" + :key="prop" + class="flex items-center gap-2 px-2 py-1.5 rounded-md" + > + <UIcon + :name="getNestedProperty(node, prop) !== undefined ? 'i-carbon-checkmark-filled' : 'i-carbon-close-filled'" + class="text-sm shrink-0" + :class="getNestedProperty(node, prop) !== undefined ? 'text-green-500' : 'text-red-400'" + /> + <span class="text-sm font-mono">{{ prop }}</span> + <span v-if="getNestedProperty(node, prop) !== undefined" class="text-xs text-muted font-mono ml-auto truncate max-w-[200px]"> + {{ formatPropertyValue(getNestedProperty(node, prop)) }} + </span> + <UBadge v-else color="error" variant="subtle" size="xs" class="ml-auto"> + missing + </UBadge> + </div> + </div> + </div> + + <!-- Recommended Properties --> + <DevtoolsSection + v-if="googleRichResultsRequirements[getNodeType(node)]?.recommended.length" + :open="false" + icon="i-carbon-warning-filled" + :text="`Recommended (${analyzeNodeProperties(node).missingRecommended.length} missing)`" + :padding="false" + > + <div class="space-y-0.5 p-2"> + <div + v-for="prop in googleRichResultsRequirements[getNodeType(node)]!.recommended" + :key="prop" + class="flex items-center gap-2 px-2 py-1.5 rounded-md" + > + <UIcon + :name="getNestedProperty(node, prop) !== undefined ? 'i-carbon-checkmark-filled' : 'i-carbon-warning-filled'" + class="text-sm shrink-0" + :class="getNestedProperty(node, prop) !== undefined ? 'text-green-500' : 'text-amber-400'" + /> + <span class="text-sm font-mono">{{ prop }}</span> + <span v-if="getNestedProperty(node, prop) !== undefined" class="text-xs text-muted font-mono ml-auto truncate max-w-[200px]"> + {{ formatPropertyValue(getNestedProperty(node, prop)) }} + </span> + <UBadge v-else color="warning" variant="subtle" size="xs" class="ml-auto"> + missing + </UBadge> + </div> + </div> + </DevtoolsSection> + + <!-- Links --> + <div class="flex gap-3 pt-2 border-t border-default"> + <a :href="nodeToSchemaOrgLink(getNodeType(node)).schemaOrg" target="_blank" rel="noopener noreferrer" class="text-xs text-muted hover:text-default flex items-center gap-1"> + <UIcon name="i-carbon-launch" class="text-xs" /> Schema.org + </a> + <a v-if="nodeToSchemaOrgLink(getNodeType(node)).googlePage" :href="nodeToSchemaOrgLink(getNodeType(node)).googlePage!" target="_blank" rel="noopener noreferrer" class="text-xs text-muted hover:text-default flex items-center gap-1"> + <UIcon name="i-carbon-launch" class="text-xs" /> Google Docs + </a> + </div> + </div> + + <!-- JSON for all nodes --> + <div class="max-h-[400px] overflow-auto" :class="{ 'mt-4 pt-4 border-t border-default': googleRichResultsRequirements[getNodeType(node)] }"> + <OCodeBlock :code="JSON.stringify(node, null, 2)" lang="json" /> + </div> + </UCard> + + <!-- External Tools --> + <div class="flex gap-3 justify-center pt-2"> + <a href="https://validator.schema.org/" target="_blank" rel="noopener noreferrer" class="text-xs text-muted hover:text-default flex items-center gap-1"> + <UIcon name="i-carbon-launch" class="text-xs" /> Schema.org Validator + </a> + <a href="https://search.google.com/test/rich-results" target="_blank" rel="noopener noreferrer" class="text-xs text-muted hover:text-default flex items-center gap-1"> + <UIcon name="i-carbon-launch" class="text-xs" /> Google Rich Results Test + </a> + </div> + </template> + </div> +</template> diff --git a/packages/devtools-app/app/pages/scripts.vue b/packages/devtools-app/app/pages/scripts.vue new file mode 100644 index 000000000..aa059a3ec --- /dev/null +++ b/packages/devtools-app/app/pages/scripts.vue @@ -0,0 +1,277 @@ +<script setup lang="ts"> +import { state } from '~/composables/state' + +const PROTOCOL_RE = /^https?:\/\// + +const scripts = computed(() => state.value.scripts || []) + +type StatusFilter = 'all' | 'loaded' | 'loading' | 'awaitingLoad' | 'error' | 'removed' +const statusFilter = ref<StatusFilter>('all') + +const scriptCounts = computed(() => { + const counts: Record<string, number> = { all: scripts.value.length } + for (const s of scripts.value) { + counts[s.status] = (counts[s.status] || 0) + 1 + } + return counts +}) + +const filteredScripts = computed(() => { + if (statusFilter.value === 'all') + return scripts.value + return scripts.value.filter(s => s.status === statusFilter.value) +}) + +// Fetch script sizes via HEAD requests +const scriptSizes = ref<Record<string, string>>({}) + +async function fetchScriptSize(src: string) { + if (!src || scriptSizes.value[src]) + return + try { + const res = await fetch(src, { method: 'HEAD' }) + const len = res.headers.get('content-length') + if (len) { + scriptSizes.value[src] = formatBytes(Number.parseInt(len, 10)) + } + } + catch { + // silently ignore CORS or network errors + } +} + +function formatBytes(bytes: number): string { + if (bytes < 1024) + return `${bytes} B` + if (bytes < 1024 * 1024) + return `${(bytes / 1024).toFixed(1)} kB` + return `${(bytes / (1024 * 1024)).toFixed(1)} MB` +} + +// Fetch sizes when scripts change +watch(scripts, (list) => { + for (const s of list) { + if (s.src) + fetchScriptSize(s.src) + } +}, { immediate: true }) + +function statusColor(status: string) { + if (status === 'loaded') + return 'success' + if (status === 'loading') + return 'info' + if (status === 'error') + return 'error' + if (status === 'awaitingLoad') + return 'warning' + if (status === 'removed') + return 'neutral' + return 'neutral' +} + +function statusDotClass(status: string) { + if (status === 'loaded') + return 'bg-green-500' + if (status === 'loading') + return 'bg-purple-500 motion-safe:animate-pulse' + if (status === 'error') + return 'bg-red-500' + if (status === 'awaitingLoad') + return 'bg-amber-400' + if (status === 'removed') + return 'bg-neutral-400' + return 'bg-neutral-400' +} + +function cleanUrl(src: string): string { + return src.replace(PROTOCOL_RE, '') +} + +function faviconUrl(src: string): string | null { + try { + const url = new URL(src) + return `https://www.google.com/s2/favicons?domain=${url.hostname}` + } + catch { + return null + } +} + +function formatTimestamp(ts: number): string { + const date = new Date(ts) + return date.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit', second: '2-digit', fractionalSecondDigits: 3 }) +} + +function timeSinceFirst(events: { type: string, timestamp: number }[], ts: number): string { + if (!events.length) + return '' + const first = events[0]!.timestamp + const diff = ts - first + if (diff < 1000) + return `+${diff}ms` + return `+${(diff / 1000).toFixed(1)}s` +} + +const availableFilters = computed(() => { + const filters: { key: StatusFilter, label: string }[] = [ + { key: 'all', label: 'All' }, + ] + if (scriptCounts.value.loaded) + filters.push({ key: 'loaded', label: 'Loaded' }) + if (scriptCounts.value.loading) + filters.push({ key: 'loading', label: 'Loading' }) + if (scriptCounts.value.awaitingLoad) + filters.push({ key: 'awaitingLoad', label: 'Awaiting' }) + if (scriptCounts.value.error) + filters.push({ key: 'error', label: 'Error' }) + if (scriptCounts.value.removed) + filters.push({ key: 'removed', label: 'Removed' }) + return filters +}) + +const expandedEvents = ref<Record<string, boolean>>({}) + +function toggleEvents(id: string) { + expandedEvents.value = { ...expandedEvents.value, [id]: !expandedEvents.value[id] } +} +</script> + +<template> + <div class="space-y-4"> + <!-- Empty state --> + <DevtoolsEmptyState v-if="!scripts.length" icon="i-carbon-script" title="No scripts detected"> + <template #description> + Use <code class="bg-elevated px-1.5 py-0.5 rounded text-xs">useScript()</code> to manage third-party scripts with loading strategies, triggers, and status tracking. + </template> + </DevtoolsEmptyState> + + <template v-else> + <!-- Filter bar --> + <div class="flex flex-wrap gap-1.5"> + <UBadge + v-for="f in availableFilters" + :key="f.key" + :color="statusFilter === f.key ? 'primary' : 'neutral'" + :variant="statusFilter === f.key ? 'solid' : 'subtle'" + size="xs" + class="cursor-pointer" + @click="statusFilter = f.key" + > + {{ f.label }} + <span class="ml-1 opacity-70 tabular-nums">{{ scriptCounts[f.key] || 0 }}</span> + </UBadge> + </div> + + <!-- Script cards --> + <UCard v-for="script in filteredScripts" :key="script.id" class="overflow-hidden"> + <!-- Header: favicon + clean URL + status --> + <div class="flex items-center justify-between gap-3"> + <div class="flex items-center gap-2.5 min-w-0"> + <div class="w-7 h-7 rounded-lg bg-elevated border border-default flex items-center justify-center flex-shrink-0 overflow-hidden"> + <img + v-if="script.src && faviconUrl(script.src)" + :src="faviconUrl(script.src)!" + class="w-4 h-4 rounded-sm" + alt="" + > + <UIcon v-else name="i-carbon-script" class="text-sm text-muted" /> + </div> + <p class="text-sm font-mono text-highlighted truncate"> + {{ script.src ? cleanUrl(script.src) : '(inline)' }} + </p> + </div> + <UBadge :color="statusColor(script.status)" variant="subtle" size="xs" class="flex-shrink-0"> + <span class="flex items-center gap-1"> + <span class="w-1.5 h-1.5 rounded-full" :class="statusDotClass(script.status)" /> + {{ script.status }} + </span> + </UBadge> + </div> + + <!-- Metric badges --> + <div class="flex flex-wrap gap-1.5 mt-3"> + <DevtoolsMetric + v-if="script.src && scriptSizes[script.src]" + icon="i-carbon-data-volume" + :value="scriptSizes[script.src]!" + label="size" + /> + <DevtoolsMetric + v-if="script.warmupStrategy" + icon="i-carbon-flash" + :value="script.warmupStrategy" + label="warmup" + /> + <DevtoolsMetric + v-if="script.fetchpriority" + icon="i-carbon-meter-alt" + :value="script.fetchpriority" + label="priority" + /> + <DevtoolsMetric + v-if="script.defer" + icon="i-carbon-time" + value="defer" + /> + <DevtoolsMetric + v-if="script.async" + icon="i-carbon-flash-filled" + value="async" + /> + <DevtoolsMetric + v-if="script.crossorigin" + icon="i-carbon-locked" + :value="script.crossorigin" + label="CORS" + /> + </div> + + <!-- Events (collapsible) --> + <div v-if="script.events?.length" class="border-t border-default mt-3 -mx-4 -mb-4"> + <button + class="flex items-center gap-1.5 px-3 py-2 text-xs font-medium text-muted hover:text-highlighted w-full" + @click="toggleEvents(script.id)" + > + <UIcon + name="i-carbon-chevron-right" + class="text-xs transition-transform" + :class="expandedEvents[script.id] ? 'rotate-90' : ''" + /> + Events + <span class="text-[9px] px-1 py-px rounded-full bg-elevated tabular-nums font-mono"> + {{ script.events.length }} + </span> + </button> + + <div v-if="expandedEvents[script.id]" class="px-3 pb-3"> + <div class="space-y-1"> + <div + v-for="(event, idx) in script.events" + :key="idx" + class="flex items-center gap-2 py-1 px-2 rounded hover:bg-elevated text-xs" + > + <span class="font-mono text-muted tabular-nums text-[10px] w-20 flex-shrink-0"> + {{ formatTimestamp(event.timestamp) }} + </span> + <span + v-if="idx > 0" + class="font-mono text-muted text-[10px] w-14 flex-shrink-0" + > + {{ timeSinceFirst(script.events, event.timestamp) }} + </span> + <span v-else class="w-14 flex-shrink-0" /> + <UBadge :color="statusColor(event.type)" variant="subtle" size="xs"> + <span class="flex items-center gap-1"> + <span class="w-1.5 h-1.5 rounded-full" :class="statusDotClass(event.type)" /> + {{ event.type }} + </span> + </UBadge> + </div> + </div> + </div> + </div> + </UCard> + </template> + </div> +</template> diff --git a/packages/devtools-app/app/pages/serp.vue b/packages/devtools-app/app/pages/serp.vue new file mode 100644 index 000000000..267550a90 --- /dev/null +++ b/packages/devtools-app/app/pages/serp.vue @@ -0,0 +1,1057 @@ +<script setup lang="ts"> +import type { SearchEngine } from '~/composables/tools' +import { state } from '~/composables/state' +import { ENGINE_LIMITS, estimatePixelWidth, extractKeywords, descColor as getDescColor, titleColor as getTitleColor, SEO_LIMITS } from '~/composables/tools' +import { + analyzeNodeProperties, + asArray, + extractSchemaNodes, + getNodeDescription, + getNodeType, + getSchemaIcon, + isRichResultType, + nodeToSchemaOrgLink, +} from '~/utils/schema-validation' + +const DURATION_RE = /PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?/ + +const seo = computed(() => state.value.seo) + +const titleLen = computed(() => seo.value.title?.length || 0) +const descLen = computed(() => seo.value.description?.length || 0) +const tColor = computed(() => getTitleColor(titleLen.value)) +const dColor = computed(() => getDescColor(descLen.value)) + +// Mobile / Desktop toggle +const previewMode = ref<'desktop' | 'mobile'>('desktop') + +// Title template +const titleTemplate = computed(() => state.value.titleTemplate) +const templateParams = computed(() => state.value.templateParams) +const separator = computed(() => state.value.separator || '|') +const hasTitleTemplate = computed(() => !!titleTemplate.value) + +// SEO checklist +const checklist = computed(() => { + const items: { label: string, status: 'success' | 'warning' | 'error', detail: string }[] = [] + + // Title + if (!seo.value.title) + items.push({ label: 'Title', status: 'error', detail: 'Missing' }) + else if (titleLen.value > SEO_LIMITS.TITLE_MAX_CHARS) + items.push({ label: 'Title', status: 'error', detail: `Too long (${titleLen.value}/${SEO_LIMITS.TITLE_MAX_CHARS})` }) + else if (titleLen.value < 30) + items.push({ label: 'Title', status: 'warning', detail: `Too short (${titleLen.value} chars)` }) + else + items.push({ label: 'Title', status: 'success', detail: `${titleLen.value} chars` }) + + // Description + if (!seo.value.description) + items.push({ label: 'Description', status: 'error', detail: 'Missing' }) + else if (descLen.value > SEO_LIMITS.DESC_MAX_CHARS) + items.push({ label: 'Description', status: 'error', detail: `Too long (${descLen.value}/${SEO_LIMITS.DESC_MAX_CHARS})` }) + else if (descLen.value < 70) + items.push({ label: 'Description', status: 'warning', detail: `Too short (${descLen.value} chars)` }) + else + items.push({ label: 'Description', status: 'success', detail: `${descLen.value} chars` }) + + // Canonical + if (!seo.value.canonical) + items.push({ label: 'Canonical URL', status: 'warning', detail: 'Not set' }) + else + items.push({ label: 'Canonical URL', status: 'success', detail: seo.value.canonical }) + + // Robots + if (!seo.value.robots) + items.push({ label: 'Robots', status: 'warning', detail: 'Not set (defaults to index, follow)' }) + else if (seo.value.robots.includes('noindex')) + items.push({ label: 'Robots', status: 'error', detail: `noindex detected: ${seo.value.robots}` }) + else + items.push({ label: 'Robots', status: 'success', detail: seo.value.robots }) + + // OG Title + if (!seo.value.ogTitle) + items.push({ label: 'og:title', status: 'warning', detail: 'Not set (falls back to title)' }) + else + items.push({ label: 'og:title', status: 'success', detail: seo.value.ogTitle }) + + // OG Description + if (!seo.value.ogDescription) + items.push({ label: 'og:description', status: 'warning', detail: 'Not set (falls back to description)' }) + else + items.push({ label: 'og:description', status: 'success', detail: seo.value.ogDescription }) + + // OG Image + if (!seo.value.ogImage) + items.push({ label: 'og:image', status: 'error', detail: 'Missing' }) + else + items.push({ label: 'og:image', status: 'success', detail: seo.value.ogImage }) + + return items +}) + +const checklistScore = computed(() => { + const total = checklist.value.length + const passed = checklist.value.filter(i => i.status === 'success').length + return { passed, total } +}) + +// OG vs SERP comparison +const ogMismatches = computed(() => { + const mismatches: { field: string, serp: string, og: string }[] = [] + if (seo.value.ogTitle && seo.value.title && seo.value.ogTitle !== seo.value.title) + mismatches.push({ field: 'Title', serp: seo.value.title, og: seo.value.ogTitle }) + if (seo.value.ogDescription && seo.value.description && seo.value.ogDescription !== seo.value.description) + mismatches.push({ field: 'Description', serp: seo.value.description, og: seo.value.ogDescription }) + return mismatches +}) + +// Keywords +const keywords = computed(() => { + const combined = `${seo.value.title || ''} ${seo.value.description || ''}` + return extractKeywords(combined).slice(0, 10) +}) + +// Multi-engine +const engines = computed(() => { + return (Object.keys(ENGINE_LIMITS) as SearchEngine[]).map((key) => { + const engine = ENGINE_LIMITS[key] + const titleStatus = titleLen.value > engine.titleMax ? 'error' : titleLen.value < 30 ? 'warning' : 'success' + const descStatus = descLen.value > engine.descMax ? 'error' : descLen.value < 70 ? 'warning' : 'success' + return { + key, + ...engine, + titleStatus, + descStatus, + titleLen: titleLen.value, + descLen: descLen.value, + } + }) +}) + +function lengthStatusLabel(color: string): string { + if (color === 'success') + return 'Good' + if (color === 'warning') + return 'Needs work' + return 'Too long' +} + +function checkIcon(status: string): string { + if (status === 'success') + return 'i-carbon-checkmark-filled' + if (status === 'warning') + return 'i-carbon-warning-filled' + return 'i-carbon-close-filled' +} + +function checkIconColor(status: string): string { + if (status === 'success') + return 'text-green-500' + if (status === 'warning') + return 'text-amber-400' + return 'text-red-400' +} + +// Rich Results from JSON-LD +const jsonLdData = computed(() => { + const jsonLdTags = state.value.tags.filter( + t => t.tag === 'script' && t.props?.type === 'application/ld+json', + ) + if (!jsonLdTags.length) + return null + for (const tag of jsonLdTags) { + try { + return JSON.parse(tag.innerHTML || '{}') + } + catch { + continue + } + } + return null +}) + +const richResultNodes = computed(() => { + if (!jsonLdData.value) + return [] + const nodes = extractSchemaNodes(jsonLdData.value) + return nodes.filter(n => isRichResultType(getNodeType(n))) +}) + +// Build rich result preview data for each node type +interface RichPreview { + type: string + icon: string + label: string + features: { icon: string, text: string }[] + rating?: { value: number, count: number, max: number } + price?: string + breadcrumbs?: string[] + faqItems?: { question: string }[] + eventDate?: string + eventLocation?: string + videoThumbnail?: string + videoDuration?: string + eligibility: 'eligible' | 'partial' | 'ineligible' + missingRequired: string[] + documentationUrl?: string +} + +const richPreviews = computed<RichPreview[]>(() => { + return richResultNodes.value.map((node) => { + const type = getNodeType(node) + const analysis = analyzeNodeProperties(node) + const links = nodeToSchemaOrgLink(type) + const eligibility = analysis.missingRequired.length > 0 + ? 'ineligible' + : analysis.missingRecommended.length > 0 + ? 'partial' + : 'eligible' + + const base: RichPreview = { + type, + icon: getSchemaIcon(type), + label: getNodeDescription(node), + features: [], + eligibility, + missingRequired: analysis.missingRequired, + documentationUrl: links.googlePage || undefined, + } + + // Extract rating if present (shared across many types) + const rating = node.aggregateRating || node.reviewRating + if (rating) { + base.rating = { + value: Number(rating.ratingValue || 0), + count: Number(rating.ratingCount || rating.reviewCount || 0), + max: Number(rating.bestRating || 5), + } + } + + switch (type) { + case 'Product': { + const offer = node.offers?.[0] || node.offers || {} + if (offer.price) + base.price = `${offer.priceCurrency || '$'}${offer.price}` + if (offer.availability) + base.features.push({ icon: 'i-carbon-delivery-truck', text: offer.availability.replace('https://schema.org/', '') }) + break + } + case 'Recipe': { + if (node.totalTime || node.cookTime) + base.features.push({ icon: 'i-carbon-time', text: formatDuration(node.totalTime || node.cookTime) }) + if (node.recipeYield) + base.features.push({ icon: 'i-carbon-restaurant', text: `Serves ${node.recipeYield}` }) + if (node.nutrition?.calories) + base.features.push({ icon: 'i-carbon-meter', text: node.nutrition.calories }) + break + } + case 'Event': { + if (node.startDate) + base.eventDate = formatEventDate(node.startDate) + if (node.location?.name || node.location?.address?.addressLocality) + base.eventLocation = node.location.name || node.location.address.addressLocality + break + } + case 'FAQPage': { + const entities = asArray(node.mainEntity || []) + base.faqItems = entities.slice(0, 4).map((q: any) => ({ + question: q.name || q.text || 'Question', + })) + break + } + case 'BreadcrumbList': { + const items = asArray(node.itemListElement || []) + .sort((a: any, b: any) => (a.position || 0) - (b.position || 0)) + base.breadcrumbs = items.map((i: any) => i.name || i.item?.name || 'Page').slice(0, 5) + break + } + case 'VideoObject': { + base.videoThumbnail = node.thumbnailUrl + if (node.duration) + base.videoDuration = formatDuration(node.duration) + break + } + case 'Article': + case 'NewsArticle': + case 'BlogPosting': { + if (node.datePublished) + base.features.push({ icon: 'i-carbon-calendar', text: formatEventDate(node.datePublished) }) + if (node.author?.name) + base.features.push({ icon: 'i-carbon-user', text: node.author.name }) + break + } + case 'JobPosting': { + if (node.hiringOrganization?.name) + base.features.push({ icon: 'i-carbon-building', text: node.hiringOrganization.name }) + if (node.baseSalary?.value) + base.features.push({ icon: 'i-carbon-currency', text: `${node.baseSalary.currency || ''}${node.baseSalary.value}` }) + if (node.jobLocation?.address?.addressLocality) + base.features.push({ icon: 'i-carbon-location', text: node.jobLocation.address.addressLocality }) + break + } + case 'LocalBusiness': + case 'Restaurant': { + if (node.address?.streetAddress || node.address?.addressLocality) + base.features.push({ icon: 'i-carbon-location', text: node.address.streetAddress || node.address.addressLocality }) + if (node.telephone) + base.features.push({ icon: 'i-carbon-phone', text: node.telephone }) + if (node.priceRange) + base.features.push({ icon: 'i-carbon-currency', text: node.priceRange }) + break + } + case 'SoftwareApplication': { + if (node.applicationCategory) + base.features.push({ icon: 'i-carbon-category', text: node.applicationCategory }) + const appOffer = node.offers?.[0] || node.offers || {} + if (appOffer.price) + base.price = appOffer.price === '0' ? 'Free' : `${appOffer.priceCurrency || '$'}${appOffer.price}` + break + } + case 'Course': { + if (node.provider?.name) + base.features.push({ icon: 'i-carbon-education', text: node.provider.name }) + break + } + } + return base + }) +}) + +function formatDuration(iso: string): string { + if (!iso) + return '' + const match = iso.match(DURATION_RE) + if (!match) + return iso + const parts = [] + if (match[1]) + parts.push(`${match[1]}h`) + if (match[2]) + parts.push(`${match[2]}m`) + if (match[3] && !match[1]) + parts.push(`${match[3]}s`) + return parts.join(' ') || iso +} + +function formatEventDate(dateStr: string): string { + try { + return new Date(dateStr).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) + } + catch { + return dateStr + } +} + +function renderStars(value: number, max: number = 5): string { + const filled = Math.round(value) + return '★'.repeat(Math.min(filled, max)) + '☆'.repeat(Math.max(0, max - filled)) +} +</script> + +<template> + <div class="space-y-4"> + <!-- SERP Preview --> + <UCard> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-search" class="text-lg" /> + <span class="font-medium">Google Search Preview</span> + </div> + <div class="flex items-center gap-1"> + <button + class="px-2 py-1 text-xs rounded" + :class="previewMode === 'desktop' ? 'bg-elevated font-medium' : 'text-muted'" + @click="previewMode = 'desktop'" + > + <UIcon name="i-carbon-laptop" class="text-sm" /> + </button> + <button + class="px-2 py-1 text-xs rounded" + :class="previewMode === 'mobile' ? 'bg-elevated font-medium' : 'text-muted'" + @click="previewMode = 'mobile'" + > + <UIcon name="i-carbon-mobile" class="text-sm" /> + </button> + </div> + </div> + </template> + <div class="flex justify-center"> + <div + class="serp-preview-container transition-all duration-300" + :class="previewMode === 'mobile' ? 'serp-preview-container--mobile' : ''" + > + <div class="serp-preview"> + <div class="flex items-center gap-3 mb-2"> + <div class="w-[26px] h-[26px] rounded-full flex items-center justify-center bg-neutral-100 dark:bg-neutral-800"> + <UIcon name="i-carbon-earth" class="w-3.5 h-3.5 text-neutral-400" /> + </div> + <!-- Breadcrumbs replace URL when available --> + <div v-if="richPreviews.find(r => r.breadcrumbs)" class="serp-rich-breadcrumbs"> + <template v-for="(crumb, ci) in richPreviews.find(r => r.breadcrumbs)!.breadcrumbs" :key="ci"> + <span>{{ crumb }}</span> + <UIcon v-if="ci < richPreviews.find(r => r.breadcrumbs)!.breadcrumbs!.length - 1" name="i-carbon-chevron-right" class="text-[10px] mx-0.5 opacity-50" /> + </template> + </div> + <div v-else class="text-xs text-neutral-600 dark:text-[#bdc1c6] leading-tight truncate"> + {{ seo.canonical || 'example.com' }} + </div> + </div> + <h3 class="serp-preview__title" :class="previewMode === 'mobile' ? 'serp-preview__title--mobile' : ''"> + {{ seo.title || 'No title found' }} + </h3> + <p class="serp-preview__description"> + {{ seo.description || 'No description found' }} + </p> + + <!-- Inline rich result enhancements --> + <template v-for="(preview, pi) in richPreviews" :key="`inline-${pi}`"> + <div v-if="preview.rating" class="flex items-center gap-1.5 mt-1"> + <span class="serp-rich-stars">{{ renderStars(preview.rating.value, preview.rating.max) }}</span> + <span class="text-xs serp-rich-rating-text">{{ preview.rating.value }}/{{ preview.rating.max }}</span> + <span v-if="preview.rating.count" class="text-xs serp-rich-rating-text"> + ({{ preview.rating.count.toLocaleString() }} review{{ preview.rating.count !== 1 ? 's' : '' }}) + </span> + <span v-if="preview.price" class="text-xs serp-rich-rating-text ml-1">· {{ preview.price }}</span> + </div> + <div v-else-if="preview.price" class="text-xs serp-rich-rating-text mt-1"> + {{ preview.price }} + </div> + <div v-if="preview.eventDate || preview.eventLocation" class="flex items-center gap-2 text-xs serp-rich-detail mt-1"> + <span v-if="preview.eventDate">{{ preview.eventDate }}</span> + <span v-if="preview.eventDate && preview.eventLocation" class="opacity-40">·</span> + <span v-if="preview.eventLocation">{{ preview.eventLocation }}</span> + </div> + <div v-if="preview.features.length && !preview.rating" class="flex flex-wrap items-center gap-2 text-xs serp-rich-detail mt-1"> + <template v-for="(feat, fi) in preview.features" :key="fi"> + <span class="flex items-center gap-1"> + <UIcon :name="feat.icon" class="text-xs opacity-60" /> + {{ feat.text }} + </span> + <span v-if="fi < preview.features.length - 1" class="opacity-30">·</span> + </template> + </div> + <div v-if="preview.faqItems?.length" class="serp-rich-faq mt-2"> + <div v-for="(faq, fi) in preview.faqItems" :key="fi" class="serp-rich-faq-item"> + <UIcon name="i-carbon-chevron-down" class="text-xs shrink-0 opacity-60" /> + <span class="text-xs">{{ faq.question }}</span> + </div> + </div> + </template> + </div> + </div> + </div> + </UCard> + + <!-- Rich Results Preview --> + <UCard v-if="richPreviews.length"> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-star" class="text-lg" /> + <span class="font-medium">Rich Results Preview</span> + </div> + <UBadge + :color="richPreviews.every(r => r.eligibility === 'eligible') ? 'success' : richPreviews.some(r => r.eligibility === 'ineligible') ? 'error' : 'warning'" + variant="subtle" + size="xs" + > + {{ richPreviews.filter(r => r.eligibility === 'eligible').length }}/{{ richPreviews.length }} eligible + </UBadge> + </div> + </template> + <div class="space-y-3"> + <div v-for="(preview, i) in richPreviews" :key="i" class="serp-rich-result"> + <!-- Header: type + eligibility --> + <div class="flex items-center justify-between mb-2"> + <div class="flex items-center gap-2"> + <UIcon :name="preview.icon" class="text-sm" /> + <span class="text-xs font-medium">{{ preview.type }}</span> + </div> + <div class="flex items-center gap-2"> + <UBadge + :color="preview.eligibility === 'eligible' ? 'success' : preview.eligibility === 'partial' ? 'warning' : 'error'" + variant="subtle" + size="xs" + > + {{ preview.eligibility === 'eligible' ? 'Eligible' : preview.eligibility === 'partial' ? 'Partial' : 'Missing required' }} + </UBadge> + <a v-if="preview.documentationUrl" :href="preview.documentationUrl" target="_blank" rel="noopener noreferrer" class="text-muted hover:text-default"> + <UIcon name="i-carbon-launch" class="text-xs" /> + </a> + </div> + </div> + + <!-- Missing required warning --> + <DevtoolsAlert v-if="preview.missingRequired.length" variant="error" class="mb-2"> + Missing required: <code v-for="prop in preview.missingRequired" :key="prop" class="bg-elevated px-1 py-0.5 rounded text-xs mx-0.5">{{ prop }}</code> + </DevtoolsAlert> + + <!-- Visual Preview Mockup --> + <div class="serp-rich-mockup"> + <!-- Breadcrumbs (replaces URL in the SERP result) --> + <div v-if="preview.breadcrumbs" class="serp-rich-breadcrumbs"> + <template v-for="(crumb, ci) in preview.breadcrumbs" :key="ci"> + <span>{{ crumb }}</span> + <UIcon v-if="ci < preview.breadcrumbs.length - 1" name="i-carbon-chevron-right" class="text-[10px] mx-0.5 opacity-50" /> + </template> + </div> + + <!-- Star Rating --> + <div v-if="preview.rating" class="flex items-center gap-1.5"> + <span class="serp-rich-stars">{{ renderStars(preview.rating.value, preview.rating.max) }}</span> + <span class="text-xs serp-rich-rating-text">{{ preview.rating.value }}/{{ preview.rating.max }}</span> + <span v-if="preview.rating.count" class="text-xs serp-rich-rating-text"> + ({{ preview.rating.count.toLocaleString() }} review{{ preview.rating.count !== 1 ? 's' : '' }}) + </span> + <span v-if="preview.price" class="text-xs serp-rich-rating-text ml-1">· {{ preview.price }}</span> + </div> + + <!-- Price without rating --> + <div v-else-if="preview.price" class="text-xs serp-rich-rating-text"> + {{ preview.price }} + </div> + + <!-- Event details --> + <div v-if="preview.eventDate || preview.eventLocation" class="flex items-center gap-2 text-xs serp-rich-detail"> + <span v-if="preview.eventDate">{{ preview.eventDate }}</span> + <span v-if="preview.eventDate && preview.eventLocation" class="opacity-40">·</span> + <span v-if="preview.eventLocation">{{ preview.eventLocation }}</span> + </div> + + <!-- Video thumbnail --> + <div v-if="preview.videoThumbnail" class="flex items-center gap-2 mt-1"> + <div class="serp-rich-video-thumb"> + <img :src="preview.videoThumbnail" :alt="preview.label" class="w-full h-full object-cover rounded"> + <div class="serp-rich-video-play"> + <UIcon name="i-carbon-play-filled" class="text-white text-sm" /> + </div> + <span v-if="preview.videoDuration" class="serp-rich-video-duration">{{ preview.videoDuration }}</span> + </div> + </div> + + <!-- FAQ items --> + <div v-if="preview.faqItems?.length" class="serp-rich-faq"> + <div v-for="(faq, fi) in preview.faqItems" :key="fi" class="serp-rich-faq-item"> + <UIcon name="i-carbon-chevron-down" class="text-xs shrink-0 opacity-60" /> + <span class="text-xs">{{ faq.question }}</span> + </div> + <div v-if="richResultNodes.find(n => getNodeType(n) === 'FAQPage')?.mainEntity?.length > 4" class="text-xs serp-rich-rating-text mt-1"> + + {{ asArray(richResultNodes.find(n => getNodeType(n) === 'FAQPage')?.mainEntity || []).length - 4 }} more questions + </div> + </div> + + <!-- Generic features (articles, jobs, businesses, etc.) --> + <div v-if="preview.features.length" class="flex flex-wrap items-center gap-2 text-xs serp-rich-detail"> + <template v-for="(feat, fi) in preview.features" :key="fi"> + <span class="flex items-center gap-1"> + <UIcon :name="feat.icon" class="text-xs opacity-60" /> + {{ feat.text }} + </span> + <span v-if="fi < preview.features.length - 1" class="opacity-30">·</span> + </template> + </div> + </div> + </div> + </div> + </UCard> + + <!-- Title & Description lengths --> + <div class="grid md:grid-cols-2 gap-4"> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-text-short-paragraph" class="text-lg" /> + <span class="font-medium">Title</span> + </div> + </template> + <div class="space-y-3"> + <div class="flex items-center justify-between"> + <span class="serp-length-status" :class="`serp-length-status--${tColor}`"> + {{ lengthStatusLabel(tColor) }} + </span> + <span class="text-xs font-mono text-muted"> + {{ titleLen }}/{{ SEO_LIMITS.TITLE_MAX_CHARS }} chars · ~{{ estimatePixelWidth(seo.title || '') }}px + </span> + </div> + <div + class="serp-progress-track" + role="progressbar" + :aria-valuenow="titleLen" + :aria-valuemin="0" + :aria-valuemax="SEO_LIMITS.TITLE_MAX_CHARS" + :aria-label="`Title length: ${titleLen} of ${SEO_LIMITS.TITLE_MAX_CHARS} characters`" + > + <div + class="serp-progress-fill" + :class="`serp-progress-fill--${tColor}`" + :style="{ width: `${Math.min(100, (titleLen / SEO_LIMITS.TITLE_MAX_CHARS) * 100)}%` }" + /> + <div class="serp-progress-marker" :style="{ left: `${(30 / SEO_LIMITS.TITLE_MAX_CHARS) * 100}%` }" /> + </div> + <p class="text-xs text-muted truncate"> + {{ seo.title || 'Not set' }} + </p> + </div> + </UCard> + + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-text-align-left" class="text-lg" /> + <span class="font-medium">Description</span> + </div> + </template> + <div class="space-y-3"> + <div class="flex items-center justify-between"> + <span class="serp-length-status" :class="`serp-length-status--${dColor}`"> + {{ lengthStatusLabel(dColor) }} + </span> + <span class="text-xs font-mono text-muted"> + {{ descLen }}/{{ SEO_LIMITS.DESC_MAX_CHARS }} chars + </span> + </div> + <div + class="serp-progress-track" + role="progressbar" + :aria-valuenow="descLen" + :aria-valuemin="0" + :aria-valuemax="SEO_LIMITS.DESC_MAX_CHARS" + :aria-label="`Description length: ${descLen} of ${SEO_LIMITS.DESC_MAX_CHARS} characters`" + > + <div + class="serp-progress-fill" + :class="`serp-progress-fill--${dColor}`" + :style="{ width: `${Math.min(100, (descLen / SEO_LIMITS.DESC_MAX_CHARS) * 100)}%` }" + /> + <div class="serp-progress-marker" :style="{ left: `${(SEO_LIMITS.DESC_WARN_CHARS / SEO_LIMITS.DESC_MAX_CHARS) * 100}%` }" /> + </div> + <p class="text-xs text-muted truncate"> + {{ seo.description || 'Not set' }} + </p> + </div> + </UCard> + </div> + + <!-- SEO Checklist --> + <UCard> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-task" class="text-lg" /> + <span class="font-medium">SEO Checklist</span> + </div> + <UBadge + :color="checklistScore.passed === checklistScore.total ? 'success' : 'warning'" + variant="subtle" + size="xs" + > + {{ checklistScore.passed }}/{{ checklistScore.total }} passed + </UBadge> + </div> + </template> + <div class="space-y-1"> + <div + v-for="item in checklist" + :key="item.label" + class="flex items-center gap-2 px-2 py-1.5 rounded-md hover:bg-elevated transition-colors" + > + <UIcon :name="checkIcon(item.status)" :class="checkIconColor(item.status)" class="text-sm shrink-0" /> + <span class="text-sm font-mono">{{ item.label }}</span> + <span class="text-xs text-muted ml-auto truncate max-w-[250px]">{{ item.detail }}</span> + </div> + </div> + </UCard> + + <!-- Title Template & Meta Info --> + <div class="grid md:grid-cols-2 gap-4"> + <!-- Title Template --> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-string-text" class="text-lg" /> + <span class="font-medium">Title Template</span> + </div> + </template> + <div v-if="hasTitleTemplate" class="space-y-3"> + <div class="space-y-1"> + <div class="flex items-center gap-2 px-2 py-1.5 rounded-md bg-elevated"> + <span class="text-xs text-muted shrink-0">Template</span> + <span class="text-sm font-mono ml-auto truncate">{{ titleTemplate }}</span> + </div> + <div class="flex items-center gap-2 px-2 py-1.5 rounded-md"> + <span class="text-xs text-muted shrink-0">Separator</span> + <code class="text-sm font-mono ml-auto bg-elevated px-1.5 py-0.5 rounded">{{ separator }}</code> + </div> + <div v-if="templateParams && Object.keys(templateParams).length" class="flex items-center gap-2 px-2 py-1.5 rounded-md bg-elevated"> + <span class="text-xs text-muted shrink-0">Params</span> + <span class="text-xs font-mono ml-auto truncate max-w-[200px]">{{ JSON.stringify(templateParams) }}</span> + </div> + </div> + <div class="border-t border-default pt-2"> + <span class="text-xs text-muted">Resolved title</span> + <p class="text-sm font-mono mt-1"> + {{ seo.title || 'Not set' }} + </p> + </div> + </div> + <div v-else class="text-sm text-muted"> + No title template configured. The title is set directly. + </div> + </UCard> + + <!-- Canonical & Robots --> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-settings-adjust" class="text-lg" /> + <span class="font-medium">Crawl Settings</span> + </div> + </template> + <DevtoolsKeyValue + :items="[ + { key: 'canonical', value: seo.canonical || undefined, copyable: true }, + { key: 'robots', value: seo.robots || undefined }, + ]" + striped + /> + <DevtoolsAlert + v-if="seo.robots?.includes('noindex')" + variant="error" + icon="i-carbon-warning" + class="mt-3" + > + This page has <code class="bg-elevated px-1.5 py-0.5 rounded text-xs">noindex</code> set. It will not appear in search results. + </DevtoolsAlert> + </UCard> + </div> + + <!-- OG vs SERP Comparison --> + <UCard v-if="ogMismatches.length > 0 || seo.ogTitle || seo.ogDescription"> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-compare" class="text-lg" /> + <span class="font-medium">SERP vs Open Graph</span> + </div> + <UBadge v-if="ogMismatches.length" color="info" variant="subtle" size="xs"> + {{ ogMismatches.length }} difference{{ ogMismatches.length > 1 ? 's' : '' }} + </UBadge> + <UBadge v-else color="success" variant="subtle" size="xs"> + Matching + </UBadge> + </div> + </template> + <div v-if="ogMismatches.length" class="space-y-3"> + <div v-for="m in ogMismatches" :key="m.field" class="space-y-1"> + <span class="text-xs font-medium text-muted uppercase tracking-wide">{{ m.field }}</span> + <div class="grid grid-cols-2 gap-2"> + <div class="bg-elevated rounded-md p-2"> + <span class="text-[10px] text-muted uppercase tracking-wide block mb-1">Search</span> + <p class="text-xs font-mono truncate"> + {{ m.serp }} + </p> + </div> + <div class="bg-elevated rounded-md p-2"> + <span class="text-[10px] text-muted uppercase tracking-wide block mb-1">Social</span> + <p class="text-xs font-mono truncate"> + {{ m.og }} + </p> + </div> + </div> + </div> + </div> + <div v-else class="text-sm text-muted"> + Open Graph tags match your search engine metadata. Social shares will display the same content as search results. + </div> + </UCard> + + <!-- Multi-Engine Compatibility --> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-earth-americas" class="text-lg" /> + <span class="font-medium">Search Engine Compatibility</span> + </div> + </template> + <table class="w-full text-sm"> + <thead class="sticky top-0 bg-default"> + <tr class="text-left text-muted border-b border-default"> + <th class="p-2 font-medium"> + Engine + </th> + <th class="p-2 font-medium"> + Title + </th> + <th class="p-2 font-medium"> + Description + </th> + </tr> + </thead> + <tbody> + <tr + v-for="engine in engines" + :key="engine.key" + class="border-b border-default last:border-0 hover:bg-elevated transition-colors" + > + <td class="p-2"> + <div class="flex items-center gap-1.5"> + <UIcon :name="engine.icon" class="text-sm" /> + <span>{{ engine.label }}</span> + </div> + </td> + <td class="p-2"> + <div class="flex items-center gap-1.5"> + <UIcon + :name="checkIcon(engine.titleStatus)" + :class="checkIconColor(engine.titleStatus)" + class="text-xs" + /> + <span class="font-mono text-xs">{{ engine.titleLen }}/{{ engine.titleMax }}</span> + </div> + </td> + <td class="p-2"> + <div class="flex items-center gap-1.5"> + <UIcon + :name="checkIcon(engine.descStatus)" + :class="checkIconColor(engine.descStatus)" + class="text-xs" + /> + <span class="font-mono text-xs">{{ engine.descLen }}/{{ engine.descMax }}</span> + </div> + </td> + </tr> + </tbody> + </table> + </UCard> + + <!-- Keyword Analysis --> + <UCard v-if="keywords.length"> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-tag-group" class="text-lg" /> + <span class="font-medium">Keyword Analysis</span> + </div> + </template> + <div class="flex flex-wrap gap-2"> + <span + v-for="kw in keywords" + :key="kw.word" + class="serp-keyword-chip" + > + {{ kw.word }} + <span v-if="kw.count > 1" class="serp-keyword-count">{{ kw.count }}</span> + </span> + </div> + </UCard> + </div> +</template> + +<style scoped> +/* SERP preview */ +.serp-preview-container { + padding: 1.25rem; + border-radius: 8px; + background: white; + border: 1px solid oklch(0% 0 0 / 0.08); + width: 100%; + max-width: 600px; +} +.dark .serp-preview-container { + background: #202124; + border-color: oklch(100% 0 0 / 0.06); +} +.serp-preview-container--mobile { + max-width: 360px; +} +.serp-preview__title { + font-size: 1.25rem; + line-height: 1.3; + color: #1a0dab; + margin-bottom: 0.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.serp-preview__title--mobile { + font-size: 1rem; + white-space: normal; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} +.dark .serp-preview__title { color: #8ab4f8; } +.serp-preview__description { + font-size: 0.875rem; + line-height: 1.58; + color: #4d5156; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} +.dark .serp-preview__description { color: #bdc1c6; } + +/* Length status */ +.serp-length-status { + display: inline-flex; + align-items: center; + padding: 0.125rem 0.5rem; + border-radius: 9999px; + font-size: 0.6875rem; + font-weight: 600; +} +.serp-length-status--success { background: oklch(75% 0.15 145 / 0.12); color: oklch(50% 0.15 145); } +.serp-length-status--warning { background: oklch(75% 0.12 80 / 0.12); color: oklch(55% 0.15 80); } +.serp-length-status--error { background: oklch(65% 0.15 25 / 0.1); color: oklch(55% 0.18 25); } +.dark .serp-length-status--success { background: oklch(50% 0.15 145 / 0.15); color: oklch(75% 0.18 145); } +.dark .serp-length-status--warning { background: oklch(55% 0.12 80 / 0.15); color: oklch(75% 0.15 80); } +.dark .serp-length-status--error { background: oklch(50% 0.12 25 / 0.15); color: oklch(72% 0.15 25); } + +/* Progress bar */ +.serp-progress-track { + position: relative; + height: 6px; + border-radius: 3px; + background: var(--ui-bg-accented); + overflow: visible; +} +.serp-progress-fill { + height: 100%; + border-radius: 3px; + transition: width 400ms cubic-bezier(0.22, 1, 0.36, 1); +} +@media (prefers-reduced-motion: reduce) { + .serp-progress-fill { + transition: none; + } +} +.serp-progress-fill--success { background: oklch(65% 0.2 145); box-shadow: 0 0 8px oklch(65% 0.2 145 / 0.3); } +.serp-progress-fill--warning { background: oklch(70% 0.18 80); box-shadow: 0 0 8px oklch(70% 0.18 80 / 0.3); } +.serp-progress-fill--error { background: oklch(62% 0.2 25); box-shadow: 0 0 8px oklch(62% 0.2 25 / 0.3); } +.serp-progress-marker { + position: absolute; + top: -2px; + width: 1px; + height: 10px; + background: var(--ui-text-muted); + opacity: 0.4; +} + +/* Keyword chips */ +.serp-keyword-chip { + display: inline-flex; + align-items: center; + gap: 0.25rem; + padding: 0.25rem 0.625rem; + border-radius: 9999px; + font-size: 0.75rem; + font-family: var(--font-mono); + background: var(--ui-bg-elevated); + color: var(--ui-text-default); + border: 1px solid var(--ui-border); +} +.serp-keyword-count { + font-size: 0.625rem; + font-weight: 600; + background: var(--ui-bg-accented); + color: var(--ui-text-muted); + padding: 0 0.375rem; + border-radius: 9999px; + min-width: 1.25rem; + text-align: center; +} + +/* Rich Results */ +.serp-rich-result { + padding: 0.75rem; + border-radius: 8px; + border: 1px solid var(--ui-border); +} +.serp-rich-result + .serp-rich-result { + margin-top: 0.5rem; +} +.serp-rich-mockup { + padding: 0.5rem 0.75rem; + border-radius: 6px; + background: white; + border: 1px solid oklch(0% 0 0 / 0.06); +} +.dark .serp-rich-mockup { + background: #202124; + border-color: oklch(100% 0 0 / 0.06); +} +.serp-rich-stars { + color: #e8a435; + font-size: 0.8125rem; + letter-spacing: -1px; +} +.serp-rich-rating-text { + color: #70757a; +} +.dark .serp-rich-rating-text { + color: #9aa0a6; +} +.serp-rich-detail { + color: #4d5156; + margin-top: 0.25rem; +} +.dark .serp-rich-detail { + color: #bdc1c6; +} +.serp-rich-breadcrumbs { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0.125rem; + font-size: 0.75rem; + color: #202124; + margin-bottom: 0.375rem; +} +.dark .serp-rich-breadcrumbs { + color: #bdc1c6; +} +.serp-rich-faq { + margin-top: 0.375rem; +} +.serp-rich-faq-item { + display: flex; + align-items: center; + gap: 0.375rem; + padding: 0.375rem 0; + border-top: 1px solid oklch(0% 0 0 / 0.06); + color: #1a0dab; +} +.dark .serp-rich-faq-item { + border-top-color: oklch(100% 0 0 / 0.08); + color: #8ab4f8; +} +.serp-rich-video-thumb { + position: relative; + width: 120px; + height: 68px; + border-radius: 6px; + overflow: hidden; + background: var(--ui-bg-accented); +} +.serp-rich-video-play { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + background: oklch(0% 0 0 / 0.3); +} +.serp-rich-video-duration { + position: absolute; + bottom: 4px; + right: 4px; + font-size: 0.625rem; + font-weight: 600; + background: oklch(0% 0 0 / 0.7); + color: white; + padding: 0.0625rem 0.25rem; + border-radius: 3px; +} +</style> diff --git a/packages/devtools-app/app/pages/social.vue b/packages/devtools-app/app/pages/social.vue new file mode 100644 index 000000000..9e0b3b493 --- /dev/null +++ b/packages/devtools-app/app/pages/social.vue @@ -0,0 +1,234 @@ +<script setup lang="ts"> +import { isBrokenUrl } from '~/composables/link-checker' +import { state } from '~/composables/state' + +const seo = computed(() => state.value.seo) + +const previewTitle = computed(() => seo.value.ogTitle || seo.value.title || 'Untitled') +const previewDescription = computed(() => seo.value.ogDescription || seo.value.description || '') +const previewImage = computed(() => { + const img = seo.value.ogImage + if (!img || isBrokenUrl(img)) + return null + return img +}) +const ogImageBroken = computed(() => !!seo.value.ogImage && isBrokenUrl(seo.value.ogImage)) +const previewSiteName = computed(() => { + try { + return new URL(seo.value.canonical || '').hostname + } + catch { + return seo.value.canonical || 'example.com' + } +}) + +const activePreview = ref('twitter') +const previewTabs = [ + { label: 'X / Twitter', value: 'twitter', icon: 'i-carbon-logo-x' }, + { label: 'Facebook', value: 'facebook', icon: 'i-carbon-logo-facebook' }, + { label: 'LinkedIn', value: 'linkedin', icon: 'i-carbon-logo-linkedin' }, + { label: 'Discord', value: 'discord', icon: 'i-carbon-logo-discord' }, + { label: 'Slack', value: 'slack', icon: 'i-carbon-logo-slack' }, +] + +function onTabKeydown(e: KeyboardEvent) { + const idx = previewTabs.findIndex(t => t.value === activePreview.value) + if (e.key === 'ArrowRight' || e.key === 'ArrowDown') { + e.preventDefault() + activePreview.value = previewTabs[(idx + 1) % previewTabs.length]!.value + } + else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') { + e.preventDefault() + activePreview.value = previewTabs[(idx - 1 + previewTabs.length) % previewTabs.length]!.value + } +} + +// Filter to OG + Twitter meta tags +const socialTags = computed(() => + state.value.tags.filter((t) => { + if (t.tag !== 'meta') + return false + const key = t.props?.property || t.props?.name || '' + return key.startsWith('og:') || key.startsWith('twitter:') + }), +) +</script> + +<template> + <div class="space-y-4"> + <!-- Social Previews --> + <UCard> + <template #header> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-share" class="text-lg" /> + <span class="font-medium">Social Preview</span> + </div> + </template> + + <div role="tablist" aria-label="Social preview platforms" class="flex gap-0.5 px-3 py-2 border-b border-default overflow-x-auto" @keydown="onTabKeydown"> + <button + v-for="tab of previewTabs" + :id="`social-tab-${tab.value}`" + :key="tab.value" + role="tab" + :aria-selected="activePreview === tab.value" + :aria-controls="`social-panel-${tab.value}`" + :tabindex="activePreview === tab.value ? 0 : -1" + :aria-label="tab.label" + class="flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs font-medium whitespace-nowrap transition-colors duration-150" + :class="activePreview === tab.value + ? 'bg-elevated text-highlighted' + : 'text-muted hover:bg-elevated hover:text-default'" + @click="activePreview = tab.value" + > + <UIcon :name="tab.icon" class="text-sm" /> + <span class="hidden sm:inline">{{ tab.label }}</span> + </button> + </div> + + <div class="p-6"> + <!-- Twitter --> + <div v-if="activePreview === 'twitter'" id="social-panel-twitter" role="tabpanel" aria-labelledby="social-tab-twitter" class="max-w-[500px] mx-auto"> + <div class="rounded-2xl overflow-hidden border border-neutral-200 dark:border-neutral-700"> + <div v-if="previewImage" class="aspect-[1.91/1] bg-neutral-100 dark:bg-neutral-800"> + <img :src="previewImage" class="w-full h-full object-cover" :alt="previewTitle" loading="lazy"> + </div> + <div v-else class="flex flex-col items-center justify-center gap-1.5 aspect-[1.91/1] bg-elevated text-xs font-medium" :class="ogImageBroken ? 'text-red-400' : 'text-muted'"> + <UIcon :name="ogImageBroken ? 'i-carbon-warning-filled' : 'i-carbon-image'" class="text-2xl" /> + <span>{{ ogImageBroken ? 'Broken og:image' : 'No og:image' }}</span> + </div> + <div class="p-3"> + <p class="text-xs text-neutral-500"> + {{ previewSiteName }} + </p> + <p class="text-sm font-medium line-clamp-1"> + {{ previewTitle }} + </p> + <p class="text-xs text-neutral-500 line-clamp-2"> + {{ previewDescription }} + </p> + </div> + </div> + </div> + + <!-- Facebook --> + <div v-if="activePreview === 'facebook'" id="social-panel-facebook" role="tabpanel" aria-labelledby="social-tab-facebook" class="max-w-[500px] mx-auto"> + <div class="rounded-lg overflow-hidden border border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-800"> + <div v-if="previewImage" class="aspect-[1.91/1] bg-neutral-100 dark:bg-neutral-700"> + <img :src="previewImage" class="w-full h-full object-cover" :alt="previewTitle" loading="lazy"> + </div> + <div v-else class="flex flex-col items-center justify-center gap-1.5 aspect-[1.91/1] bg-elevated text-xs font-medium" :class="ogImageBroken ? 'text-red-400' : 'text-muted'"> + <UIcon :name="ogImageBroken ? 'i-carbon-warning-filled' : 'i-carbon-image'" class="text-2xl" /> + <span>{{ ogImageBroken ? 'Broken og:image' : 'No og:image' }}</span> + </div> + <div class="p-3"> + <p class="text-[11px] text-neutral-500 uppercase tracking-wider"> + {{ previewSiteName }} + </p> + <p class="text-base font-semibold line-clamp-1 mt-0.5"> + {{ previewTitle }} + </p> + <p class="text-sm text-neutral-500 line-clamp-1 mt-0.5"> + {{ previewDescription }} + </p> + </div> + </div> + </div> + + <!-- LinkedIn --> + <div v-if="activePreview === 'linkedin'" id="social-panel-linkedin" role="tabpanel" aria-labelledby="social-tab-linkedin" class="max-w-[500px] mx-auto"> + <div class="rounded-lg overflow-hidden border border-neutral-200 dark:border-neutral-700"> + <div v-if="previewImage" class="aspect-[1.91/1] bg-neutral-100 dark:bg-neutral-800"> + <img :src="previewImage" class="w-full h-full object-cover" :alt="previewTitle" loading="lazy"> + </div> + <div v-else class="flex flex-col items-center justify-center gap-1.5 aspect-[1.91/1] bg-elevated text-xs font-medium" :class="ogImageBroken ? 'text-red-400' : 'text-muted'"> + <UIcon :name="ogImageBroken ? 'i-carbon-warning-filled' : 'i-carbon-image'" class="text-2xl" /> + <span>{{ ogImageBroken ? 'Broken og:image' : 'No og:image' }}</span> + </div> + <div class="p-3 bg-neutral-50 dark:bg-neutral-800"> + <p class="text-sm font-semibold line-clamp-2"> + {{ previewTitle }} + </p> + <p class="text-xs text-neutral-500 mt-1"> + {{ previewSiteName }} + </p> + </div> + </div> + </div> + + <!-- Discord --> + <div v-if="activePreview === 'discord'" id="social-panel-discord" role="tabpanel" aria-labelledby="social-tab-discord" class="max-w-[500px] mx-auto"> + <div class="rounded-lg overflow-hidden border-l-4 border-[#5865F2] bg-[#2f3136] text-white p-4"> + <p class="text-xs text-neutral-400 mb-1"> + {{ previewSiteName }} + </p> + <p class="text-[#00aff4] text-sm font-semibold"> + {{ previewTitle }} + </p> + <p class="text-sm text-neutral-300 mt-1 line-clamp-2"> + {{ previewDescription }} + </p> + <div v-if="previewImage" class="mt-3 rounded-lg overflow-hidden max-w-[300px]"> + <img :src="previewImage" class="w-full object-cover" :alt="previewTitle" loading="lazy"> + </div> + <div v-else class="flex flex-col items-center justify-center gap-1.5 mt-3 max-w-[300px] aspect-video rounded-lg bg-[#36393f] text-xs font-medium" :class="ogImageBroken ? 'text-red-400' : 'text-[#72767d]'"> + <UIcon :name="ogImageBroken ? 'i-carbon-warning-filled' : 'i-carbon-image'" class="text-xl" /> + <span>{{ ogImageBroken ? 'Broken image' : 'No image' }}</span> + </div> + </div> + </div> + + <!-- Slack --> + <div v-if="activePreview === 'slack'" id="social-panel-slack" role="tabpanel" aria-labelledby="social-tab-slack" class="max-w-[500px] mx-auto"> + <div class="rounded-lg overflow-hidden border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 py-2"> + <p class="text-xs text-neutral-500 font-bold mb-1"> + {{ previewSiteName }} + </p> + <p class="text-[#1264a3] dark:text-[#1d9bd1] text-sm font-bold"> + {{ previewTitle }} + </p> + <p class="text-sm text-neutral-600 dark:text-neutral-400 mt-0.5 line-clamp-2"> + {{ previewDescription }} + </p> + <div v-if="previewImage" class="mt-2 rounded overflow-hidden max-w-[360px]"> + <img :src="previewImage" class="w-full object-cover" :alt="previewTitle" loading="lazy"> + </div> + </div> + </div> + </div> + </UCard> + + <!-- OG Tags Table --> + <DevtoolsTagTable :tags="socialTags" title="Open Graph Tags" icon="i-carbon-share" /> + + <!-- OG Image Preview --> + <UCard v-if="seo.ogImage"> + <template #header> + <div class="flex items-center justify-between"> + <div class="flex items-center gap-2"> + <UIcon name="i-carbon-image" class="text-lg" /> + <span class="font-medium">OG Image</span> + </div> + <UBadge v-if="ogImageBroken" color="error" variant="subtle" size="xs"> + Broken + </UBadge> + </div> + </template> + <div v-if="ogImageBroken" class="flex flex-col items-center justify-center gap-2 py-8 rounded-lg border border-red-200 dark:border-red-900/50 bg-red-50 dark:bg-red-950/20"> + <UIcon name="i-carbon-warning-filled" class="text-3xl text-red-400" /> + <span class="text-sm text-red-500 font-medium">Image failed to load</span> + <p class="text-xs text-muted font-mono truncate max-w-full px-4"> + {{ seo.ogImage }} + </p> + </div> + <template v-else> + <div class="rounded-lg overflow-hidden border border-default"> + <img :src="seo.ogImage" class="w-full max-h-64 object-contain bg-neutral-100 dark:bg-neutral-800" alt="OG Image" loading="lazy"> + </div> + <p class="mt-2 text-xs text-muted font-mono truncate"> + {{ seo.ogImage }} + </p> + </template> + </UCard> + </div> +</template> diff --git a/packages/devtools-app/app/public/logo.svg b/packages/devtools-app/app/public/logo.svg new file mode 100644 index 000000000..d3f17e65f --- /dev/null +++ b/packages/devtools-app/app/public/logo.svg @@ -0,0 +1,23 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"> + <defs> + <linearGradient id="modernGradient" x1="0%" y1="0%" x2="100%" y2="100%"> + <stop offset="0%" style="stop-color:#FBBF24" /> + <stop offset="100%" style="stop-color:#f0db4f" /> + </linearGradient> + <mask id="cutoutMask"> + <rect width="100%" height="100%" fill="white" /> + <path d="M12 32 L1 32 L15 15 Z" fill="black" /> + </mask> + </defs> + + <!-- U shape --> + <path + fill="none" + stroke="url(#modernGradient)" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="3" + d="M6 4v14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4" + mask="url(#cutoutMask)" + /> +</svg> diff --git a/packages/devtools-app/app/utils/schema-validation.ts b/packages/devtools-app/app/utils/schema-validation.ts new file mode 100644 index 000000000..168011666 --- /dev/null +++ b/packages/devtools-app/app/utils/schema-validation.ts @@ -0,0 +1,470 @@ +// Rich result schema types that Google supports +export const richResultTypes = new Set([ + 'Article', + 'NewsArticle', + 'BlogPosting', + 'ScholarlyArticle', + 'Product', + 'AggregateOffer', + 'Offer', + 'FAQPage', + 'Question', + 'HowTo', + 'HowToStep', + 'Recipe', + 'Event', + 'LocalBusiness', + 'Restaurant', + 'JobPosting', + 'Course', + 'Movie', + 'Book', + 'SoftwareApplication', + 'VideoObject', + 'Review', + 'AggregateRating', + 'BreadcrumbList', + 'SearchAction', + 'Dataset', + 'SpecialAnnouncement', + 'Person', + 'NewsMediaOrganization', + 'Organization', +]) + +// Google Rich Results requirements for each schema type +export const googleRichResultsRequirements: Record<string, { + required: string[] + recommended: string[] + documentationUrl: string +}> = { + Article: { + required: [], + recommended: ['author', 'author.name', 'dateModified', 'datePublished', 'headline', 'image'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/article', + }, + NewsArticle: { + required: [], + recommended: ['author', 'author.name', 'dateModified', 'datePublished', 'headline', 'image'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/article', + }, + BlogPosting: { + required: [], + recommended: ['author', 'author.name', 'dateModified', 'datePublished', 'headline', 'image'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/article', + }, + Product: { + required: ['name'], + recommended: ['description', 'offers', 'offers.price', 'offers.priceCurrency', 'offers.availability', 'aggregateRating', 'review', 'image'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/product', + }, + FAQPage: { + required: ['mainEntity'], + recommended: [], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/faqpage', + }, + Recipe: { + required: ['name', 'image'], + recommended: ['aggregateRating', 'author', 'cookTime', 'datePublished', 'description', 'keywords', 'nutrition', 'prepTime', 'recipeCategory', 'recipeCuisine', 'recipeIngredient', 'recipeInstructions', 'recipeYield', 'totalTime', 'video'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/recipe', + }, + Event: { + required: ['name', 'location', 'startDate'], + recommended: ['description', 'endDate', 'eventStatus', 'image', 'offers', 'performer', 'organizer'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/event', + }, + LocalBusiness: { + required: ['name', 'address'], + recommended: ['aggregateRating', 'department', 'geo', 'openingHoursSpecification', 'priceRange', 'telephone', 'url'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/local-business', + }, + Restaurant: { + required: ['name', 'address'], + recommended: ['aggregateRating', 'servesCuisine', 'hasMenu', 'geo', 'openingHoursSpecification', 'priceRange', 'telephone', 'url'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/local-business', + }, + Review: { + required: ['author', 'itemReviewed', 'reviewRating'], + recommended: ['datePublished', 'reviewRating.bestRating', 'reviewRating.worstRating'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/review-snippet', + }, + AggregateRating: { + required: ['itemReviewed', 'ratingValue'], + recommended: ['bestRating', 'worstRating', 'ratingCount', 'reviewCount'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/review-snippet', + }, + BreadcrumbList: { + required: ['itemListElement'], + recommended: [], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/breadcrumb', + }, + Organization: { + required: [], + recommended: ['name', 'logo', 'url', 'email', 'telephone', 'contactPoint', 'sameAs', 'address', 'description'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/organization', + }, + Person: { + required: [], + recommended: ['name', 'url', 'image', 'sameAs', 'jobTitle', 'worksFor'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/person', + }, + SoftwareApplication: { + required: ['name', 'offers'], + recommended: ['applicationCategory', 'operatingSystem', 'aggregateRating', 'review'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/software-app', + }, + VideoObject: { + required: ['name', 'thumbnailUrl', 'uploadDate'], + recommended: ['contentUrl', 'description', 'duration', 'embedUrl'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/video', + }, + JobPosting: { + required: ['datePosted', 'description', 'hiringOrganization', 'jobLocation', 'title'], + recommended: ['applicantLocationRequirements', 'baseSalary', 'employmentType', 'jobLocationType', 'validThrough'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/job-posting', + }, + Course: { + required: ['description', 'name'], + recommended: ['provider'], + documentationUrl: 'https://developers.google.com/search/docs/appearance/structured-data/course', + }, +} + +// Recursively extract all typed objects from a schema node +function extractNestedTypes(obj: any, nodes: any[], seen: Set<any>): void { + if (!obj || typeof obj !== 'object' || seen.has(obj)) + return + seen.add(obj) + + if (obj['@type'] && Object.keys(obj).length > 1) { + nodes.push(obj) + } + + for (const value of Object.values(obj)) { + if (Array.isArray(value)) { + for (const item of value) { + extractNestedTypes(item, nodes, seen) + } + } + else if (typeof value === 'object') { + extractNestedTypes(value, nodes, seen) + } + } +} + +// Resolve @id references in a node +function resolveNodeReferences(node: any, nodeMap: Map<string, any>): any { + const resolved = { ...node } + + Object.keys(resolved).forEach((key) => { + const value = resolved[key] + + if ( + value + && typeof value === 'object' + && !Array.isArray(value) + && Object.keys(value).length === 1 + && value['@id'] + && nodeMap.has(value['@id']) + ) { + resolved[key] = { ...nodeMap.get(value['@id']) } + } + else if (Array.isArray(value)) { + resolved[key] = value.map((item: any) => { + if ( + item + && typeof item === 'object' + && Object.keys(item).length === 1 + && item['@id'] + && nodeMap.has(item['@id']) + ) { + return { ...nodeMap.get(item['@id']) } + } + return item + }) + } + else if (value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 1) { + resolved[key] = resolveNodeReferences(value, nodeMap) + } + }) + + return resolved +} + +// Extract all nodes from a schema graph (including nested @graph and nested types) +export function extractSchemaNodes(data: any): any[] { + const nodes: any[] = [] + if (!data) + return nodes + + const seen = new Set<any>() + + if (data['@graph'] && Array.isArray(data['@graph'])) { + const nodeMap = new Map<string, any>() + data['@graph'].forEach((node: any) => { + if (node && typeof node === 'object' && node['@id']) { + nodeMap.set(node['@id'], node) + } + }) + + const addedIds = new Set<string>() + + data['@graph'].forEach((node: any) => { + if (node && typeof node === 'object') { + if (Object.keys(node).length === 1 && node['@id']) + return + if (node['@id'] && addedIds.has(node['@id'])) + return + + const resolvedNode = resolveNodeReferences(node, nodeMap) + extractNestedTypes(resolvedNode, nodes, seen) + + if (node['@id']) + addedIds.add(node['@id']) + } + }) + } + else if (data['@type']) { + extractNestedTypes(data, nodes, seen) + } + + // Deduplicate nodes that appear multiple times due to @id reference resolution + const uniqueNodes: any[] = [] + const seenIds = new Set<string>() + for (const node of nodes) { + const id = node['@id'] + if (id) { + if (seenIds.has(id)) + continue + seenIds.add(id) + } + uniqueNodes.push(node) + } + + return uniqueNodes +} + +export function getNodeType(node: any): string { + if (!node || !node['@type']) + return 'Unknown' + return Array.isArray(node['@type']) ? node['@type'][0] : node['@type'] +} + +export function isRichResultType(type: string): boolean { + return richResultTypes.has(type) +} + +export function getNodeDescription(node: any): string { + const type = getNodeType(node) + + if (node.name) + return node.name + if (node.headline) + return node.headline + if (node.title) + return node.title + if (node.description) { + return typeof node.description === 'string' + ? node.description.substring(0, 100) + (node.description.length > 100 ? '...' : '') + : '' + } + if (node['@id']) + return node['@id'] + if (node.url) + return node.url + + return `${type} Schema` +} + +export function getNestedProperty(obj: any, path: string): any { + const parts = path.split('.') + let current = obj + + for (const part of parts) { + if (current && typeof current === 'object' && part in current) { + current = current[part] + } + else { + return undefined + } + } + + return current +} + +export function analyzeNodeProperties(node: any): { + missingRequired: string[] + missingRecommended: string[] + presentProperties: Record<string, any> +} { + const type = getNodeType(node) + const requirements = googleRichResultsRequirements[type] + + if (!requirements) { + return { + missingRequired: [], + missingRecommended: [], + presentProperties: {}, + } + } + + const missingRequired: string[] = [] + const missingRecommended: string[] = [] + const presentProperties: Record<string, any> = {} + + requirements.required.forEach((prop) => { + const value = getNestedProperty(node, prop) + if (value === undefined || value === null || value === '') { + missingRequired.push(prop) + } + else { + presentProperties[prop] = value + } + }) + + requirements.recommended.forEach((prop) => { + const value = getNestedProperty(node, prop) + if (value === undefined || value === null || value === '') { + missingRecommended.push(prop) + } + else { + presentProperties[prop] = value + } + }) + + return { missingRequired, missingRecommended, presentProperties } +} + +export function formatPropertyValue(value: any): string { + if (value === null || value === undefined) + return 'null' + if (typeof value === 'string') + return value.length > 50 ? `${value.substring(0, 50)}...` : value + if (typeof value === 'number') + return value.toString() + if (typeof value === 'boolean') + return value ? 'true' : 'false' + if (Array.isArray(value)) + return `[${value.length} items]` + if (typeof value === 'object' && value['@type']) + return value['@type'] + if (typeof value === 'object') + return '{...}' + return String(value) +} + +export function getSchemaIcon(type: string): string { + const iconMap: Record<string, string> = { + Article: 'carbon:document', + NewsArticle: 'carbon:news', + BlogPosting: 'carbon:blog', + Product: 'carbon:shopping-cart', + FAQPage: 'carbon:help', + Organization: 'carbon:building', + LocalBusiness: 'carbon:location', + Person: 'carbon:user', + Event: 'carbon:calendar', + SoftwareApplication: 'carbon:application', + Recipe: 'carbon:restaurant', + HowTo: 'carbon:list-numbered', + WebSite: 'carbon:earth', + WebPage: 'carbon:page-first', + BreadcrumbList: 'carbon:flow', + VideoObject: 'carbon:video', + Review: 'carbon:star', + AggregateRating: 'carbon:star-filled', + SearchAction: 'carbon:search', + } + return iconMap[type] || 'carbon:code' +} + +export interface ValidationSummary { + totalNodes: number + richResultNodes: number + totalErrors: number + totalWarnings: number +} + +// Google structured data page slugs mapped to schema types +export const googleStructuredDataLinks: Record<string, string[]> = { + 'article': ['Article', 'NewsArticle', 'BlogPosting'], + 'book': ['Book'], + 'breadcrumb': ['BreadcrumbList'], + 'carousel': ['ItemList'], + 'course-info': ['Course'], + 'course': ['Course'], + 'dataset': ['Dataset'], + 'discussion-forum': ['DiscussionForumPosting'], + 'education-qa': ['Question', 'Answer'], + 'employer-rating': ['EmployerAggregateRating'], + 'estimated-salary': ['OccupationalExperienceRequirements'], + 'event': ['Event'], + 'factcheck': ['ClaimReview'], + 'faqpage': ['FAQPage'], + 'image-license-metadata': ['ImageObject'], + 'job-posting': ['JobPosting'], + 'learning-video': ['LearningResource', 'VideoObject'], + 'local-business': ['LocalBusiness'], + 'math-solvers': ['MathSolver'], + 'movie': ['Movie'], + 'organization': ['Organization'], + 'practice-problems': ['Quiz', 'Question'], + 'product': ['Product'], + 'product-snippet': ['Product'], + 'merchant-listing': ['Product', 'Offer'], + 'product-variants': ['Product'], + 'profile-page': ['ProfilePage', 'Person'], + 'qapage': ['QAPage'], + 'recipe': ['Recipe'], + 'review-snippet': ['Review'], + 'software-app': ['SoftwareApplication'], + 'speakable': ['SpeakableSpecification'], + 'special-announcements': ['SpecialAnnouncement'], + 'paywalled-content': ['CreativeWork'], + 'vacation-rental': ['Accommodation', 'LodgingBusiness'], + 'vehicle-listing': ['Vehicle'], + 'video': ['VideoObject'], +} + +export function nodeToSchemaOrgLink(type: string) { + const simpleType = type.replace('https://schema.org/', '') + const googlePage = Object.entries(googleStructuredDataLinks) + .find(([_, types]) => types.includes(simpleType))?.[0] + return { + type: simpleType, + schemaOrg: `https://schema.org/${simpleType}`, + googlePage: googlePage ? `https://developers.google.com/search/docs/appearance/structured-data/${googlePage}` : null, + } +} + +export function asArray<T>(value: T | T[]): T[] { + return Array.isArray(value) ? value : [value] +} + +export function validateGraph(data: any): { nodes: any[], summary: ValidationSummary } { + const nodes = extractSchemaNodes(data) + + let totalErrors = 0 + let totalWarnings = 0 + let richResultNodes = 0 + + for (const node of nodes) { + const type = getNodeType(node) + if (isRichResultType(type)) + richResultNodes++ + + const analysis = analyzeNodeProperties(node) + totalErrors += analysis.missingRequired.length + totalWarnings += analysis.missingRecommended.length + } + + return { + nodes, + summary: { + totalNodes: nodes.length, + richResultNodes, + totalErrors, + totalWarnings, + }, + } +} diff --git a/packages/devtools-app/nuxt.config.ts b/packages/devtools-app/nuxt.config.ts new file mode 100644 index 000000000..d9ac5f7a7 --- /dev/null +++ b/packages/devtools-app/nuxt.config.ts @@ -0,0 +1,51 @@ +import { resolve } from 'pathe' + +export default defineNuxtConfig({ + ssr: false, + + modules: [ + '@nuxt/ui', + '@vueuse/nuxt', + ], + + css: [resolve(__dirname, 'app/assets/css/global.css')], + + imports: { + autoImport: true, + }, + + devtools: { + enabled: false, + }, + + compatibilityDate: '2026-03-13', + + nitro: { + prerender: { + crawlLinks: false, + routes: ['/'], + failOnError: false, + }, + output: { + publicDir: resolve(__dirname, 'dist'), + }, + }, + + vite: { + optimizeDeps: { + include: [ + '@vueuse/core', + ], + exclude: ['jiti'], + }, + resolve: { + alias: { + jiti: 'data:text/javascript,export default () => {}', + }, + }, + }, + + app: { + baseURL: '/__unhead/', + }, +}) diff --git a/packages/devtools-app/package.json b/packages/devtools-app/package.json new file mode 100644 index 000000000..3d7398346 --- /dev/null +++ b/packages/devtools-app/package.json @@ -0,0 +1,23 @@ +{ + "name": "@unhead/devtools-app", + "type": "module", + "private": true, + "scripts": { + "dev": "nuxi dev", + "build": "nuxi generate", + "generate": "nuxi generate" + }, + "devDependencies": { + "@nuxt/ui": "catalog:", + "@shikijs/langs": "catalog:", + "@shikijs/themes": "catalog:", + "@unhead/vue": "workspace:*", + "@vitejs/devtools-kit": "catalog:", + "@vueuse/nuxt": "catalog:", + "nuxt": "catalog:", + "pathe": "catalog:", + "shiki": "catalog:", + "tailwindcss": "catalog:", + "vue": "catalog:" + } +} diff --git a/packages/devtools-app/tsconfig.json b/packages/devtools-app/tsconfig.json new file mode 100644 index 000000000..4b34df157 --- /dev/null +++ b/packages/devtools-app/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./.nuxt/tsconfig.json" +} diff --git a/packages/react/package.json b/packages/react/package.json index 570670887..34542c274 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -105,7 +105,7 @@ }, "peerDependencies": { "react": ">=19.2.4", - "vite": ">=6.4.2" + "vite": ">=8.0.8" }, "peerDependenciesMeta": { "vite": { diff --git a/packages/react/src/composables.ts b/packages/react/src/composables.ts index 023b3b9ca..b113868ba 100644 --- a/packages/react/src/composables.ts +++ b/packages/react/src/composables.ts @@ -23,27 +23,27 @@ export function useUnhead(): Unhead { } function withSideEffects<T extends ActiveHeadEntry<any>>(input: any, options: any, fn: any): T { - const unhead = options.head || useUnhead() + const head = options.head || useUnhead() const entryRef = useRef<T | null>(null) const inputRef = useRef(input) inputRef.current = input // Server: create entry during render since useEffect doesn't run in SSR - if (unhead.ssr && !entryRef.current) { - entryRef.current = fn(unhead, input, options) as T + if (head.ssr && !entryRef.current) { + entryRef.current = fn(head, input, options) as T } // Client: create entry in effect to avoid orphaned entries in React 18 StrictMode. // StrictMode resets useRef between its double-render invocations, // so creating entries during render causes an orphaned entry that never gets disposed. useEffect(() => { - const entry = fn(unhead, inputRef.current, options) as T + const entry = fn(head, inputRef.current, options) as T entryRef.current = entry return () => { entry.dispose() entryRef.current = null } - }, [unhead]) + }, [head]) // Patch when input changes useEffect(() => { @@ -51,7 +51,7 @@ function withSideEffects<T extends ActiveHeadEntry<any>>(input: any, options: an }, [input]) // Return a stable proxy that delegates to the real entry once created - if (unhead.ssr) { + if (head.ssr) { return entryRef.current as T } const proxyRef = useRef<T | null>(null) diff --git a/packages/react/src/vite.ts b/packages/react/src/vite.ts index c03b4f04a..18c0f2ac0 100644 --- a/packages/react/src/vite.ts +++ b/packages/react/src/vite.ts @@ -1,10 +1,10 @@ -import type { UnpluginOptions } from '@unhead/bundler/vite' +import type { VitePluginOptions } from '@unhead/bundler/vite' import type { StreamingPluginOptions } from 'unhead/stream/vite' import type { Plugin } from 'vite' -import buildPlugins from '@unhead/bundler/vite' +import { Unhead as buildPlugins } from '@unhead/bundler/vite' import { unheadReactPlugin } from './stream/vite' -export interface UnheadReactViteOptions extends UnpluginOptions { +export interface UnheadReactViteOptions extends VitePluginOptions { /** * Enable streaming SSR support. * Set to `true` or a config object to enable. @@ -23,15 +23,15 @@ export interface UnheadReactViteOptions extends UnpluginOptions { * ```ts * // vite.config.ts * import react from '@vitejs/plugin-react' - * import unhead from '@unhead/react/vite' + * import { Unhead } from '@unhead/react/vite' * * export default defineConfig({ - * plugins: [react(), unhead()], + * plugins: [react(), Unhead()], * }) * ``` */ -export default function unhead(options: UnheadReactViteOptions = {}): Plugin[] { - const plugins: Plugin[] = [...buildPlugins(options)] +export function Unhead(options: UnheadReactViteOptions = {}): Plugin[] { + const plugins: Plugin[] = [...buildPlugins({ ...options, _framework: '@unhead/react' })] if (options.streaming) { const streamingOpts = typeof options.streaming === 'object' ? options.streaming : undefined plugins.push(unheadReactPlugin(streamingOpts)) diff --git a/packages/schema-org/src/index.ts b/packages/schema-org/src/index.ts index 15cd34206..f3012b592 100644 --- a/packages/schema-org/src/index.ts +++ b/packages/schema-org/src/index.ts @@ -1,5 +1,6 @@ export { createSchemaOrgGraph, defineSchemaOrgResolver, merge, resolveMeta, resolveNode, resolveNodeId, resolveRelation } from './core' export type { SchemaOrgGraph } from './core' +export { schemaAutoImports } from './imports' export * from './nodes' export { UnheadSchemaOrg } from './plugin' export type { PluginSchemaOrgOptions } from './plugin' diff --git a/packages/solid-js/package.json b/packages/solid-js/package.json index 17f440399..f63c61ac0 100644 --- a/packages/solid-js/package.json +++ b/packages/solid-js/package.json @@ -98,7 +98,7 @@ }, "peerDependencies": { "solid-js": ">=1.9.0", - "vite": ">=6.4.2" + "vite": ">=8.0.8" }, "peerDependenciesMeta": { "vite": { diff --git a/packages/solid-js/src/vite.ts b/packages/solid-js/src/vite.ts index 3c2d0f3a4..530a49206 100644 --- a/packages/solid-js/src/vite.ts +++ b/packages/solid-js/src/vite.ts @@ -1,10 +1,10 @@ -import type { UnpluginOptions } from '@unhead/bundler/vite' +import type { VitePluginOptions } from '@unhead/bundler/vite' import type { StreamingPluginOptions } from 'unhead/stream/vite' import type { Plugin } from 'vite' -import buildPlugins from '@unhead/bundler/vite' +import { Unhead as buildPlugins } from '@unhead/bundler/vite' import { unheadSolidPlugin } from './stream/vite' -export interface UnheadSolidViteOptions extends UnpluginOptions { +export interface UnheadSolidViteOptions extends VitePluginOptions { /** * Enable streaming SSR support. * Set to `true` or a config object to enable. @@ -23,15 +23,15 @@ export interface UnheadSolidViteOptions extends UnpluginOptions { * ```ts * // vite.config.ts * import solid from 'vite-plugin-solid' - * import unhead from '@unhead/solid-js/vite' + * import { Unhead } from '@unhead/solid-js/vite' * * export default defineConfig({ - * plugins: [solid(), unhead()], + * plugins: [Unhead(), solid()], * }) * ``` */ -export default function unhead(options: UnheadSolidViteOptions = {}): Plugin[] { - const plugins: Plugin[] = [...buildPlugins(options)] +export function Unhead(options: UnheadSolidViteOptions = {}): Plugin[] { + const plugins: Plugin[] = [...buildPlugins({ ...options, _framework: '@unhead/solid-js' })] if (options.streaming) { const streamingOpts = typeof options.streaming === 'object' ? options.streaming : undefined plugins.push(unheadSolidPlugin(streamingOpts)) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 5b6627df7..774ea58f5 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -98,7 +98,7 @@ }, "peerDependencies": { "svelte": ">=5.38.0", - "vite": ">=6.4.2" + "vite": ">=8.0.8" }, "peerDependenciesMeta": { "vite": { diff --git a/packages/svelte/src/vite.ts b/packages/svelte/src/vite.ts index a97015059..089f8b0f8 100644 --- a/packages/svelte/src/vite.ts +++ b/packages/svelte/src/vite.ts @@ -1,10 +1,10 @@ -import type { UnpluginOptions } from '@unhead/bundler/vite' +import type { VitePluginOptions } from '@unhead/bundler/vite' import type { StreamingPluginOptions } from 'unhead/stream/vite' import type { Plugin } from 'vite' -import buildPlugins from '@unhead/bundler/vite' +import { Unhead as buildPlugins } from '@unhead/bundler/vite' import { unheadSveltePlugin } from './stream/vite' -export interface UnheadSvelteViteOptions extends UnpluginOptions { +export interface UnheadSvelteViteOptions extends VitePluginOptions { /** * Enable streaming SSR support. * Set to `true` or a config object to enable. @@ -23,15 +23,15 @@ export interface UnheadSvelteViteOptions extends UnpluginOptions { * ```ts * // vite.config.ts * import { svelte } from '@sveltejs/vite-plugin-svelte' - * import unhead from '@unhead/svelte/vite' + * import { Unhead } from '@unhead/svelte/vite' * * export default defineConfig({ - * plugins: [svelte(), unhead()], + * plugins: [Unhead(), svelte()], * }) * ``` */ -export default function unhead(options: UnheadSvelteViteOptions = {}): Plugin[] { - const plugins: Plugin[] = [...buildPlugins(options)] +export function Unhead(options: UnheadSvelteViteOptions = {}): Plugin[] { + const plugins: Plugin[] = [...buildPlugins({ ...options, _framework: '@unhead/svelte' })] if (options.streaming) { const streamingOpts = typeof options.streaming === 'object' ? options.streaming : undefined plugins.push(unheadSveltePlugin(streamingOpts)) diff --git a/packages/unhead/package.json b/packages/unhead/package.json index 0de42aded..2aa366030 100644 --- a/packages/unhead/package.json +++ b/packages/unhead/package.json @@ -154,7 +154,7 @@ "prepack": "pnpm run build" }, "peerDependencies": { - "vite": ">=6.4.2" + "vite": ">=8.0.8" }, "peerDependenciesMeta": { "vite": { diff --git a/packages/unhead/src/plugins/validate.ts b/packages/unhead/src/plugins/validate.ts index 3b36ab93d..8ebeb3723 100644 --- a/packages/unhead/src/plugins/validate.ts +++ b/packages/unhead/src/plugins/validate.ts @@ -470,8 +470,10 @@ export function ValidatePlugin(options: ValidatePluginOptions = {}) { // === Performance Hints === // Inspired by webperf-snippets (https://webperf-snippets.nucliweb.net/) - // Preload + fetchpriority="low" is contradictory - if (tag.tag === 'link' && props.rel === 'preload' && props.fetchpriority === 'low') + // Preload + fetchpriority="low" without a matching low-priority script is contradictory + // Note: preload + fetchpriority="low" is a valid warmup pattern (used by useScript) + // to hint the browser to start fetching early at low priority + if (tag.tag === 'link' && props.rel === 'preload' && props.fetchpriority === 'low' && props.as !== 'script') report('preload-fetchpriority-conflict', `Preload with fetchpriority="low" is contradictory — preload signals critical, low priority contradicts that.`, 'warn', tag) // Inline style size check (14KB critical CSS budget) @@ -498,11 +500,11 @@ export function ValidatePlugin(options: ValidatePluginOptions = {}) { // Canonical vs og:url mismatch const ogUrl = metaByKey.get('og:url') if (canonicalHref && ogUrl?.props.content && canonicalHref !== ogUrl.props.content) - report('canonical-og-url-mismatch', `Canonical URL "${canonicalHref}" differs from og:url "${ogUrl.props.content}".`, 'warn') + report('canonical-og-url-mismatch', `Canonical URL "${canonicalHref}" differs from og:url "${ogUrl.props.content}".`, 'warn', ogUrl) // og:image without dimensions if (metaByKey.has('og:image') && (!metaByKey.has('og:image:width') || !metaByKey.has('og:image:height'))) - report('og-image-missing-dimensions', `og:image is set but og:image:width and/or og:image:height are missing — social platforms may not display the image.`, 'warn') + report('og-image-missing-dimensions', `og:image is set but og:image:width and/or og:image:height are missing — social platforms may not display the image.`, 'warn', metaByKey.get('og:image')) // OG tags without og:title or og:description if (hasOgTags) { @@ -552,9 +554,10 @@ export function ValidatePlugin(options: ValidatePluginOptions = {}) { } // Preload + async/defer script conflict (priority escalation anti-pattern) + // Skip when the preload has fetchpriority="low" as this is a valid warmup pattern (used by useScript) const preloadScriptHrefs = new Map<string, HeadTag>() for (const tag of tags) { - if (tag.tag === 'link' && tag.props.rel === 'preload' && tag.props.as === 'script' && tag.props.href) + if (tag.tag === 'link' && tag.props.rel === 'preload' && tag.props.as === 'script' && tag.props.href && tag.props.fetchpriority !== 'low') preloadScriptHrefs.set(tag.props.href, tag) } for (const tag of tags) { @@ -582,8 +585,9 @@ export function ValidatePlugin(options: ValidatePluginOptions = {}) { // Missing TemplateParamsPlugin (silent breakage — %params appear literally) if (!head.plugins.has('template-params')) { - if (tags.some((t: HeadTag) => t.tag === 'templateParams')) - report('missing-template-params-plugin', `templateParams are set but TemplateParamsPlugin is not registered. In v3, this plugin is opt-in. Add it to createHead({ plugins: [TemplateParamsPlugin] }).`, 'warn') + const tpTag = tags.find((t: HeadTag) => t.tag === 'templateParams') + if (tpTag) + report('missing-template-params-plugin', `templateParams are set but TemplateParamsPlugin is not registered. In v3, this plugin is opt-in. Add it to createHead({ plugins: [TemplateParamsPlugin] }).`, 'warn', tpTag) } // Missing AliasSortingPlugin (silent breakage — before:/after: priorities ignored) @@ -627,22 +631,27 @@ export function ValidatePlugin(options: ValidatePluginOptions = {}) { } // charset meta should appear early in head - const { maxPosition: charsetMaxPos } = resolveOptions(ruleConfig, 'charset-not-early', { maxPosition: 3 }) - let headIndex = 0 - let charsetTag: HeadTag | undefined - let charsetPosition = -1 - for (const tag of tags) { - if (tag.tagPosition && tag.tagPosition !== 'head') - continue - headIndex++ - if (tag.tag === 'meta' && ('charset' in tag.props || tag.props['http-equiv']?.toLowerCase() === 'content-type')) { - charsetTag = tag - charsetPosition = headIndex - break + // Only check on SSR where we control the render order; on the client the DOM order + // is already set by SSR and capo weights ensure charset is placed early. + if (head.ssr) { + const { maxPosition: charsetMaxPos } = resolveOptions(ruleConfig, 'charset-not-early', { maxPosition: 3 }) + const headElementTags = new Set(['title', 'base', 'meta', 'link', 'style', 'script', 'noscript']) + const sortedHeadTags = tags + .filter((t: any) => headElementTags.has(t.tag) && (!t.tagPosition || t.tagPosition === 'head')) + .sort((a: any, b: any) => (a._w ?? 100) === (b._w ?? 100) ? (a._p ?? 0) - (b._p ?? 0) : (a._w ?? 100) - (b._w ?? 100)) + let charsetTag: HeadTag | undefined + let charsetPosition = -1 + for (let i = 0; i < sortedHeadTags.length; i++) { + const tag = sortedHeadTags[i] + if (tag.tag === 'meta' && ('charset' in tag.props || tag.props['http-equiv']?.toLowerCase() === 'content-type')) { + charsetTag = tag + charsetPosition = i + 1 + break + } } + if (charsetTag && charsetPosition > charsetMaxPos) + report('charset-not-early', `<meta charset> is at position ${charsetPosition} in <head>. It should be within the first ${charsetMaxPos} tags so the browser doesn't need to re-parse.`, 'warn', charsetTag) } - if (charsetTag && charsetPosition > charsetMaxPos) - report('charset-not-early', `<meta charset> is at position ${charsetPosition} in <head>. It should be within the first ${charsetMaxPos} tags so the browser doesn't need to re-parse.`, 'warn', charsetTag) // preload as="script" when the actual script is type="module" should use modulepreload const moduleScriptSrcs = new Set<string>() @@ -705,6 +714,9 @@ export function ValidatePlugin(options: ValidatePluginOptions = {}) { } } + // Store rules on the head instance for devtools integration + ;(head as any)._validationRules = rules + // Dispatch if (rules.length) { if (options.onReport) { diff --git a/packages/unhead/src/scripts/types.ts b/packages/unhead/src/scripts/types.ts index 868e43f58..31a46d29d 100644 --- a/packages/unhead/src/scripts/types.ts +++ b/packages/unhead/src/scripts/types.ts @@ -81,6 +81,10 @@ export interface ScriptInstance<T extends BaseScriptApi> { // cbs onLoaded: (fn: (instance: T) => void | Promise<void>, options?: EventHandlerOptions) => void onError: (fn: (err?: Error) => void | Promise<void>, options?: EventHandlerOptions) => void + /** + * @internal + */ + _warmupStrategy?: string /** * @internal */ diff --git a/packages/unhead/src/scripts/useScript.ts b/packages/unhead/src/scripts/useScript.ts index 8bbd3b0b2..6ecfa9cae 100644 --- a/packages/unhead/src/scripts/useScript.ts +++ b/packages/unhead/src/scripts/useScript.ts @@ -39,9 +39,11 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol return prevScript } options.beforeInit?.() + const _events: { type: string, timestamp: number }[] = [] const syncStatus = (s: ScriptInstance<T>['status']) => { // eslint-disable-next-line ts/no-use-before-define script.status = s + _events.push({ type: s, timestamp: Date.now() }) // eslint-disable-next-line ts/no-use-before-define callHook(head, 'script:updated', hookCtx) } @@ -108,9 +110,13 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol const script = { _loadPromise: loadPromise, + _events, + _warmupStrategy: undefined as string | undefined, instance: (!head.ssr && options?.use?.()) || null, proxy: null, id, + src: input.src, + input, status: 'awaitingLoad', remove() { @@ -247,12 +253,11 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol const hookCtx = { script } script.setupTriggerHandler(options.trigger) - if (options.use) { - const { proxy, stack } = createNoopedRecordingProxy<T>(head.ssr ? {} as T : options.use() || {} as T) + if (options.use && !head.ssr) { + const { proxy, stack } = createNoopedRecordingProxy<T>(options.use() || {} as T) script.proxy = proxy script.onLoaded((instance) => { replayProxyRecordings(instance, stack) - // just forward everything with the same behavior script.proxy = createForwardingProxy(instance) }) } @@ -261,6 +266,7 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol options.warmupStrategy = 'preload' } if (options.warmupStrategy) { + script._warmupStrategy = options.warmupStrategy script.warmup(options.warmupStrategy) } head._scripts = Object.assign(head._scripts || {}, { [id]: script }) diff --git a/packages/unhead/src/types/head.ts b/packages/unhead/src/types/head.ts index 833268df9..237ca73d0 100644 --- a/packages/unhead/src/types/head.ts +++ b/packages/unhead/src/types/head.ts @@ -200,6 +200,11 @@ export interface HeadEntryOptions extends TagPosition, TagPriority, ProcessesTem * @internal */ _index?: number + /** + * Source location for devtools tracing. + * @internal + */ + _source?: string } export type HeadRenderer<T = unknown> = (head: Unhead<any, any>) => T diff --git a/packages/unhead/src/types/tags.ts b/packages/unhead/src/types/tags.ts index 91f89e562..7f2d13440 100644 --- a/packages/unhead/src/types/tags.ts +++ b/packages/unhead/src/types/tags.ts @@ -115,6 +115,11 @@ export interface HeadTag extends TagPriority, TagPosition, ResolvesDuplicates, H * @internal */ _h?: string + /** + * Source file:line that created this tag (devtools only). + * @internal + */ + _source?: string } export type HeadTagKeys = (keyof HeadTag)[] diff --git a/packages/unhead/test/unit/plugins/validate.test.ts b/packages/unhead/test/unit/plugins/validate.test.ts index c0444ca22..bd745dc89 100644 --- a/packages/unhead/test/unit/plugins/validate.test.ts +++ b/packages/unhead/test/unit/plugins/validate.test.ts @@ -605,7 +605,7 @@ describe('validatePlugin', () => { }) describe('performance hints', () => { - it('warns on preload with fetchpriority="low"', () => { + it('warns on preload with fetchpriority="low" for non-script assets', () => { const { head, rules } = createValidationHead() head.push({ link: [{ rel: 'preload', href: '/font.woff2', as: 'font', crossorigin: 'anonymous', fetchpriority: 'low' as const }], @@ -614,6 +614,15 @@ describe('validatePlugin', () => { expect(rules.find(r => r.id === 'preload-fetchpriority-conflict')).toBeTruthy() }) + it('does not warn on preload with fetchpriority="low" for scripts (valid warmup pattern)', () => { + const { head, rules } = createValidationHead() + head.push({ + link: [{ rel: 'preload', href: '/analytics.js', as: 'script' as const, fetchpriority: 'low' as const }], + }) + renderSSRHead(head) + expect(rules.find(r => r.id === 'preload-fetchpriority-conflict')).toBeFalsy() + }) + it('does not warn on preload with fetchpriority="high"', () => { const { head, rules } = createValidationHead() head.push({ @@ -703,6 +712,26 @@ describe('validatePlugin', () => { expect(rules.find(r => r.id === 'preload-async-defer-conflict')).toBeFalsy() }) + it('does not warn on preload + defer script when preload has fetchpriority="low" (useScript warmup)', () => { + const { head, rules } = createValidationHead() + head.push({ + link: [{ rel: 'preload', href: '/gtm.js', as: 'script' as const, fetchpriority: 'low' as const }], + script: [{ src: '/gtm.js', defer: true }], + }) + renderSSRHead(head) + expect(rules.find(r => r.id === 'preload-async-defer-conflict')).toBeFalsy() + }) + + it('does not warn on preload + async script when preload has fetchpriority="low"', () => { + const { head, rules } = createValidationHead() + head.push({ + link: [{ rel: 'preload', href: '/analytics.js', as: 'script' as const, fetchpriority: 'low' as const }], + script: [{ src: '/analytics.js', async: true }], + }) + renderSSRHead(head) + expect(rules.find(r => r.id === 'preload-async-defer-conflict')).toBeFalsy() + }) + it('warns on prefetch + preload conflict', () => { const { head, rules } = createValidationHead() head.push({ @@ -1014,6 +1043,23 @@ describe('validatePlugin', () => { expect(rules.find(r => r.id === 'charset-not-early')).toBeFalsy() }) + it('skips virtual tags (templateParams, titleTemplate) when counting charset position', () => { + const { head, rules } = createValidationHead({ rules: { 'charset-not-early': ['warn', { maxPosition: 2 }] } }) + head.push({ + templateParams: { site: { name: 'Test' } } as any, + titleTemplate: '%s | %site.name' as any, + }) + head.push({ + title: 'Home', + }) + head.push({ + meta: [{ charset: 'utf-8' }], + }) + renderSSRHead(head) + // charset should be position 2 (title=1, charset=2), not 4 (templateParams=1, titleTemplate=2, title=3, charset=4) + expect(rules.find(r => r.id === 'charset-not-early')).toBeFalsy() + }) + it('warns on preload as="script" for module script (should use modulepreload)', () => { const { head, rules } = createValidationHead() head.push({ diff --git a/packages/vue/package.json b/packages/vue/package.json index 37ab71a15..649bf5baa 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -135,7 +135,7 @@ "prepack": "pnpm run build" }, "peerDependencies": { - "vite": ">=6.4.2", + "vite": ">=8.0.8", "vue": ">=3.5.18" }, "peerDependenciesMeta": { diff --git a/packages/vue/src/composables.ts b/packages/vue/src/composables.ts index bbb01bfaf..f9547d829 100644 --- a/packages/vue/src/composables.ts +++ b/packages/vue/src/composables.ts @@ -96,3 +96,10 @@ export function useSeoMeta(input: UseSeoMetaInput = {}, options: UseHeadOptions } export { useScript } from './scripts/useScript' + +/** @deprecated Use `useHead` instead. */ +export const useServerHead = useHead +/** @deprecated Use `useHeadSafe` instead. */ +export const useServerHeadSafe = useHeadSafe +/** @deprecated Use `useSeoMeta` instead. */ +export const useServerSeoMeta = useSeoMeta diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 9c1781ed9..940701f89 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -1,7 +1,8 @@ export { unheadVueComposablesImports } from './autoImports' -export { injectHead, useHead, useHeadSafe, useScript, useSeoMeta } from './composables' +export { injectHead, useHead, useHeadSafe, useScript, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta } from './composables' export { headSymbol } from './install' export type * from './scripts/index' export type * from './types' +export { resolveUnrefHeadInput } from './utils' export { VueHeadMixin } from './VueHeadMixin' export { createUnhead } from 'unhead' diff --git a/packages/vue/src/utils.ts b/packages/vue/src/utils.ts index d29470c9b..7bd69d4b4 100644 --- a/packages/vue/src/utils.ts +++ b/packages/vue/src/utils.ts @@ -1,2 +1,13 @@ -export { VueResolver } from './resolver' +import type { ResolvableHead } from 'unhead/types' +import { walkResolver } from 'unhead/utils' +import { VueResolver } from './resolver' + +export { VueResolver } export * from 'unhead/utils' + +/** + * @deprecated Use head.resolveTags() instead. + */ +export function resolveUnrefHeadInput(input: any): ResolvableHead { + return walkResolver(input, VueResolver) +} diff --git a/packages/vue/src/vite.ts b/packages/vue/src/vite.ts index 9bf13531b..3cfc86e0d 100644 --- a/packages/vue/src/vite.ts +++ b/packages/vue/src/vite.ts @@ -1,10 +1,10 @@ -import type { UnpluginOptions } from '@unhead/bundler/vite' +import type { VitePluginOptions } from '@unhead/bundler/vite' import type { StreamingPluginOptions } from 'unhead/stream/vite' import type { Plugin } from 'vite' -import buildPlugins from '@unhead/bundler/vite' +import { Unhead as buildPlugins } from '@unhead/bundler/vite' import { unheadVuePlugin } from './stream/vite' -export interface UnheadVueViteOptions extends UnpluginOptions { +export interface UnheadVueViteOptions extends VitePluginOptions { /** * Enable streaming SSR support. * Set to `true` or a config object to enable. @@ -23,15 +23,15 @@ export interface UnheadVueViteOptions extends UnpluginOptions { * ```ts * // vite.config.ts * import vue from '@vitejs/plugin-vue' - * import unhead from '@unhead/vue/vite' + * import { Unhead } from '@unhead/vue/vite' * * export default defineConfig({ - * plugins: [vue(), unhead()], + * plugins: [vue(), Unhead()], * }) * ``` */ -export default function unhead(options: UnheadVueViteOptions = {}): Plugin[] { - const plugins: Plugin[] = [...buildPlugins(options)] +export function Unhead(options: UnheadVueViteOptions = {}): Plugin[] { + const plugins: Plugin[] = [...buildPlugins({ ...options, _framework: '@unhead/vue' })] if (options.streaming) { const streamingOpts = typeof options.streaming === 'object' ? options.streaming : undefined plugins.push(unheadVuePlugin(streamingOpts)) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db1dcf1e0..bc2597078 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,44 +7,53 @@ settings: catalogs: default: '@angular-devkit/build-angular': - specifier: ^21.2.6 - version: 21.2.6 - '@angular/cli': - specifier: ^21.2.6 - version: 21.2.6 - '@angular/common': specifier: ^21.2.7 version: 21.2.7 - '@angular/compiler': + '@angular/cli': specifier: ^21.2.7 version: 21.2.7 + '@angular/common': + specifier: ^21.2.8 + version: 21.2.8 + '@angular/compiler': + specifier: ^21.2.8 + version: 21.2.8 '@angular/compiler-cli': - specifier: ^21.2.7 - version: 21.2.7 + specifier: ^21.2.8 + version: 21.2.8 '@angular/core': - specifier: ^21.2.7 - version: 21.2.7 + specifier: ^21.2.8 + version: 21.2.8 '@angular/platform-browser': - specifier: ^21.2.7 - version: 21.2.7 + specifier: ^21.2.8 + version: 21.2.8 '@angular/platform-browser-dynamic': - specifier: ^21.2.7 - version: 21.2.7 + specifier: ^21.2.8 + version: 21.2.8 '@angular/platform-server': - specifier: ^21.2.7 - version: 21.2.7 + specifier: ^21.2.8 + version: 21.2.8 '@antfu/eslint-config': - specifier: ^8.0.0 - version: 8.0.0 + specifier: ^8.1.1 + version: 8.1.1 '@arethetypeswrong/cli': specifier: ^0.18.2 version: 0.18.2 '@fast-check/vitest': specifier: ^0.4.0 version: 0.4.0 + '@nuxt/ui': + specifier: ^4.6.1 + version: 4.6.1 '@rollup/pluginutils': specifier: ^5.3.0 version: 5.3.0 + '@shikijs/langs': + specifier: ^4.0.2 + version: 4.0.2 + '@shikijs/themes': + specifier: ^4.0.2 + version: 4.0.2 '@solidjs/testing-library': specifier: ^0.8.10 version: 0.8.10 @@ -75,15 +84,21 @@ catalogs: '@types/react-dom': specifier: ^19.2.3 version: 19.2.3 + '@vitejs/devtools-kit': + specifier: ^0.1.13 + version: 0.1.13 '@vue/server-renderer': specifier: ^3.5.32 version: 3.5.32 + '@vueuse/nuxt': + specifier: ^14.2.1 + version: 14.2.1 bumpp: specifier: ^11.0.1 version: 11.0.1 devalue: - specifier: ^5.7.0 - version: 5.7.0 + specifier: ^5.7.1 + version: 5.7.1 eslint: specifier: ^10.2.0 version: 10.2.0 @@ -105,18 +120,24 @@ catalogs: magic-string: specifier: ^0.30.21 version: 0.30.21 + nuxt: + specifier: ^4.4.2 + version: 4.4.2 oxc-parser: specifier: ^0.124.0 version: 0.124.0 oxc-walker: specifier: ^0.7.0 version: 0.7.0 + pathe: + specifier: ^2.0.3 + version: 2.0.3 react: - specifier: ^19.2.4 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.4 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 rollup: specifier: ^4.60.1 version: 4.60.1 @@ -126,21 +147,27 @@ catalogs: rollup-plugin-visualizer: specifier: ^7.0.1 version: 7.0.1 + shiki: + specifier: ^4.0.2 + version: 4.0.2 solid-js: specifier: ^1.9.12 version: 1.9.12 svelte: - specifier: ^5.55.1 - version: 5.55.1 + specifier: ^5.55.2 + version: 5.55.2 + tailwindcss: + specifier: ^4.2.2 + version: 4.2.2 tinyexec: - specifier: ^1.0.4 - version: 1.0.4 + specifier: ^1.1.1 + version: 1.1.1 tslib: specifier: ^2.8.1 version: 2.8.1 typescript: specifier: 6.0.2 - version: 5.9.3 + version: 6.0.2 ufo: specifier: ^1.6.3 version: 1.6.3 @@ -157,14 +184,14 @@ catalogs: specifier: ^3.11.0 version: 3.11.0 vite: - specifier: ^8.0.5 - version: 8.0.5 + specifier: ^8.0.8 + version: 8.0.8 vite-plugin-solid: specifier: ^2.11.12 version: 2.11.12 vitest: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^4.1.3 + version: 4.1.3 vitest-package-exports: specifier: ^1.2.0 version: 1.2.0 @@ -195,13 +222,13 @@ importers: devDependencies: '@antfu/eslint-config': specifier: 'catalog:' - version: 8.0.0(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2))(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@vue/compiler-sfc@3.5.32)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))) + version: 8.1.1(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.1(typescript@6.0.2))(@typescript-eslint/utils@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@vue/compiler-sfc@3.5.32)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8)) '@arethetypeswrong/cli': specifier: 'catalog:' version: 0.18.2 '@fast-check/vitest': specifier: 'catalog:' - version: 0.4.0(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))) + version: 0.4.0(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8)) '@types/fs-extra': specifier: 'catalog:' version: 11.0.4 @@ -213,7 +240,7 @@ importers: version: 11.0.1 devalue: specifier: 'catalog:' - version: 5.7.0 + version: 5.7.1 eslint: specifier: 'catalog:' version: 10.2.0(jiti@2.6.1) @@ -234,19 +261,19 @@ importers: version: 0.30.21 oxc-parser: specifier: 'catalog:' - version: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-walker: specifier: 'catalog:' - version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)) + version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) rollup-plugin-analyzer: specifier: 'catalog:' version: 4.0.0 rollup-plugin-visualizer: specifier: 'catalog:' - version: 7.0.1(rolldown@1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1))(rollup@4.53.5) + version: 7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1) tinyexec: specifier: 'catalog:' - version: 1.0.4 + version: 1.1.1 typescript: specifier: 'catalog:' version: 6.0.2 @@ -258,10 +285,10 @@ importers: version: 3.11.0 vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8) vitest-package-exports: specifier: 'catalog:' version: 1.2.0 @@ -275,35 +302,35 @@ importers: examples/angular: dependencies: '@angular/animations': - specifier: ^21.2.7 - version: 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) + specifier: ^21.2.8 + version: 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/common': - specifier: ^21.2.7 - version: 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + specifier: ^21.2.8 + version: 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': - specifier: ^21.2.7 - version: 21.2.7 + specifier: ^21.2.8 + version: 21.2.8 '@angular/core': - specifier: ^21.2.7 - version: 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) + specifier: ^21.2.8 + version: 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/forms': - specifier: ^21.2.7 - version: 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + specifier: ^21.2.8 + version: 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/platform-browser': - specifier: ^21.2.7 - version: 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) + specifier: ^21.2.8 + version: 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': - specifier: ^21.2.7 - version: 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))) + specifier: ^21.2.8 + version: 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))) '@angular/platform-server': - specifier: ^21.2.7 - version: 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + specifier: ^21.2.8 + version: 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/router': - specifier: ^21.2.7 - version: 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + specifier: ^21.2.8 + version: 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/ssr': - specifier: ^21.2.6 - version: 21.2.6(bb34f5a4800f2729c0a819df96d6aed2) + specifier: ^21.2.7 + version: 21.2.7(9c898ff27dabd87c2e39c7d23b6394cf) '@unhead/angular': specifier: workspace:* version: link:../../packages/angular @@ -321,17 +348,17 @@ importers: version: 0.16.1 devDependencies: '@angular-devkit/build-angular': - specifier: ^21.2.6 - version: 21.2.6(b8b8be2aec57acfbe96adaf392bb1a3d) + specifier: ^21.2.7 + version: 21.2.7(21af41c996a65d5eb64c7730448a46b2) '@angular/build': - specifier: ^21.2.6 - version: 21.2.6(0a37a63e1e9066626d3a2166d9688072) + specifier: ^21.2.7 + version: 21.2.7(ea0906435215446007e06217866bce7d) '@angular/cli': - specifier: ^21.2.6 - version: 21.2.6(@types/node@25.5.2)(chokidar@5.0.0) - '@angular/compiler-cli': specifier: ^21.2.7 - version: 21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3) + version: 21.2.7(@types/node@25.5.2)(chokidar@5.0.0) + '@angular/compiler-cli': + specifier: ^21.2.8 + version: 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) '@types/express': specifier: ^5.0.6 version: 5.0.6 @@ -340,10 +367,10 @@ importers: version: 25.5.2 ng-packagr: specifier: ^21.2.2 - version: 21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 examples/vite-ssr-react-streaming: dependencies: @@ -357,14 +384,14 @@ importers: specifier: ^5.2.1 version: 5.2.1 react: - specifier: ^19.2.4 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.4 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-router-dom: specifier: ^7.14.0 - version: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 7.14.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) devDependencies: '@playwright/test': specifier: ^1.59.1 @@ -383,7 +410,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 6.0.1(vite@8.0.8) cross-env: specifier: ^10.1.0 version: 10.1.0 @@ -391,8 +418,8 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) examples/vite-ssr-react-ts: dependencies: @@ -409,14 +436,14 @@ importers: specifier: ^5.2.1 version: 5.2.1 react: - specifier: ^19.2.4 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.4 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-router-dom: specifier: ^7.14.0 - version: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 7.14.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) sirv: specifier: ^3.0.2 version: 3.0.2 @@ -435,7 +462,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 6.0.1(vite@8.0.8) cross-env: specifier: ^10.1.0 version: 10.1.0 @@ -443,8 +470,8 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) examples/vite-ssr-solidjs-streaming: dependencies: @@ -477,11 +504,11 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vite-plugin-solid: specifier: ^2.11.12 - version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.12)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.12)(vite@8.0.8) examples/vite-ssr-svelte: dependencies: @@ -503,7 +530,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^7.0.0 - version: 7.0.0(svelte@5.55.1)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 7.0.0(svelte@5.55.2)(vite@8.0.8) '@tsconfig/svelte': specifier: ^5.0.8 version: 5.0.8 @@ -517,11 +544,11 @@ importers: specifier: ^10.1.0 version: 10.1.0 svelte: - specifier: ^5.55.1 - version: 5.55.1 + specifier: ^5.55.2 + version: 5.55.2 svelte-check: specifier: ^4.4.6 - version: 4.4.6(picomatch@4.0.4)(svelte@5.55.1)(typescript@5.8.3) + version: 4.4.6(picomatch@4.0.4)(svelte@5.55.2)(typescript@5.8.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -529,8 +556,8 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) examples/vite-ssr-svelte-streaming: dependencies: @@ -552,7 +579,7 @@ importers: version: 1.59.1 '@sveltejs/vite-plugin-svelte': specifier: ^7.0.0 - version: 7.0.0(svelte@5.55.1)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 7.0.0(svelte@5.55.2)(vite@8.0.8) '@tsconfig/svelte': specifier: ^5.0.8 version: 5.0.8 @@ -566,8 +593,8 @@ importers: specifier: ^10.1.0 version: 10.1.0 svelte: - specifier: ^5.55.1 - version: 5.55.1 + specifier: ^5.55.2 + version: 5.55.2 tslib: specifier: ^2.8.1 version: 2.8.1 @@ -575,8 +602,8 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) examples/vite-ssr-ts: dependencies: @@ -603,11 +630,14 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) examples/vite-ssr-vue: dependencies: + '@unhead/schema-org': + specifier: workspace:* + version: link:../../packages/schema-org '@unhead/vue': specifier: workspace:* version: link:../../packages/vue @@ -619,7 +649,7 @@ importers: version: 5.2.1 rollup-plugin-visualizer: specifier: ^7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1))(rollup@4.60.1) + version: 7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1) sirv: specifier: ^3.0.2 version: 3.0.2 @@ -629,6 +659,9 @@ importers: vue: specifier: ^3.5.32 version: 3.5.32(typescript@5.8.3) + vue-router: + specifier: ^5.0.4 + version: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.32(typescript@5.8.3)))(vue@3.5.32(typescript@5.8.3)) devDependencies: '@types/express': specifier: ^5.0.6 @@ -636,18 +669,27 @@ importers: '@types/node': specifier: ^25.5.2 version: 25.5.2 + '@unhead/bundler': + specifier: workspace:* + version: link:../../packages/bundler + '@vitejs/devtools': + specifier: ^0.1.13 + version: 0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@5.8.3)(vite@8.0.8) '@vitejs/plugin-vue': specifier: ^6.0.5 - version: 6.0.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@5.8.3)) + version: 6.0.5(vite@8.0.8)(vue@3.5.32(typescript@5.8.3)) cross-env: specifier: ^10.1.0 version: 10.1.0 typescript: specifier: 5.8.3 version: 5.8.3 + unplugin-auto-import: + specifier: ^21.0.0 + version: 21.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.8.3))) vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vue-tsc: specifier: ^3.2.6 version: 3.2.6(typescript@5.8.3) @@ -674,20 +716,20 @@ importers: version: link:../../packages/unhead unplugin-auto-import: specifier: ^21.0.0 - version: 21.0.0 + version: 21.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2))) vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vue-router: specifier: ^5.0.4 version: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) devDependencies: '@vitejs/plugin-vue': specifier: latest - version: 6.0.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2)) + version: 6.0.5(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) '@vitejs/plugin-vue-jsx': specifier: latest - version: 5.1.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2)) + version: 5.1.5(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) compression: specifier: ^1.8.1 version: 1.8.1 @@ -699,7 +741,7 @@ importers: version: 2.2.1 vite-plugin-inspect: specifier: 10.1.0 - version: 10.1.0(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 10.1.0(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@8.0.8) vue: specifier: ^3.5.32 version: 3.5.32(typescript@6.0.2) @@ -734,9 +776,12 @@ importers: '@types/node': specifier: ^25.5.2 version: 25.5.2 + '@vitejs/devtools': + specifier: ^0.1.13 + version: 0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@5.8.3)(vite@8.0.8) '@vitejs/plugin-vue': specifier: latest - version: 6.0.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@5.8.3)) + version: 6.0.5(vite@8.0.8)(vue@3.5.32(typescript@5.8.3)) cross-env: specifier: ^10.1.0 version: 10.1.0 @@ -744,8 +789,8 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: ^8.0.5 - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) packages-aliased/addons: dependencies: @@ -784,31 +829,31 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: 'catalog:' - version: 21.2.6(f1523c80898605e922439b0e8b2efd2d) + version: 21.2.7(a6e994258d24a93916297482080e59ec) '@angular/cli': specifier: 'catalog:' - version: 21.2.6(@types/node@25.5.2)(chokidar@5.0.0) + version: 21.2.7(@types/node@25.5.2)(chokidar@5.0.0) '@angular/common': specifier: 'catalog:' - version: 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + version: 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': specifier: 'catalog:' - version: 21.2.7 + version: 21.2.8 '@angular/compiler-cli': specifier: 'catalog:' - version: 21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2) + version: 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) '@angular/core': specifier: 'catalog:' - version: 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) + version: 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/platform-browser': specifier: 'catalog:' - version: 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': specifier: 'catalog:' - version: 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))) + version: 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))) '@angular/platform-server': specifier: 'catalog:' - version: 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) zone.js: specifier: 'catalog:' version: 0.16.1 @@ -818,9 +863,12 @@ importers: '@rollup/pluginutils': specifier: 'catalog:' version: 5.3.0(rollup@4.60.1) + '@unhead/devtools-app': + specifier: workspace:* + version: link:../devtools-app esbuild: specifier: '>=0.17.0' - version: 0.27.3 + version: 0.27.7 lightningcss: specifier: '>=1.20.0' version: 1.32.0 @@ -829,13 +877,13 @@ importers: version: 0.30.21 oxc-parser: specifier: 'catalog:' - version: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-walker: specifier: 'catalog:' - version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)) + version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) rolldown: specifier: '>=1.0.0-beta.0' - version: 1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 1.0.0-rc.13 ufo: specifier: 'catalog:' version: 1.6.3 @@ -843,6 +891,9 @@ importers: specifier: 'catalog:' version: 3.0.0 devDependencies: + '@vitejs/devtools-kit': + specifier: 'catalog:' + version: 0.1.13(typescript@6.0.2)(vite@8.0.8)(ws@8.20.0) rollup: specifier: 'catalog:' version: 4.60.1 @@ -851,7 +902,43 @@ importers: version: link:../unhead vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + + packages/devtools-app: + devDependencies: + '@nuxt/ui': + specifier: 'catalog:' + version: 4.6.1(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(change-case@5.4.4)(db0@0.3.4)(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)(typescript@6.0.2)(valibot@1.3.1(typescript@6.0.2))(vite@8.0.8)(vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2))(yjs@13.6.30)(zod@4.3.6) + '@shikijs/langs': + specifier: 'catalog:' + version: 4.0.2 + '@shikijs/themes': + specifier: 'catalog:' + version: 4.0.2 + '@unhead/vue': + specifier: workspace:* + version: link:../vue + '@vitejs/devtools-kit': + specifier: 'catalog:' + version: 0.1.13(typescript@6.0.2)(vite@8.0.8)(ws@8.20.0) + '@vueuse/nuxt': + specifier: 'catalog:' + version: 14.2.1(magicast@0.5.2)(nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2)) + nuxt: + specifier: 'catalog:' + version: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2) + pathe: + specifier: 'catalog:' + version: 2.0.3 + shiki: + specifier: 'catalog:' + version: 4.0.2 + tailwindcss: + specifier: 'catalog:' + version: 4.2.2 + vue: + specifier: 'catalog:' + version: 3.5.32(typescript@6.0.2) packages/react: dependencies: @@ -863,17 +950,17 @@ importers: version: 0.30.21 oxc-parser: specifier: 'catalog:' - version: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-walker: specifier: 'catalog:' - version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)) + version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) unhead: specifier: workspace:* version: link:../unhead devDependencies: '@testing-library/react': specifier: 'catalog:' - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@types/react': specifier: 'catalog:' version: 19.2.14 @@ -882,13 +969,13 @@ importers: version: 19.2.3(@types/react@19.2.14) react: specifier: 'catalog:' - version: 19.2.4 + version: 19.2.5 react-dom: specifier: 'catalog:' - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) packages/schema-org: dependencies: @@ -913,7 +1000,7 @@ importers: version: link:../vue unplugin-vue-components: specifier: 'catalog:' - version: 32.0.0(vue@3.5.32(typescript@6.0.2)) + version: 32.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(vue@3.5.32(typescript@6.0.2)) packages/solid-js: dependencies: @@ -925,10 +1012,10 @@ importers: version: 0.30.21 oxc-parser: specifier: 'catalog:' - version: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-walker: specifier: 'catalog:' - version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)) + version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) unhead: specifier: workspace:* version: link:../unhead @@ -947,10 +1034,10 @@ importers: version: 1.9.12 vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vite-plugin-solid: specifier: 'catalog:' - version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.12)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.12)(vite@8.0.8) packages/svelte: dependencies: @@ -962,26 +1049,26 @@ importers: version: 0.30.21 oxc-parser: specifier: 'catalog:' - version: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-walker: specifier: 'catalog:' - version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)) + version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) unhead: specifier: workspace:* version: link:../unhead devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 7.0.0(svelte@5.55.1)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + version: 7.0.0(svelte@5.55.2)(vite@8.0.8) '@testing-library/svelte': specifier: 'catalog:' - version: 5.3.1(svelte@5.55.1)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))) + version: 5.3.1(svelte@5.55.2)(vite@8.0.8)(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8)) svelte: specifier: 'catalog:' - version: 5.55.1 + version: 5.55.2 vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) packages/unhead: dependencies: @@ -994,7 +1081,7 @@ importers: devDependencies: vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) packages/vue: dependencies: @@ -1009,10 +1096,10 @@ importers: version: 0.30.21 oxc-parser: specifier: 'catalog:' - version: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + version: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-walker: specifier: 'catalog:' - version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)) + version: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) unhead: specifier: workspace:* version: link:../unhead @@ -1022,7 +1109,7 @@ importers: version: 3.5.32(vue@3.5.32(typescript@6.0.2)) vite: specifier: 'catalog:' - version: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vue: specifier: 'catalog:' version: 3.5.32(typescript@6.0.2) @@ -1088,6 +1175,10 @@ packages: resolution: {integrity: sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==} engines: {node: '>= 14.0.0'} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -1095,13 +1186,13 @@ packages: '@andrewbranch/untar.js@1.0.3': resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} - '@angular-devkit/architect@0.2102.6': - resolution: {integrity: sha512-h4qybKypR7OuwcTHPQI1zRm7abXgmPiV49vI2UeMtVVY/GKzru9gMexcYmWabzEyBY8w6VSfWjV2X+eit2EhDQ==} + '@angular-devkit/architect@0.2102.7': + resolution: {integrity: sha512-4K/5hln9iaPEt3F/NyYqncNLvYpzSjRslEkHl2xIgZwQsIFHEvhnDRBYj2/oatURQhBqO/Yu15z/icVOYLxuTg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@21.2.6': - resolution: {integrity: sha512-eUWcWiMOUg01QyJkaO/csyTy8ZecW2HrMvOlgM+IWLagDyqFQVcSwcx9/NJy/42YA+EtpBcCnXPK3vk5NVob7w==} + '@angular-devkit/build-angular@21.2.7': + resolution: {integrity: sha512-MeAsrvTq3of5x2r5g3cFhWpcb/goHVC5/7BfE+AiWuwClqsgbVoD/HiSXkQ50g2P+JQJ3Qx/DR2cC01H+k6pjg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^21.0.0 @@ -1110,7 +1201,7 @@ packages: '@angular/platform-browser': ^21.0.0 '@angular/platform-server': ^21.0.0 '@angular/service-worker': ^21.0.0 - '@angular/ssr': ^21.2.6 + '@angular/ssr': ^21.2.7 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^30.2.0 @@ -1150,15 +1241,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2102.6': - resolution: {integrity: sha512-IN0xUlFTOmDt+UrW1X7ymYgp94Y/HfMj4zNahplBEbBl72WmqQdJGiDMThGgFY+RzJJMyAbqD7RDyiimsVkfOA==} + '@angular-devkit/build-webpack@0.2102.7': + resolution: {integrity: sha512-EANoPney0B0SsbF5LVZvABDkxrSXw0nly7TmGrrV5UNmSLxhmF29IZ14vVGyy7En/zJHOIlQAP7YI39PdtYxqg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@21.2.6': - resolution: {integrity: sha512-u5gPTAY7MC02uACQE39xxiFcm1hslF+ih/f2borMWnhER0JNTpHjLiLRXFkq7or7+VVHU30zfhK4XNAuO4WTIg==} + '@angular-devkit/core@21.2.7': + resolution: {integrity: sha512-DONYY5u4IENO2qpd23mODaE4JI2EIohWV1kuJnsU9HIcm5wN714QB2z9WY/s4gLfUiAMIUu/8lpnW/0kOQZAnQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -1166,18 +1257,18 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@21.2.6': - resolution: {integrity: sha512-hk2duJlPJyiMaI9MVWA5XpmlpD9C4n8qgquV/MJ7/n+ZRSwW3w1ndL5qUmA1ki+4Da54v/Rc8Wt5tUS955+93w==} + '@angular-devkit/schematics@21.2.7': + resolution: {integrity: sha512-LYAjjUI1qM7pR/sd0yYt8OLA6ljOOXjcfzV40I5XQNmhAxq90YYS5xwMcixOmWX+z5zvCYGvPXvJGWjzio6SUg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@21.2.7': - resolution: {integrity: sha512-h8tUjQVSWfi2fohzxXeDDTjCfWABioYlPMrV1j98wCcFJad3FSnKCY0/gq8B4X6V81NGV29nEnhPyV0GinUBpQ==} + '@angular/animations@21.2.8': + resolution: {integrity: sha512-RIqfVmfretQ0x/mXgMXe7Bw0Tpe8+zBV/Mm2OaNVyrmNG+9gYItEn5t/ZnQGcPD5nMNqckgp3+4/ZMc/qkS5ww==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.2.7 + '@angular/core': 21.2.8 - '@angular/build@21.2.6': - resolution: {integrity: sha512-PJltYl9/INfz8nZ/KHf39nqlmt3c9PR0jJaZt6hhCPENyAf4PwQpm28erkJmbOYO864goIuws41lduYXyDqQ0Q==} + '@angular/build@21.2.7': + resolution: {integrity: sha512-FpSkFqpsJtdN1cROekVYkmeV1QepdP+/d7fyYQEuNmlOlyqXSDh9qJmy4iL9VNbAU0rk+vFCtYM86rO7Pt9cSw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^21.0.0 @@ -1187,7 +1278,7 @@ packages: '@angular/platform-browser': ^21.0.0 '@angular/platform-server': ^21.0.0 '@angular/service-worker': ^21.0.0 - '@angular/ssr': ^21.2.6 + '@angular/ssr': ^21.2.7 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^21.0.0 @@ -1222,38 +1313,38 @@ packages: vitest: optional: true - '@angular/cli@21.2.6': - resolution: {integrity: sha512-I5DOFcIT1HKymyy2f78fjgD0Iv6jG46GbBZ/VxejcnhjubFpuN4CwPdugXf9rIDs8KZQqBzDBFUbq11vnk8h0A==} + '@angular/cli@21.2.7': + resolution: {integrity: sha512-N/wj8fFRB718efIFYpwnYfy+MecZREZXsUNMTVndFLH6T0jCheb9PVetR6jsyZp6h46USNPOmJYJ/9255lME+Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@21.2.7': - resolution: {integrity: sha512-YFdnU5z8JloJjLYa52OyCOULQhqEE/ym7vKfABySWDsiVXZr9FNmKMeZi/lUcg7ZO22UbBihqW9a9D6VSHOo+g==} + '@angular/common@21.2.8': + resolution: {integrity: sha512-ZvgcxsLPkSG0B1jc2ZXshAWIFBoQ0U9uwIX/zG/RGcfMpoKyEDNAebli6FTIpxIlz/35rtBNV7EGPhinjPTJFQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.2.7 + '@angular/core': 21.2.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.2.7': - resolution: {integrity: sha512-r76vKBM7Wu0N8PTeec7340Gtv1wC7IBQGJOQnukshPgzaabgNKxmUiChGxi+RJNo/Tsdiw9ZfddcBgBjq79ZIg==} + '@angular/compiler-cli@21.2.8': + resolution: {integrity: sha512-S0W+6QazCsn/4xWZu0V5VmU9zmKIlqFR2FJSsAQUPReVmpA40SuQSP6A/cyMVIMYaHvO/cAXSHJVgpxBzBSL/Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.2.7 + '@angular/compiler': 21.2.8 typescript: '>=5.9 <6.1' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.2.7': - resolution: {integrity: sha512-4J0Nl5gGmr5SKgR3FHK4J6rdG0aP5zAsY3AJU8YXH+D98CeNTjQUD8XHsdD2cTwo08V5mDdFa5VCsREpMPJ5gQ==} + '@angular/compiler@21.2.8': + resolution: {integrity: sha512-Il9KlT6qX8rWmun5jY6wMLx56bCQZpOVIFEyHM4ai2wmxvbqyxgRFKDs4iMRNn1h04Tgupl6cKSqP9lecIvH6w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.2.7': - resolution: {integrity: sha512-4bnskeRNNOZMn3buVw47Zz9Py4B8AZgYHe5xBEMOY5/yrldb7OFje5gWCWls23P18FKwhl+Xx1hgnOEPSs29gw==} + '@angular/core@21.2.8': + resolution: {integrity: sha512-hI7n4t8qgFJaVV55LIaNuzcdP+/IeuqQRu3huSLo47Gf6uZAD0Acj4Ye9SC8YNmhUu5/RiImngm9NOlcI2oCJA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.2.7 + '@angular/compiler': 21.2.8 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -1262,56 +1353,56 @@ packages: zone.js: optional: true - '@angular/forms@21.2.7': - resolution: {integrity: sha512-YD/h07cdEeAUs41ysTk6820T0lG/XiQmFiq02d3IsiHYI5Vaj2pg9Ti1wWZYEBM//hVAPTzV0dwdV7Q1Gxju1w==} + '@angular/forms@21.2.8': + resolution: {integrity: sha512-tyQAHjfMHcqETRkKQaZHjYqIK9W8uRenPpY2DF/Jl+S7CwcaX4T8t8TKgzvTynNzQW9QGiLg0pqVosVMKzBXJg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.7 - '@angular/core': 21.2.7 - '@angular/platform-browser': 21.2.7 + '@angular/common': 21.2.8 + '@angular/core': 21.2.8 + '@angular/platform-browser': 21.2.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser-dynamic@21.2.7': - resolution: {integrity: sha512-P7s9ABgJqRyUS5HNRJFRr15xaXbWfSH9KjSxkBYYJbXIA986uGb6qjnHepu+2xMyZDlt2nd9Ms+t4M60/GM+FQ==} + '@angular/platform-browser-dynamic@21.2.8': + resolution: {integrity: sha512-9XeplSHsKnLDm14dvwXG00Ox6WbDrhf7ub7MxxcJ6gCgRm/yqJ3Vrz4a+NBpYnelapqiCCGEdHeyx2xt8vG1qA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.7 - '@angular/compiler': 21.2.7 - '@angular/core': 21.2.7 - '@angular/platform-browser': 21.2.7 + '@angular/common': 21.2.8 + '@angular/compiler': 21.2.8 + '@angular/core': 21.2.8 + '@angular/platform-browser': 21.2.8 - '@angular/platform-browser@21.2.7': - resolution: {integrity: sha512-nklVhstRZL4wpYg9Cyae/Eyfa7LMpgb0TyD/F//qCuohhM8nM7F+O0ekykGD6H+I34jsvqx6yLS7MicndWVz7Q==} + '@angular/platform-browser@21.2.8': + resolution: {integrity: sha512-4fwmGf7GCuIsjFqx1gqqWC92YjlN9SmGJO17TPPsOm5zUOnDx+h3Bj9XjdXxlcBtugTb2xHk6Auqyv3lzWGlkw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.2.7 - '@angular/common': 21.2.7 - '@angular/core': 21.2.7 + '@angular/animations': 21.2.8 + '@angular/common': 21.2.8 + '@angular/core': 21.2.8 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.2.7': - resolution: {integrity: sha512-nj6NmRQ7eUHCBsEpDa+5A/lAGpI03214kHAuRi6lglagZmzPPSG4CD8QIOv65L2Yl/J7QubwA/4K5Sx00qprmQ==} + '@angular/platform-server@21.2.8': + resolution: {integrity: sha512-dIbw8NsDGiKkA388AM8eq2IpsQcpTKUSGXyNCv6HlJi6BULF3zAAH9eeGXrbibrcKru2p02Vs8lxnLzo+5tkLw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.7 - '@angular/compiler': 21.2.7 - '@angular/core': 21.2.7 - '@angular/platform-browser': 21.2.7 + '@angular/common': 21.2.8 + '@angular/compiler': 21.2.8 + '@angular/core': 21.2.8 + '@angular/platform-browser': 21.2.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.2.7': - resolution: {integrity: sha512-Ina6XgtpvXT1OsLAomURHJGQDOkIVGrguWAOZ7+gOjsJEjUfpxTktFter+/K59KMC2yv6yneLvYSn3AswTYx7A==} + '@angular/router@21.2.8': + resolution: {integrity: sha512-KSlUbFHHKY84G6iKlB2FDMmh+lLmGjmpyT1p/kx8qZm1BuxJGOOU+oNgkCfaPJT1R2/muDXuxQ51uc/la6y28g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.7 - '@angular/core': 21.2.7 - '@angular/platform-browser': 21.2.7 + '@angular/common': 21.2.8 + '@angular/core': 21.2.8 + '@angular/platform-browser': 21.2.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ssr@21.2.6': - resolution: {integrity: sha512-Ss4gtUP/0S+KzRktz4fUh64ztiU0v7PiqZnEE4JKyp5bwzgHI2SSHlm6HTMUWjTWJnCsDWp5TbgAoibJ8B3p/w==} + '@angular/ssr@21.2.7': + resolution: {integrity: sha512-NhrkeD32s3H/jU9yJLqDy2JBNNatFyzqNkwieJw0waEvBRNbxXlcg5+g6rilcg2nHlH5hyzMQUzs7ZwZH9wCqg==} peerDependencies: '@angular/common': ^21.0.0 '@angular/core': ^21.0.0 @@ -1321,8 +1412,8 @@ packages: '@angular/platform-server': optional: true - '@antfu/eslint-config@8.0.0': - resolution: {integrity: sha512-IKiCfsa1vRgj8srB2azqiN3nOAcVyP/TZ5Ibiz0TDW9NoQPizTvkmRTSi1vo4ax0SL9TH/8uJLK6uCfd6bQzLA==} + '@antfu/eslint-config@8.1.1': + resolution: {integrity: sha512-y5/eAKlJUbQpeES2Pnb0i/VgbmqQ+srHJJNqbTKEBsxdLy3h1BqdS00zDpE+YeP71EWmlYJSTUhcJg4n4yMeAQ==} hasBin: true peerDependencies: '@angular-eslint/eslint-plugin': ^21.1.0 @@ -1405,10 +1496,6 @@ packages: '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} @@ -1421,10 +1508,6 @@ packages: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.29.1': resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} @@ -1466,10 +1549,6 @@ packages: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -1484,10 +1563,6 @@ packages: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - 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'} @@ -1532,16 +1607,6 @@ packages: resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} @@ -1942,38 +2007,37 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.0': resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.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 + '@braidai/lang@1.1.2': resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} @@ -1981,12 +2045,23 @@ packages: resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true + '@capsizecss/unpack@4.0.0': + resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==} + engines: {node: '>=18'} + '@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.2': + resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} + engines: {node: '>=18.0.0'} + + '@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'} @@ -2031,6 +2106,14 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} + '@dxup/nuxt@0.4.0': + resolution: {integrity: sha512-28LDotpr9G2knUse3cQYsOo6NJq5yhABv4ByRVRYJUmzf9Q31DI7rpRek4POlKy1aAcYyKgu5J2616pyqLohYg==} + peerDependencies: + typescript: '*' + + '@dxup/unimport@0.1.2': + resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==} + '@e18e/eslint-plugin@0.3.0': resolution: {integrity: sha512-hHgfpxsrZ2UYHcicA+tGZnmk19uJTaye9VH79O+XS8R4ona2Hx3xjhXghclNW58uXMk3xXlbYEOMr8thsoBmWg==} peerDependencies: @@ -2042,14 +2125,23 @@ packages: oxlint: optional: true - '@emnapi/core@1.7.1': - resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} @@ -2078,6 +2170,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} @@ -2090,6 +2188,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} @@ -2102,6 +2206,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -2114,6 +2224,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} @@ -2126,6 +2242,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} @@ -2138,6 +2260,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -2150,6 +2278,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} @@ -2162,6 +2296,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} @@ -2174,6 +2314,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} @@ -2186,6 +2332,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} @@ -2198,6 +2350,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} @@ -2210,6 +2368,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} @@ -2222,6 +2386,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} @@ -2234,6 +2404,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -2246,6 +2422,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} @@ -2258,6 +2440,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -2270,6 +2458,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -2282,6 +2476,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -2294,6 +2494,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -2306,6 +2512,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -2318,6 +2530,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -2330,6 +2548,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} @@ -2342,6 +2566,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} @@ -2354,6 +2584,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} @@ -2366,6 +2602,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} @@ -2378,6 +2620,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.7.1': resolution: {integrity: sha512-Ql2nJFwA8wUGpILYGOQaT1glPsmvEwE0d+a+l7AALLzQvInqdbXJdx7aSu0DpUX9dB1wMVBMhm99/++S3MdEtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2407,18 +2655,10 @@ packages: resolution: {integrity: sha512-lf19F24LSMfF8weXvW5QEtnLqW70u7kgit5e9PSx0MsHAFclGd1T9ynvWEMDT1w5J4Qt54tomGeAhdoAku1Xow==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.3': - resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.4': resolution: {integrity: sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.1': - resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.2.0': resolution: {integrity: sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2453,6 +2693,22 @@ packages: peerDependencies: vitest: ^4.1.0 + '@floating-ui/core@1.7.5': + resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + + '@floating-ui/dom@1.7.6': + resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} + + '@floating-ui/utils@0.2.11': + resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + + '@floating-ui/vue@1.1.11': + resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==} + + '@gwhitney/detect-indent@7.0.1': + resolution: {integrity: sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA==} + engines: {node: '>=12.20'} + '@harperfast/extended-iterable@1.0.3': resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==} @@ -2478,6 +2734,20 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@iconify/collections@1.0.670': + resolution: {integrity: sha512-32kW4oJ+QV1HCndcjwAprDyJJ0+T9ahP4y2lmLfekdGWNMwG1pVZah4biqT+HrZdEiBm8InJrbCvaitIusTE3g==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + + '@iconify/vue@5.0.0': + resolution: {integrity: sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==} + peerDependencies: + vue: '>=3' + '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -2612,6 +2882,19 @@ packages: '@types/node': optional: true + '@internationalized/date@3.12.0': + resolution: {integrity: sha512-/PyIMzK29jtXaGU23qTvNZxvBXRtKbNnGDFD+PY6CZw/Y8Ex8pFUzkuCJCG9aOqmShjqhS9mPqP6Dk5onQY8rQ==} + + '@internationalized/number@3.6.5': + resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==} + + '@ioredis/commands@1.5.1': + resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -2675,6 +2958,12 @@ packages: peerDependencies: tslib: '2' + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -2723,6 +3012,11 @@ packages: '@loaderkit/resolve@1.0.4': resolution: {integrity: sha512-rJzYKVcV4dxJv+vW6jlvagF8zvGxHJ2+HTr1e2qOejfmGhAApgJHl8Aog4mMszxceTRiKTTbnpgmTO1bEZHV/A==} + '@mapbox/node-pre-gyp@2.0.3': + resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} + engines: {node: '>=18'} + hasBin: true + '@modelcontextprotocol/sdk@1.26.0': resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} engines: {node: '>=18'} @@ -2876,17 +3170,20 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@napi-rs/wasm-runtime@1.1.2': resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@ngtools/webpack@21.2.6': - resolution: {integrity: sha512-SU6aMvFz/0uM2WhIGrZ/QexEIqT/VdLfcmy7OYAxOd3w7u2wqQao/1uSOEJo+BR+B48QYf7Z5LLpS8t1mWZYKQ==} + '@napi-rs/wasm-runtime@1.1.3': + resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@ngtools/webpack@21.2.7': + resolution: {integrity: sha512-Z4gjCaJbO16VUO8I2QjRNT87uRYxjTKSSImDhzgVgLpV2/stlv/akbLU8dJYa7pK7eIYb/tkNRxGn/AtCiViUQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^21.0.0 @@ -2897,6 +3194,18 @@ packages: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@npmcli/agent@4.0.0': resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} engines: {node: ^20.17.0 || >=22.9.0} @@ -2934,8197 +3243,11135 @@ packages: resolution: {integrity: sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==} engines: {node: ^20.17.0 || >=22.9.0} - '@ota-meshi/ast-token-store@0.3.0': - resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@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 - '@oxc-parser/binding-android-arm-eabi@0.124.0': - resolution: {integrity: sha512-+R9zCafSL8ovjokdPtorUp3sXrh8zQ2AC2L0ivXNvlLR0WS+5WdPkNVrnENq5UvzagM4Xgl0NPsJKz3Hv9+y8g==} + '@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/fonts@0.14.0': + resolution: {integrity: sha512-4uXQl9fa5F4ibdgU8zomoOcyMdnwgdem+Pi8JEqeDYI5yPR32Kam6HnuRr47dTb97CstaepAvXPWQUUHMtjsFQ==} + + '@nuxt/icon@2.2.1': + resolution: {integrity: sha512-GI840yYGuvHI0BGDQ63d6rAxGzG96jQcWrnaWIQKlyQo/7sx9PjXkSHckXUXyX1MCr9zY6U25Td6OatfY6Hklw==} + + '@nuxt/kit@3.21.2': + resolution: {integrity: sha512-Bd6m6mrDrqpBEbX+g0rc66/ALd1sxlgdx5nfK9MAYO0yKLTOSK7McSYz1KcOYn3LQFCXOWfvXwaqih/b+REI1g==} + engines: {node: '>=18.12.0'} + + '@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/ui@4.6.1': + resolution: {integrity: sha512-mBbBTaVDTR6ohOoAJUiV4T2RPXo2hyLewGPTiHjy1arzHPNFnmb/Tkl/2/JipF3Y8cahV4LhVUdkWKsdgI1OXw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@inertiajs/vue3': ^2.0.7 || ^3.0.0 + '@nuxt/content': ^3.0.0 + joi: ^18.0.0 + superstruct: ^2.0.0 + tailwindcss: ^4.0.0 + typescript: ^5.6.3 || ^6.0.0 + valibot: ^1.0.0 + vue-router: ^4.5.0 || ^5.0.0 + yup: ^1.7.0 + zod: ^3.24.0 || ^4.0.0 + peerDependenciesMeta: + '@inertiajs/vue3': + optional: true + '@nuxt/content': + optional: true + joi: + optional: true + superstruct: + optional: true + valibot: + optional: true + vue-router: + optional: true + yup: + optional: true + zod: + optional: true + + '@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 + + '@nuxtjs/color-mode@3.5.2': + resolution: {integrity: sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==} + + '@ota-meshi/ast-token-store@0.3.0': + resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@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] - '@oxc-parser/binding-android-arm64@0.124.0': - resolution: {integrity: sha512-ULHC/gVZ+nP4pd3kNNQTYaQ/e066BW/KuY5qUsvwkVWwOUQGDg+WpfyVOmQ4xfxoue6cMlkKkJ+ntdzfDXpNlg==} + '@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] - '@oxc-parser/binding-darwin-arm64@0.124.0': - resolution: {integrity: sha512-fGJ2hw7bnbUYn6UvTjp0m4WJ9zXz3cohgcwcgeo7gUZehpPNpvcVEVeIVHNmHnAuAw/ysf4YJR8DA1E+xCA4Lw==} + '@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] - '@oxc-parser/binding-darwin-x64@0.124.0': - resolution: {integrity: sha512-j0+re9pgps5BH2Tk3fm59Hi3QuLP3C4KhqXi6A+wRHHHJWDFR8mc/KI9mBrfk2JRT+15doGo+zv1eN75/9DuOw==} + '@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] - '@oxc-parser/binding-freebsd-x64@0.124.0': - resolution: {integrity: sha512-0k5mS0npnrhKy72UfF51lpOZ2ESoPWn6gdFw+RdeRWcokraDW1O2kSx3laQ+yk7cCEavQdJSpWCYS/GvBbUCXQ==} + '@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] - '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': - resolution: {integrity: sha512-P/i4eguRWvAUfGdfhQYg1jpwYkyUV6D3gefIH7HhmRl1Ph6P4IqTIEVcyJr1i/3vr1V5OHU4wonH6/ue/Qzvrw==} + '@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] - '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': - resolution: {integrity: sha512-/ameqFQH5fFP+66Atr8Ynv/2rYe4utcU7L4MoWS5JtrFLVO78g4qDLavyIlJxa6caSwYOvG/eO3c/DXqY5/6Rw==} + '@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] - '@oxc-parser/binding-linux-arm64-gnu@0.124.0': - resolution: {integrity: sha512-gNeyEcXTtfrRCbj2EfxWU85Fs0wIX3p44Y3twnvuMfkWlLrb9M1Z25AYNSKjJM+fdAjeeQCjw0on47zFuBYwQw==} + '@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] libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.124.0': - resolution: {integrity: sha512-uvG7v4Tz9S8/PVqY0SP0DLHxo4hZGe+Pv2tGVnwcsjKCCUPjplbrFVvDzXq+kOaEoUkiCY0Kt1hlZ6FDJ1LKNQ==} + '@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] libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': - resolution: {integrity: sha512-t7KZaaUhfp2au0MRpoENEFqwLKYDdptEry6V7pTAVdPEcFG4P6ii8yeGU9m6p5vb+b8WEKmdpGMNXBEYy7iJdw==} + '@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] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': - resolution: {integrity: sha512-eurGGaxHZiIQ+fBSageS8TAkRqZgdOiBeqNrWAqAPup9hXBTmQ0WcBjwsLElf+3jvDL9NhnX0dOgOqPfsjSjdg==} + '@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] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.124.0': - resolution: {integrity: sha512-d1V7/ll1i/LhqE/gZy6Wbz6evlk0egh2XKkwMI3epiojtbtUwQSLIER0Y3yDBBocPuWOjJdvmjtEmPTTLXje/w==} + '@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] libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.124.0': - resolution: {integrity: sha512-w1+cBvriUteOpox6ATqCFVkpGL47PFdcfCPGmgUZbd78Fw44U0gQkc+kVGvAOTvGrptMYgwomD1c6OTVvkrpGg==} + '@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] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.124.0': - resolution: {integrity: sha512-RRB1evQiXRtMCsQQiAh9U0H3HzguLpE0ytfStuhRgmOj7tqUCOVxkHsvM9geZjAax6NqVRj7VXx32qjjkZPsBw==} + '@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] libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.124.0': - resolution: {integrity: sha512-asVYN0qmSHlCU8H9Q47SmeJ/Z5EG4IWCC+QGxkfFboI5qh15aLlJnHmnrV61MwQRPXGnVC/sC3qKhrUyqGxUqw==} + '@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] libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.124.0': - resolution: {integrity: sha512-nhwuxm6B8pn9lzAzMUfa571L5hCXYwQo8C8cx5aGOuHWCzruR8gPJnRRXGBci+uGaIIQEZDyU/U6HDgrSp/JlQ==} + '@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] - '@oxc-parser/binding-wasm32-wasi@0.124.0': - resolution: {integrity: sha512-LWuq4Dl9tff7n+HjJcqoBjDlVCtruc0shgtdtGM+rTUIE9aFxHA/P+wCYR+aWMjN8m9vNaRME/sKXErmhmeKrA==} + '@oxc-minify/binding-wasm32-wasi@0.117.0': + resolution: {integrity: sha512-pSvjJ6cCCfEXSteWSiVfZhdRzvpmS3tLhlXrXTYiuTDFrkRCobRP39SRwAzK23rE9i/m2JAaES2xPEW6+xu85g==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.124.0': - resolution: {integrity: sha512-aOh3Lf3AeH0dgzT4yBXcArFZ8VhqNXwZ/xlN0GqBtgVaGoHOOqL2YHlcVIgT+ghsXPVR2PTtYgBiQ1CNK7jp5A==} + '@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] - '@oxc-parser/binding-win32-ia32-msvc@0.124.0': - resolution: {integrity: sha512-sib5xC0nz/+SCpaETBuHBz4SXS02KuG5HtyOcHsO/SK5ZvLRGhOZx0elDKawjb6adFkD7dQCqpXUS25wY6ELKQ==} + '@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] - '@oxc-parser/binding-win32-x64-msvc@0.124.0': - resolution: {integrity: sha512-UgojtjGUgZgAZQYt7SC6VO65OVdxEkRe2q+2vbHJO//18qw3Hrk6UvHGQKldsQKgbVcIBT/YBrt85YberiYIPQ==} + '@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] - '@oxc-project/types@0.113.0': - resolution: {integrity: sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==} - - '@oxc-project/types@0.122.0': - resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} - - '@oxc-project/types@0.124.0': - resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} - - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - 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: [linux] - libc: [glibc] + os: [android] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} + '@oxc-parser/binding-android-arm-eabi@0.124.0': + resolution: {integrity: sha512-+R9zCafSL8ovjokdPtorUp3sXrh8zQ2AC2L0ivXNvlLR0WS+5WdPkNVrnENq5UvzagM4Xgl0NPsJKz3Hv9+y8g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] - os: [linux] - libc: [musl] - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - - '@peculiar/asn1-cms@2.6.1': - resolution: {integrity: sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==} - - '@peculiar/asn1-csr@2.6.1': - resolution: {integrity: sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==} - - '@peculiar/asn1-ecc@2.6.1': - resolution: {integrity: sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==} - - '@peculiar/asn1-pfx@2.6.1': - resolution: {integrity: sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==} - - '@peculiar/asn1-pkcs8@2.6.1': - resolution: {integrity: sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==} - - '@peculiar/asn1-pkcs9@2.6.1': - resolution: {integrity: sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==} - - '@peculiar/asn1-rsa@2.6.1': - resolution: {integrity: sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==} - - '@peculiar/asn1-schema@2.6.0': - resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} - - '@peculiar/asn1-x509-attr@2.6.1': - resolution: {integrity: sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==} - - '@peculiar/asn1-x509@2.6.1': - resolution: {integrity: sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==} - - '@peculiar/x509@1.14.3': - resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} - engines: {node: '>=20.0.0'} - - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@playwright/test@1.59.1': - resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} - engines: {node: '>=18'} - hasBin: true - - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - - '@quansync/fs@1.0.0': - resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + '@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] - '@rolldown/binding-android-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==} + '@oxc-parser/binding-android-arm64@0.124.0': + resolution: {integrity: sha512-ULHC/gVZ+nP4pd3kNNQTYaQ/e066BW/KuY5qUsvwkVWwOUQGDg+WpfyVOmQ4xfxoue6cMlkKkJ+ntdzfDXpNlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + '@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] - '@rolldown/binding-darwin-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==} + '@oxc-parser/binding-darwin-arm64@0.124.0': + resolution: {integrity: sha512-fGJ2hw7bnbUYn6UvTjp0m4WJ9zXz3cohgcwcgeo7gUZehpPNpvcVEVeIVHNmHnAuAw/ysf4YJR8DA1E+xCA4Lw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.12': - resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + '@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] - '@rolldown/binding-darwin-x64@1.0.0-rc.4': - resolution: {integrity: sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==} + '@oxc-parser/binding-darwin-x64@0.124.0': + resolution: {integrity: sha512-j0+re9pgps5BH2Tk3fm59Hi3QuLP3C4KhqXi6A+wRHHHJWDFR8mc/KI9mBrfk2JRT+15doGo+zv1eN75/9DuOw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': - resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + '@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] - '@rolldown/binding-freebsd-x64@1.0.0-rc.4': - resolution: {integrity: sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==} + '@oxc-parser/binding-freebsd-x64@0.124.0': + resolution: {integrity: sha512-0k5mS0npnrhKy72UfF51lpOZ2ESoPWn6gdFw+RdeRWcokraDW1O2kSx3laQ+yk7cCEavQdJSpWCYS/GvBbUCXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': - resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + '@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] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': - resolution: {integrity: sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': + resolution: {integrity: sha512-P/i4eguRWvAUfGdfhQYg1jpwYkyUV6D3gefIH7HhmRl1Ph6P4IqTIEVcyJr1i/3vr1V5OHU4wonH6/ue/Qzvrw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@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] + + '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': + resolution: {integrity: sha512-/ameqFQH5fFP+66Atr8Ynv/2rYe4utcU7L4MoWS5JtrFLVO78g4qDLavyIlJxa6caSwYOvG/eO3c/DXqY5/6Rw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + '@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] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': - resolution: {integrity: sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==} + '@oxc-parser/binding-linux-arm64-gnu@0.124.0': + resolution: {integrity: sha512-gNeyEcXTtfrRCbj2EfxWU85Fs0wIX3p44Y3twnvuMfkWlLrb9M1Z25AYNSKjJM+fdAjeeQCjw0on47zFuBYwQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': - resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + '@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] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': - resolution: {integrity: sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==} + '@oxc-parser/binding-linux-arm64-musl@0.124.0': + resolution: {integrity: sha512-uvG7v4Tz9S8/PVqY0SP0DLHxo4hZGe+Pv2tGVnwcsjKCCUPjplbrFVvDzXq+kOaEoUkiCY0Kt1hlZ6FDJ1LKNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + '@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] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': + resolution: {integrity: sha512-t7KZaaUhfp2au0MRpoENEFqwLKYDdptEry6V7pTAVdPEcFG4P6ii8yeGU9m6p5vb+b8WEKmdpGMNXBEYy7iJdw==} engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] + cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + '@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] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': + resolution: {integrity: sha512-eurGGaxHZiIQ+fBSageS8TAkRqZgdOiBeqNrWAqAPup9hXBTmQ0WcBjwsLElf+3jvDL9NhnX0dOgOqPfsjSjdg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@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] + libc: [musl] + + '@oxc-parser/binding-linux-riscv64-musl@0.124.0': + resolution: {integrity: sha512-d1V7/ll1i/LhqE/gZy6Wbz6evlk0egh2XKkwMI3epiojtbtUwQSLIER0Y3yDBBocPuWOjJdvmjtEmPTTLXje/w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@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] + libc: [glibc] + + '@oxc-parser/binding-linux-s390x-gnu@0.124.0': + resolution: {integrity: sha512-w1+cBvriUteOpox6ATqCFVkpGL47PFdcfCPGmgUZbd78Fw44U0gQkc+kVGvAOTvGrptMYgwomD1c6OTVvkrpGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@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] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': - resolution: {integrity: sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==} + '@oxc-parser/binding-linux-x64-gnu@0.124.0': + resolution: {integrity: sha512-RRB1evQiXRtMCsQQiAh9U0H3HzguLpE0ytfStuhRgmOj7tqUCOVxkHsvM9geZjAax6NqVRj7VXx32qjjkZPsBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': - resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + '@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] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': - resolution: {integrity: sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==} + '@oxc-parser/binding-linux-x64-musl@0.124.0': + resolution: {integrity: sha512-asVYN0qmSHlCU8H9Q47SmeJ/Z5EG4IWCC+QGxkfFboI5qh15aLlJnHmnrV61MwQRPXGnVC/sC3qKhrUyqGxUqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + '@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] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==} + '@oxc-parser/binding-openharmony-arm64@0.124.0': + resolution: {integrity: sha512-nhwuxm6B8pn9lzAzMUfa571L5hCXYwQo8C8cx5aGOuHWCzruR8gPJnRRXGBci+uGaIIQEZDyU/U6HDgrSp/JlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': - resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + '@oxc-parser/binding-wasm32-wasi@0.117.0': + resolution: {integrity: sha512-+XRSNA0xt3pk/6CUHM7pykVe7M8SdifJk8LX1+fIp/zefvR3HBieZCbwG5un8gogNgh7srLycoh/cQA9uozv5g==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': - resolution: {integrity: sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==} + '@oxc-parser/binding-wasm32-wasi@0.124.0': + resolution: {integrity: sha512-LWuq4Dl9tff7n+HjJcqoBjDlVCtruc0shgtdtGM+rTUIE9aFxHA/P+wCYR+aWMjN8m9vNaRME/sKXErmhmeKrA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': - resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + '@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] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': - resolution: {integrity: sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==} + '@oxc-parser/binding-win32-arm64-msvc@0.124.0': + resolution: {integrity: sha512-aOh3Lf3AeH0dgzT4yBXcArFZ8VhqNXwZ/xlN0GqBtgVaGoHOOqL2YHlcVIgT+ghsXPVR2PTtYgBiQ1CNK7jp5A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': - resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + '@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: [x64] + cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': - resolution: {integrity: sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==} + '@oxc-parser/binding-win32-ia32-msvc@0.124.0': + resolution: {integrity: sha512-sib5xC0nz/+SCpaETBuHBz4SXS02KuG5HtyOcHsO/SK5ZvLRGhOZx0elDKawjb6adFkD7dQCqpXUS25wY6ELKQ==} engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] + cpu: [ia32] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.11': - resolution: {integrity: sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ==} - - '@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==} - - '@rolldown/pluginutils@1.0.0-rc.4': - resolution: {integrity: sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==} - - '@rolldown/pluginutils@1.0.0-rc.7': - resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} - - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@28.0.9': - resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@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] - '@rollup/plugin-node-resolve@16.0.3': - resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@oxc-parser/binding-win32-x64-msvc@0.124.0': + resolution: {integrity: sha512-UgojtjGUgZgAZQYt7SC6VO65OVdxEkRe2q+2vbHJO//18qw3Hrk6UvHGQKldsQKgbVcIBT/YBrt85YberiYIPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@rollup/plugin-replace@6.0.3': - resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@oxc-project/types@0.113.0': + resolution: {integrity: sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==} - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@oxc-project/types@0.117.0': + resolution: {integrity: sha512-C/kPXBphID44fXdsa2xSOCuzX8fKZiFxPsvucJ6Yfkr6CJlMA+kNLPNKyLoI+l9XlDsNxBrz6h7IIjKU8pB69w==} - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} - cpu: [arm] - os: [android] + '@oxc-project/types@0.123.0': + resolution: {integrity: sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew==} - '@rollup/rollup-android-arm-eabi@4.60.0': - resolution: {integrity: sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==} - cpu: [arm] - os: [android] + '@oxc-project/types@0.124.0': + resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} - '@rollup/rollup-android-arm-eabi@4.60.1': - resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + '@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] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.60.0': - resolution: {integrity: sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.60.1': - resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + '@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] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.60.0': - resolution: {integrity: sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.60.1': - resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + '@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] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.60.0': - resolution: {integrity: sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.60.1': - resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + '@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] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-arm64@4.60.0': - resolution: {integrity: sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-arm64@4.60.1': - resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.60.0': - resolution: {integrity: sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.60.1': - resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + '@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] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@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] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.60.0': - resolution: {integrity: sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==} + '@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] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': - resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} - cpu: [arm] + '@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] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} - cpu: [arm] + '@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] libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.60.0': - resolution: {integrity: sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==} - cpu: [arm] + '@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] - libc: [musl] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.60.1': - resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} - cpu: [arm] + '@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] - libc: [musl] + libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} - cpu: [arm64] + '@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] - libc: [glibc] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.60.0': - resolution: {integrity: sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==} - cpu: [arm64] + '@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] libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.60.1': - resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} - cpu: [arm64] + '@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] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} - cpu: [arm64] + '@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] libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.60.0': - resolution: {integrity: sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==} + '@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: [linux] - libc: [musl] + os: [openharmony] - '@rollup/rollup-linux-arm64-musl@4.60.1': - resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + '@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: [linux] - libc: [musl] + os: [win32] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} - cpu: [loong64] - os: [linux] - libc: [glibc] + '@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] - '@rollup/rollup-linux-loong64-gnu@4.60.0': - resolution: {integrity: sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==} - cpu: [loong64] - os: [linux] - libc: [glibc] + '@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] - '@rollup/rollup-linux-loong64-gnu@4.60.1': - resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.60.0': - resolution: {integrity: sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==} - cpu: [loong64] - os: [linux] - libc: [musl] + '@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] - '@rollup/rollup-linux-loong64-musl@4.60.1': - resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} - cpu: [loong64] - os: [linux] - libc: [musl] + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} - cpu: [ppc64] - os: [linux] - libc: [glibc] + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] - '@rollup/rollup-linux-ppc64-gnu@4.60.0': - resolution: {integrity: sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==} - cpu: [ppc64] - os: [linux] - libc: [glibc] + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] - '@rollup/rollup-linux-ppc64-gnu@4.60.1': - resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} - cpu: [ppc64] + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.60.0': - resolution: {integrity: sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==} - cpu: [ppc64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-musl@4.60.1': - resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} - cpu: [ppc64] + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.60.0': - resolution: {integrity: sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.60.1': - resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} - cpu: [riscv64] + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} - cpu: [riscv64] + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.60.0': - resolution: {integrity: sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==} - cpu: [riscv64] + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] os: [linux] - libc: [musl] + libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.60.1': - resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} - cpu: [riscv64] + '@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] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} - cpu: [s390x] - os: [linux] - libc: [glibc] + '@parcel/watcher-wasm@2.5.6': + resolution: {integrity: sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm - '@rollup/rollup-linux-s390x-gnu@4.60.0': - resolution: {integrity: sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] - '@rollup/rollup-linux-s390x-gnu@4.60.1': - resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} cpu: [x64] - os: [linux] - libc: [glibc] + os: [win32] - '@rollup/rollup-linux-x64-gnu@4.60.0': - resolution: {integrity: sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==} - cpu: [x64] - os: [linux] - libc: [glibc] + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} - '@rollup/rollup-linux-x64-gnu@4.60.1': - resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} - cpu: [x64] - os: [linux] - libc: [glibc] + '@peculiar/asn1-cms@2.6.1': + resolution: {integrity: sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==} - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} - cpu: [x64] - os: [linux] - libc: [musl] + '@peculiar/asn1-csr@2.6.1': + resolution: {integrity: sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==} - '@rollup/rollup-linux-x64-musl@4.60.0': - resolution: {integrity: sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==} - cpu: [x64] - os: [linux] - libc: [musl] + '@peculiar/asn1-ecc@2.6.1': + resolution: {integrity: sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==} - '@rollup/rollup-linux-x64-musl@4.60.1': - resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} - cpu: [x64] - os: [linux] - libc: [musl] + '@peculiar/asn1-pfx@2.6.1': + resolution: {integrity: sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==} - '@rollup/rollup-openbsd-x64@4.60.0': - resolution: {integrity: sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==} - cpu: [x64] - os: [openbsd] + '@peculiar/asn1-pkcs8@2.6.1': + resolution: {integrity: sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==} - '@rollup/rollup-openbsd-x64@4.60.1': - resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} - cpu: [x64] - os: [openbsd] + '@peculiar/asn1-pkcs9@2.6.1': + resolution: {integrity: sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==} - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} - cpu: [arm64] - os: [openharmony] + '@peculiar/asn1-rsa@2.6.1': + resolution: {integrity: sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==} - '@rollup/rollup-openharmony-arm64@4.60.0': - resolution: {integrity: sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==} - cpu: [arm64] - os: [openharmony] + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} - '@rollup/rollup-openharmony-arm64@4.60.1': - resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} - cpu: [arm64] - os: [openharmony] + '@peculiar/asn1-x509-attr@2.6.1': + resolution: {integrity: sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==} - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} - cpu: [arm64] - os: [win32] + '@peculiar/asn1-x509@2.6.1': + resolution: {integrity: sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==} - '@rollup/rollup-win32-arm64-msvc@4.60.0': - resolution: {integrity: sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==} - cpu: [arm64] - os: [win32] + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} - '@rollup/rollup-win32-arm64-msvc@4.60.1': - resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} - cpu: [arm64] - os: [win32] + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} - cpu: [ia32] - os: [win32] + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@rollup/rollup-win32-ia32-msvc@4.60.0': - resolution: {integrity: sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==} - cpu: [ia32] - os: [win32] + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true - '@rollup/rollup-win32-ia32-msvc@4.60.1': - resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} - cpu: [ia32] - os: [win32] + '@pnpm/constants@1001.3.1': + resolution: {integrity: sha512-2hf0s4pVrVEH8RvdJJ7YRKjQdiG8m0iAT26TTqXnCbK30kKwJW69VLmP5tED5zstmDRXcOeH5eRcrpkdwczQ9g==} + engines: {node: '>=18.12'} - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} - cpu: [x64] - os: [win32] + '@pnpm/core-loggers@1001.0.9': + resolution: {integrity: sha512-pW58m3ssrwVjwhlmTXDW1dh1sv2y6R2Gl5YvQInjM2d01/5mre/sYAY4MK3XfgEShZJQxv6wVXDUvyHHJ0oizg==} + engines: {node: '>=18.12'} + peerDependencies: + '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@rollup/rollup-win32-x64-gnu@4.60.0': - resolution: {integrity: sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==} - cpu: [x64] - os: [win32] + '@pnpm/error@1000.1.0': + resolution: {integrity: sha512-Dqc2IJJPjUatwc9Letw+vG29rnaMrDGi5g6WCx1HiZYm0obXbTmLygeRafMbgf+sLKXrWE1shOeiayQuczBdoA==} + engines: {node: '>=18.12'} - '@rollup/rollup-win32-x64-gnu@4.60.1': - resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} - cpu: [x64] - os: [win32] + '@pnpm/graceful-fs@1000.1.0': + resolution: {integrity: sha512-EsMX4slK0qJN2AR0/AYohY5m0HQNYGMNe+jhN74O994zp22/WbX+PbkIKyw3UQn39yQm2+z6SgwklDxbeapsmQ==} + engines: {node: '>=18.12'} - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} - cpu: [x64] - os: [win32] + '@pnpm/logger@1001.0.1': + resolution: {integrity: sha512-gdwlAMXC4Wc0s7Dmg/4wNybMEd/4lSd9LsXQxeg/piWY0PPXjgz1IXJWnVScx6dZRaaodWP3c1ornrw8mZdFZw==} + engines: {node: '>=18.12'} - '@rollup/rollup-win32-x64-msvc@4.60.0': - resolution: {integrity: sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==} - cpu: [x64] - os: [win32] + '@pnpm/manifest-utils@1002.0.5': + resolution: {integrity: sha512-2DSwQ6pP73IuJS5mCCtPd5fibJwuAdufXKuSL/Oq1n6AggCqy8616Xea1X3RH3z5dL4mn7Z4EZ+vnX8jX3Wrfw==} + engines: {node: '>=18.12'} + peerDependencies: + '@pnpm/logger': ^1001.0.1 - '@rollup/rollup-win32-x64-msvc@4.60.1': - resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} - cpu: [x64] - os: [win32] + '@pnpm/read-project-manifest@1001.2.6': + resolution: {integrity: sha512-BcNO50lAkE4m9JaJ0WmG3m/DH/qLSvMgZywtmb/dfyyLVu5nDZfDqmOd8U+f1NhLcLMbBK6AnS3hyUqZYvw9Vg==} + engines: {node: '>=18.12'} + peerDependencies: + '@pnpm/logger': ^1001.0.1 - '@rollup/wasm-node@4.53.5': - resolution: {integrity: sha512-WXEVEJrhhz6daplMeGBCpgLlv7+radmwvUZquNMUsLKrHDJxjzrnWTlsdueJDObkZ00cNmAF30LAD0tm+WytrQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + '@pnpm/semver.peer-range@1000.0.0': + resolution: {integrity: sha512-r6VzkrdH7ZKjPmAogTNvxuV/UyS/xwHNme+ZuEFiG0UthZgqudDftYtKmG20fcfrjG1lgJbbWICA8KvZy7mmbw==} + engines: {node: '>=18.12'} - '@schematics/angular@21.2.6': - resolution: {integrity: sha512-KpLD8R2S762jbLdNEepE+b7KjhVOKPFHHdgNqhPv0NiGLdsvXSOx1e63JvFacoCZdmP7n3/gwmyT/utcVvnsag==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@pnpm/text.comments-parser@1000.0.0': + resolution: {integrity: sha512-ivv/esrETOq9uMiKOC0ddVZ1BktEGsfsMQ9RWmrDpwPiqFSqWsIspnquxTBmm5GflC5N06fbqjGOpulZVYo3vQ==} + engines: {node: '>=18.12'} - '@sigstore/bundle@4.0.0': - resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} - engines: {node: ^20.17.0 || >=22.9.0} + '@pnpm/types@1001.3.0': + resolution: {integrity: sha512-NLTXheat/u7OEGg5M5vF6Z85zx8uKUZE0+whtX/sbFV2XL48RdnOWGPTKYuVVkv8M+launaLUTgGEXNs/ess2w==} + engines: {node: '>=18.12'} - '@sigstore/core@3.0.0': - resolution: {integrity: sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==} - engines: {node: ^20.17.0 || >=22.9.0} + '@pnpm/write-project-manifest@1000.0.16': + resolution: {integrity: sha512-zG68fk03ryot7TWUl9S/ShQ91uHWzIL9sVr2aQCuNHJo8G9kjsG6S0p58Zj/voahdDQeakZYYBSJ0mjNZeiJnw==} + engines: {node: '>=18.12'} - '@sigstore/protobuf-specs@0.5.0': - resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@sigstore/sign@4.0.1': - resolution: {integrity: sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==} - engines: {node: ^20.17.0 || >=22.9.0} + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - '@sigstore/tuf@4.0.0': - resolution: {integrity: sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==} - engines: {node: ^20.17.0 || >=22.9.0} + '@poppinss/dumper@0.7.0': + resolution: {integrity: sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==} - '@sigstore/verify@3.0.0': - resolution: {integrity: sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==} - engines: {node: ^20.17.0 || >=22.9.0} + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@sindresorhus/base62@1.0.0': - resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} + '@publint/pack@0.1.4': + resolution: {integrity: sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==} engines: {node: '>=18'} - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@solidjs/testing-library@0.8.10': - resolution: {integrity: sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ==} - engines: {node: '>= 14'} - peerDependencies: - '@solidjs/router': '>=0.9.0' - solid-js: '>=1.0.0' - peerDependenciesMeta: - '@solidjs/router': - optional: true + '@remirror/core-constants@3.0.0': + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@rolldown/binding-android-arm64@1.0.0-rc.13': + resolution: {integrity: sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@stylistic/eslint-plugin@5.10.0': - resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 + '@rolldown/binding-android-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@sveltejs/acorn-typescript@1.0.8': - resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==} - peerDependencies: - acorn: ^8.9.0 + '@rolldown/binding-android-arm64@1.0.0-rc.4': + resolution: {integrity: sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@sveltejs/vite-plugin-svelte@7.0.0': - resolution: {integrity: sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==} - engines: {node: ^20.19 || ^22.12 || >=24} - peerDependencies: - svelte: ^5.46.4 - vite: ^8.0.0-beta.7 || ^8.0.0 + '@rolldown/binding-darwin-arm64@1.0.0-rc.13': + resolution: {integrity: sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@testing-library/dom@10.4.1': - resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} - engines: {node: '>=18'} + '@rolldown/binding-darwin-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@testing-library/jest-dom@6.9.1': - resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@rolldown/binding-darwin-arm64@1.0.0-rc.4': + resolution: {integrity: sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@testing-library/react@16.3.2': - resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.13': + resolution: {integrity: sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@testing-library/svelte-core@1.0.0': - resolution: {integrity: sha512-VkUePoLV6oOYwSUvX6ShA8KLnJqZiYMIbP2JW2t0GLWLkJxKGvuH5qrrZBV/X7cXFnLGuFQEC7RheYiZOW68KQ==} - engines: {node: '>=16'} - peerDependencies: - svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 + '@rolldown/binding-darwin-x64@1.0.0-rc.15': + resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@testing-library/svelte@5.3.1': - resolution: {integrity: sha512-8Ez7ZOqW5geRf9PF5rkuopODe5RGy3I9XR+kc7zHh26gBiktLaxTfKmhlGaSHYUOTQE7wFsLMN9xCJVCszw47w==} - engines: {node: '>= 10'} - peerDependencies: - svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 - vite: '*' - vitest: '*' - peerDependenciesMeta: - vite: - optional: true - vitest: - optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.4': + resolution: {integrity: sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@testing-library/user-event@14.6.1': - resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' + '@rolldown/binding-freebsd-x64@1.0.0-rc.13': + resolution: {integrity: sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@tsconfig/svelte@5.0.8': - resolution: {integrity: sha512-UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.15': + resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} + '@rolldown/binding-freebsd-x64@1.0.0-rc.4': + resolution: {integrity: sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@tufjs/models@4.0.0': - resolution: {integrity: sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==} - engines: {node: ^20.17.0 || >=22.9.0} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13': + resolution: {integrity: sha512-JW/e4yPIXLms+jmnbwwy5LA/LxVwZUWLN8xug+V200wzaVi5TEGIWQlh8o91gWYFxW609euI98OCCemmWGuPrw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': + resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': + resolution: {integrity: sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': + resolution: {integrity: sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.13': + resolution: {integrity: sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] - '@types/body-parser@1.19.6': - resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': + resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': + resolution: {integrity: sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.13': + resolution: {integrity: sha512-eRrPvat2YaVQcwwKi/JzOP6MKf1WRnOCr+VaI3cTWz3ZoLcP/654z90lVCJ4dAuMEpPdke0n+qyAqXDZdIC4rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': + resolution: {integrity: sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] - '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.13': + resolution: {integrity: sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] - '@types/express-serve-static-core@4.19.7': - resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': + resolution: {integrity: sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] - '@types/express-serve-static-core@5.1.0': - resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.13': + resolution: {integrity: sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@types/express@4.17.25': - resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@types/express@5.0.6': - resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': + resolution: {integrity: sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.13': + resolution: {integrity: sha512-viLS5C5et8NFtLWw9Sw3M/w4vvnVkbWkO7wSNh3C+7G1+uCkGpr6PcjNDSFcNtmXY/4trjPBqUfcOL+P3sWy/g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': + resolution: {integrity: sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@types/http-proxy@1.17.17': - resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13': + resolution: {integrity: sha512-Fqa3Tlt1xL4wzmAYxGNFV36Hb+VfPc9PYU+E25DAnswXv3ODDu/yyWjQDbXMo5AGWkQVjLgQExuVu8I/UaZhPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] - '@types/jsdom@28.0.1': - resolution: {integrity: sha512-GJq2QE4TAZ5ajSoCasn5DOFm8u1mI3tIFvM5tIq3W5U/RTB6gsHwc6Yhpl91X9VSDOUVblgXmG+2+sSvFQrdlw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': + resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] - '@types/jsonfile@6.1.4': - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': + resolution: {integrity: sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] - '@types/katex@0.16.8': - resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.13': + resolution: {integrity: sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': + resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': + resolution: {integrity: sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@rolldown/debug@1.0.0-rc.13': + resolution: {integrity: sha512-4tOhFX3PNEA5vUe+ZX0Jt4zN+pQc6BI9ZwRLJFYQ3Hw2PhvpnPYaGqQUqVvb3COT67eBioNJLq8DG5oVTmulOw==} - '@types/node@24.10.4': - resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} + '@rolldown/pluginutils@1.0.0-rc.13': + resolution: {integrity: sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==} - '@types/node@25.5.0': - resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} + '@rolldown/pluginutils@1.0.0-rc.15': + resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} - '@types/node@25.5.2': - resolution: {integrity: sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + '@rolldown/pluginutils@1.0.0-rc.4': + resolution: {integrity: sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==} - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} - '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + '@rollup/plugin-alias@5.1.1': + resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} + engines: {node: '>=14.0.0'} peerDependencies: - '@types/react': ^19.2.0 - - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/retry@0.12.2': - resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - - '@types/send@0.17.6': - resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} - - '@types/send@1.2.1': - resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - - '@types/serve-index@1.9.4': - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - - '@types/serve-static@1.15.10': - resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} - - '@types/serve-static@2.2.0': - resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} - - '@types/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/eslint-plugin@8.58.0': - resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-alias@6.0.0': + resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} + engines: {node: '>=20.19.0'} peerDependencies: - '@typescript-eslint/parser': ^8.58.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + rollup: '>=4.0.0' + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/parser@8.57.0': - resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-commonjs@28.0.9': + resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/parser@8.58.0': - resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-commonjs@29.0.2': + resolution: {integrity: sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/project-service@8.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/project-service@8.58.0': - resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} peerDependencies: - typescript: '>=4.8.4 <6.1.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/rule-tester@8.57.0': - resolution: {integrity: sha512-qs4OapXmAIj3so85/20lQG1WrBSSvDE/3b42Orl3lpZkaOlNXtbfKzL+9EPaY5wSEgdlhKEpympAMFHPG9i72Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.58.0': - resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/tsconfig-utils@8.57.0': - resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + engines: {node: '>=14.0.0'} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/tsconfig-utils@8.58.0': - resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/plugin-terser@1.0.0': + resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==} + engines: {node: '>=20.0.0'} peerDependencies: - typescript: '>=4.8.4 <6.1.0' + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/type-utils@8.58.0': - resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@typescript-eslint/types@8.57.0': - resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/rollup-android-arm-eabi@4.60.1': + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + cpu: [arm] + os: [android] - '@typescript-eslint/types@8.58.0': - resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/rollup-android-arm64@4.60.1': + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + cpu: [arm64] + os: [android] - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' + '@rollup/rollup-darwin-arm64@4.60.1': + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + cpu: [arm64] + os: [darwin] - '@typescript-eslint/typescript-estree@8.58.0': - resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' + '@rollup/rollup-darwin-x64@4.60.1': + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + cpu: [x64] + os: [darwin] - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + '@rollup/rollup-freebsd-arm64@4.60.1': + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + cpu: [arm64] + os: [freebsd] - '@typescript-eslint/utils@8.58.0': - resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + '@rollup/rollup-freebsd-x64@4.60.1': + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + cpu: [x64] + os: [freebsd] - '@typescript-eslint/visitor-keys@8.57.0': - resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + cpu: [arm] + os: [linux] + libc: [glibc] - '@typescript-eslint/visitor-keys@8.58.0': - resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + cpu: [arm] + os: [linux] + libc: [musl] - '@vitejs/plugin-basic-ssl@2.1.4': - resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - peerDependencies: - vite: ^6.0.0 || ^7.0.0 + '@rollup/rollup-linux-arm64-gnu@4.60.1': + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@vitejs/plugin-react@6.0.1': - resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 - babel-plugin-react-compiler: ^1.0.0 - vite: ^8.0.0 - peerDependenciesMeta: - '@rolldown/plugin-babel': - optional: true - babel-plugin-react-compiler: - optional: true + '@rollup/rollup-linux-arm64-musl@4.60.1': + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + cpu: [arm64] + os: [linux] + libc: [musl] - '@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 + '@rollup/rollup-linux-loong64-gnu@4.60.1': + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + cpu: [loong64] + os: [linux] + libc: [glibc] - '@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 + '@rollup/rollup-linux-loong64-musl@4.60.1': + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} + cpu: [loong64] + os: [linux] + libc: [musl] - '@vitest/eslint-plugin@1.6.14': - resolution: {integrity: sha512-PXZ5ysw4eHU9h8nDtBvVcGC7Z2C/T9CFdheqSw1NNXFYqViojub0V9bgdYI67iBTOcra2mwD0EYldlY9bGPf2Q==} - engines: {node: '>=18'} - peerDependencies: - '@typescript-eslint/eslint-plugin': '*' - eslint: '>=8.57.0' - typescript: '>=5.0.0' - vitest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - typescript: - optional: true - vitest: - optional: true + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@vitest/expect@4.1.2': - resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} + '@rollup/rollup-linux-ppc64-musl@4.60.1': + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} + cpu: [ppc64] + os: [linux] + libc: [musl] - '@vitest/mocker@4.1.2': - resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} - peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] - '@vitest/pretty-format@4.1.2': - resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} + '@rollup/rollup-linux-riscv64-musl@4.60.1': + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + cpu: [riscv64] + os: [linux] + libc: [musl] - '@vitest/runner@4.1.2': - resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} + '@rollup/rollup-linux-s390x-gnu@4.60.1': + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] - '@vitest/snapshot@4.1.2': - resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} + '@rollup/rollup-linux-x64-gnu@4.60.1': + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + cpu: [x64] + os: [linux] + libc: [glibc] - '@vitest/spy@4.1.2': - resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} + '@rollup/rollup-linux-x64-musl@4.60.1': + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + cpu: [x64] + os: [linux] + libc: [musl] - '@vitest/utils@4.1.2': - resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} + '@rollup/rollup-openbsd-x64@4.60.1': + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} + cpu: [x64] + os: [openbsd] - '@volar/language-core@2.4.28': - resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + '@rollup/rollup-openharmony-arm64@4.60.1': + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + cpu: [arm64] + os: [openharmony] - '@volar/source-map@2.4.28': - resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + '@rollup/rollup-win32-arm64-msvc@4.60.1': + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + cpu: [arm64] + os: [win32] - '@volar/typescript@2.4.28': - resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + '@rollup/rollup-win32-ia32-msvc@4.60.1': + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + cpu: [ia32] + os: [win32] - '@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 + '@rollup/rollup-win32-x64-gnu@4.60.1': + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + cpu: [x64] + os: [win32] - '@vue/babel-helper-vue-transform-on@2.0.1': - resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==} + '@rollup/rollup-win32-x64-msvc@4.60.1': + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + cpu: [x64] + os: [win32] - '@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 + '@rollup/wasm-node@4.53.5': + resolution: {integrity: sha512-WXEVEJrhhz6daplMeGBCpgLlv7+radmwvUZquNMUsLKrHDJxjzrnWTlsdueJDObkZ00cNmAF30LAD0tm+WytrQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true - '@vue/babel-plugin-resolve-type@2.0.1': - resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@schematics/angular@21.2.7': + resolution: {integrity: sha512-aqEj3RyBtmH+41HZvrbfrpCo0e+0NzwyQyNSC/wLDShVqoidBtPbEdHU1FZ4+ni41da7rI3F12gUuAHws27kMA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@vue/compiler-core@3.5.25': - resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} + '@shikijs/core@4.0.2': + resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} + engines: {node: '>=20'} - '@vue/compiler-core@3.5.30': - resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} + '@shikijs/engine-javascript@4.0.2': + resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} + engines: {node: '>=20'} - '@vue/compiler-core@3.5.32': - resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} + '@shikijs/engine-oniguruma@4.0.2': + resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} + engines: {node: '>=20'} - '@vue/compiler-dom@3.5.25': - resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} + '@shikijs/langs@4.0.2': + resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} + engines: {node: '>=20'} - '@vue/compiler-dom@3.5.30': - resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} + '@shikijs/primitive@4.0.2': + resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} + engines: {node: '>=20'} - '@vue/compiler-dom@3.5.32': - resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} + '@shikijs/themes@4.0.2': + resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} + engines: {node: '>=20'} - '@vue/compiler-sfc@3.5.25': - resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} + '@shikijs/types@4.0.2': + resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} + engines: {node: '>=20'} - '@vue/compiler-sfc@3.5.30': - resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@vue/compiler-sfc@3.5.32': - resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} + '@sigstore/bundle@4.0.0': + resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} + engines: {node: ^20.17.0 || >=22.9.0} - '@vue/compiler-ssr@3.5.25': - resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} + '@sigstore/core@3.0.0': + resolution: {integrity: sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==} + engines: {node: ^20.17.0 || >=22.9.0} - '@vue/compiler-ssr@3.5.30': - resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} + '@sigstore/protobuf-specs@0.5.0': + resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} + engines: {node: ^18.17.0 || >=20.5.0} - '@vue/compiler-ssr@3.5.32': - resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} + '@sigstore/sign@4.0.1': + resolution: {integrity: sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==} + engines: {node: ^20.17.0 || >=22.9.0} - '@vue/devtools-api@7.7.9': - resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + '@sigstore/tuf@4.0.0': + resolution: {integrity: sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==} + engines: {node: ^20.17.0 || >=22.9.0} - '@vue/devtools-api@8.0.7': - resolution: {integrity: sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==} + '@sigstore/verify@3.0.0': + resolution: {integrity: sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==} + engines: {node: ^20.17.0 || >=22.9.0} - '@vue/devtools-kit@7.7.9': - resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + '@simple-git/args-pathspec@1.0.2': + resolution: {integrity: sha512-nEFVejViHUoL8wU8GTcwqrvqfUG40S5ts6S4fr1u1Ki5CklXlRDYThPVA/qurTmCYFGnaX3XpVUmICLHdvhLaA==} - '@vue/devtools-kit@8.0.7': - resolution: {integrity: sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==} + '@simple-git/argv-parser@1.0.3': + resolution: {integrity: sha512-NMKv9sJcSN2VvnPT9Ja7eKfGy8Q8mMFLwPTCcuZMtv3+mYcLIZflg31S/tp2XCCyiY7YAx6cgBHQ0fwA2fWHpQ==} - '@vue/devtools-shared@7.7.9': - resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + '@sindresorhus/base62@1.0.0': + resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} + engines: {node: '>=18'} - '@vue/devtools-shared@8.0.7': - resolution: {integrity: sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} - '@vue/language-core@3.2.6': - resolution: {integrity: sha512-xYYYX3/aVup576tP/23sEUpgiEnujrENaoNRbaozC1/MA9I6EGFQRJb4xrt/MmUCAGlxTKL2RmT8JLTPqagCkg==} + '@sindresorhus/is@7.2.0': + resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} + engines: {node: '>=18'} - '@vue/reactivity@3.5.32': - resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} - '@vue/runtime-core@3.5.32': - resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} + '@solidjs/testing-library@0.8.10': + resolution: {integrity: sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ==} + engines: {node: '>= 14'} + peerDependencies: + '@solidjs/router': '>=0.9.0' + solid-js: '>=1.0.0' + peerDependenciesMeta: + '@solidjs/router': + optional: true - '@vue/runtime-dom@3.5.32': - resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} + '@speed-highlight/core@1.2.15': + resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==} - '@vue/server-renderer@3.5.32': - resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - vue: 3.5.32 + eslint: ^9.0.0 || ^10.0.0 - '@vue/shared@3.5.25': - resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} + '@sveltejs/acorn-typescript@1.0.8': + resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==} + peerDependencies: + acorn: ^8.9.0 - '@vue/shared@3.5.30': - resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} + '@sveltejs/vite-plugin-svelte@7.0.0': + resolution: {integrity: sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==} + engines: {node: ^20.19 || ^22.12 || >=24} + peerDependencies: + svelte: ^5.46.4 + vite: ^8.0.0-beta.7 || ^8.0.0 - '@vue/shared@3.5.32': - resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + '@tailwindcss/node@4.2.2': + resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==} - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + '@tailwindcss/oxide-android-arm64@4.2.2': + resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + '@tailwindcss/oxide-darwin-arm64@4.2.2': + resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + '@tailwindcss/oxide-darwin-x64@4.2.2': + resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + '@tailwindcss/oxide-freebsd-x64@4.2.2': + resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2': + resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.2': + resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + '@tailwindcss/oxide-linux-arm64-musl@4.2.2': + resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + '@tailwindcss/oxide-linux-x64-gnu@4.2.2': + resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + '@tailwindcss/oxide-linux-x64-musl@4.2.2': + resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + '@tailwindcss/oxide-wasm32-wasi@4.2.2': + resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@tailwindcss/oxide-win32-arm64-msvc@4.2.2': + resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + '@tailwindcss/oxide-win32-x64-msvc@4.2.2': + resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@tailwindcss/oxide@4.2.2': + resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} + engines: {node: '>= 20'} - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + '@tailwindcss/postcss@4.2.2': + resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==} - abbrev@4.0.0: - resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} - engines: {node: ^20.17.0 || >=22.9.0} + '@tailwindcss/vite@4.2.2': + resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} + '@tanstack/virtual-core@3.13.23': + resolution: {integrity: sha512-zSz2Z2HNyLjCplANTDyl3BcdQJc2k1+yyFoKhNRmCr7V7dY8o8q5m8uFTI1/Pg1kL+Hgrz6u3Xo6eFUB7l66cg==} - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} + '@tanstack/vue-table@8.21.3': + resolution: {integrity: sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==} + engines: {node: '>=12'} peerDependencies: - acorn: ^8.14.0 + vue: '>=3.2' - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + '@tanstack/vue-virtual@3.13.23': + resolution: {integrity: sha512-b5jPluAR6U3eOq6GWAYSpj3ugnAIZgGR0e6aGAgyRse0Yu6MVQQ0ZWm9SArSXWtageogn6bkVD8D//c4IjW3xQ==} peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true + vue: ^2.7.0 || ^3.0.0 - adjust-sourcemap-loader@4.0.0: - resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} - engines: {node: '>=8.9'} + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} + engines: {node: '>=18'} peerDependencies: - ajv: ^8.0.0 + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: - ajv: + '@types/react': + optional: true + '@types/react-dom': optional: true - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + '@testing-library/svelte-core@1.0.0': + resolution: {integrity: sha512-VkUePoLV6oOYwSUvX6ShA8KLnJqZiYMIbP2JW2t0GLWLkJxKGvuH5qrrZBV/X7cXFnLGuFQEC7RheYiZOW68KQ==} + engines: {node: '>=16'} peerDependencies: - ajv: ^8.0.0 + svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 + + '@testing-library/svelte@5.3.1': + resolution: {integrity: sha512-8Ez7ZOqW5geRf9PF5rkuopODe5RGy3I9XR+kc7zHh26gBiktLaxTfKmhlGaSHYUOTQE7wFsLMN9xCJVCszw47w==} + engines: {node: '>= 10'} + peerDependencies: + svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 + vite: '*' + vitest: '*' peerDependenciesMeta: - ajv: + vite: + optional: true + vitest: optional: true - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} peerDependencies: - ajv: ^8.8.2 + '@testing-library/dom': '>=7.21.4' - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + '@tiptap/core@3.22.2': + resolution: {integrity: sha512-atq35NkpeEphH6vNYJ0pTLLBA73FAbvTV9Ovd3AaTC5s99/KF5Q86zVJXvml8xPRcMGM6dLp+eSSd06oTscMSA==} + peerDependencies: + '@tiptap/pm': ^3.22.2 - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + '@tiptap/extension-blockquote@3.22.2': + resolution: {integrity: sha512-iTdlmGFcgxi4LKaOW2Rc9/yD83qTXgRm5BN3vCHWy5+TbEnReYxYqU5qKsbtTbKy30sO8TJTdAXTZ29uomShQQ==} + peerDependencies: + '@tiptap/core': ^3.22.2 - algoliasearch@5.48.1: - resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} - engines: {node: '>= 14.0.0'} + '@tiptap/extension-bold@3.22.2': + resolution: {integrity: sha512-bqsPJyKcT/RWse4e16U2EKhraR8a2+98TUuk1amG3yCyFJZStoO/j+pN0IqZdZZjr3WtxFyvwWp7Kc59UN+jUA==} + peerDependencies: + '@tiptap/core': ^3.22.2 - alien-signals@3.1.1: - resolution: {integrity: sha512-ogkIWbVrLwKtHY6oOAXaYkAxP+cTH7V5FZ5+Tm4NZFd8VDZ6uNMDrfzqctTZ42eTMCSR3ne3otpcxmqSnFfPYA==} + '@tiptap/extension-bubble-menu@3.22.2': + resolution: {integrity: sha512-5hbyDOSkJwA2uh0v9Mm0Dd9bb9inx6tHBEDSH2tCB9Rm23poz3yOreB7SNX8xDMe5L0/PQesfWC14RitcmhKPg==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + '@tiptap/extension-bullet-list@3.22.2': + resolution: {integrity: sha512-llrTJnA72RGcWLLO+ro0QN4sjHynhaCerhpV+GZE/ATd8BqV/ekQFdBLJrvC/09My2XQfCwLsyCh92NPXUdELA==} + peerDependencies: + '@tiptap/extension-list': ^3.22.2 - ansi-escapes@7.2.0: - resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} - engines: {node: '>=18'} + '@tiptap/extension-code-block@3.22.2': + resolution: {integrity: sha512-PEwFlDyvtKF19WCrOFg77qJV9WqhvjCY4ZoXlHP9Hx0KTcOA8W39mtw8d4NWU5pLRK94yHKF1DVVL8UUkEOnww==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true + '@tiptap/extension-code@3.22.2': + resolution: {integrity: sha512-iYFY+yzfYA9MKt7nupyW/PzqL9XC2D0mC8l1z2Y10i0/fGL8NbqIYjhNUAyXGqH3QWcI+DirI66842y2OadPOg==} + peerDependencies: + '@tiptap/core': ^3.22.2 - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + '@tiptap/extension-collaboration@3.22.2': + resolution: {integrity: sha512-+viAk2EVoYgJEmJpvnT1NBCK+intvwHEMp7T7luYffkQz8irGKF/7YcgauXp5NBLPTsnIzDWQuY571mo8XMcKg==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 + '@tiptap/y-tiptap': ^3.0.2 + yjs: ^13 - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} + '@tiptap/extension-document@3.22.2': + resolution: {integrity: sha512-yPw9pQeVC4QDh86TuyKCZxxM4g0NAw7mEtGnAo6EpxaBQr1wyBr9yFpys+QTsQpRTmyTf1VHp4iTTLuWHMljIw==} + peerDependencies: + '@tiptap/core': ^3.22.2 - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + '@tiptap/extension-drag-handle-vue-3@3.22.2': + resolution: {integrity: sha512-AuX2TTXgY/Z7eO+2nR4YJq2ibzKl9zjmmLFBPXlaBmFtDeL5ks5SOkMdGYyJp766VTuT3AWnq/07evwYB88jzA==} + peerDependencies: + '@tiptap/extension-drag-handle': ^3.22.2 + '@tiptap/pm': ^3.22.2 + '@tiptap/vue-3': ^3.22.2 + vue: ^3.0.0 - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + '@tiptap/extension-drag-handle@3.22.2': + resolution: {integrity: sha512-9L2krYNe+ZxI7hULAuxE0i9wKMxL8eIoiH866hrOenb2C8PySQLWy/BjWwu3Z6fBFwCG+29wiMeRL7WE128oxg==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/extension-collaboration': ^3.22.2 + '@tiptap/extension-node-range': ^3.22.2 + '@tiptap/pm': ^3.22.2 + '@tiptap/y-tiptap': ^3.0.2 - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} + '@tiptap/extension-dropcursor@3.22.2': + resolution: {integrity: sha512-sDv3fv4LtX0X4nqwh9Gn3C/aZXT+C2JlK7tJovPOpaYP/a6hr03Sn35X5moAfgMCSiWFygEvlTriqwmCsJuxog==} + peerDependencies: + '@tiptap/extensions': ^3.22.2 - ansis@4.2.0: - resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} - engines: {node: '>=14'} + '@tiptap/extension-floating-menu@3.22.2': + resolution: {integrity: sha512-r0ZTeh9rNtj9Api+G0YyaB+tAKPDn7aYWg+qSrmAC5EyUPee6Zjn3zlw0q4renCeQflvNRK20xHM8zokC41jOA==} + peerDependencies: + '@floating-ui/dom': ^1.0.0 + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + '@tiptap/extension-gapcursor@3.22.2': + resolution: {integrity: sha512-rR2OLrl/k2kj7xehaZHq0Y7T+1wy2DOTabir9LsTrktTFEcklrh9qY1KC6rEBkwMKaWrmignR1l39kS6RlKFNw==} + peerDependencies: + '@tiptap/extensions': ^3.22.2 - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + '@tiptap/extension-hard-break@3.22.2': + resolution: {integrity: sha512-ChsoqF4XRp6EWatTRlXL4LMFh/ggwRVCyt09brSfjJV5knFaXlECSa5/+rKLMLMULaj6dVlJqoAD15exgu2HHA==} + peerDependencies: + '@tiptap/core': ^3.22.2 - are-docs-informative@0.0.2: - resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} - engines: {node: '>=14'} + '@tiptap/extension-heading@3.22.2': + resolution: {integrity: sha512-QPHLef+ikAyf7RVc4EdGeKxH4OEGb3ueCEwJ41RcYPtZ1BX9ueei7FC936guTdL1U7w3vQ65qfy86HznzkYgvw==} + peerDependencies: + '@tiptap/core': ^3.22.2 - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + '@tiptap/extension-horizontal-rule@3.22.2': + resolution: {integrity: sha512-Oz8KN5KJAWV1mFNE9UIWXdMD6xa5zPf/0yLsT8V4sgaRm+VsdFKllN58BY9qCZf/kIZbaOez5KkaoeAcm0MAZg==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - args-tokenizer@0.3.0: - resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} + '@tiptap/extension-image@3.22.2': + resolution: {integrity: sha512-xFCgwreF6sn5mQ/hFDQKn41NIbbfks/Ou9j763Djf3pWsastgzdgwifQOpXVI3aSsqlKUO3o8/8R/yQczvZcwg==} + peerDependencies: + '@tiptap/core': ^3.22.2 - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + '@tiptap/extension-italic@3.22.2': + resolution: {integrity: sha512-fmtQu2HDnV3sOZPdz0+1lOLI7UtrIhusohJj2UwOLQxG8qqhLwbvWx2OQTlfblgY0z+CjLRr6ANbNDxOTIblfg==} + peerDependencies: + '@tiptap/core': ^3.22.2 - aria-query@5.3.1: - resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} - engines: {node: '>= 0.4'} + '@tiptap/extension-link@3.22.2': + resolution: {integrity: sha512-TXfSoKmng5pecvQUZqdsx6ICeob5V5hhYOj2vCEtjfcjWsyCndqFIl1w+Nt/yI5ehrFNOVPyj3ZvcELuuAW6pw==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} + '@tiptap/extension-list-item@3.22.2': + resolution: {integrity: sha512-Mk+iiLIFh8Pfuarr6mWfTO7QJbd2ZQd0nGNhNWXlGAO7DJCb4BP9nj4bEIJ17SbcykGRjsi4WMqY50z4MHXqKQ==} + peerDependencies: + '@tiptap/extension-list': ^3.22.2 - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + '@tiptap/extension-list-keymap@3.22.2': + resolution: {integrity: sha512-TozU9V2vldMUPpTXnfLCO33EO06jLxn7uEJTMBnN4iX/dLV3cBVCbE4kHyDKS0sLd7joUeekS06vYP9uQb1hFw==} + peerDependencies: + '@tiptap/extension-list': ^3.22.2 - asn1js@3.0.7: - resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} - engines: {node: '>=12.0.0'} + '@tiptap/extension-list@3.22.2': + resolution: {integrity: sha512-Vq9xScgkA2A3Zj9dQ4WUBKK7u7UCzeSFRz9FcKTQVZHRPbZoqFGnlRUVngqsE7JXrCOthXQ1dXxgk40nAsBFRw==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + '@tiptap/extension-mention@3.22.2': + resolution: {integrity: sha512-nWcDiIkh/V7aUZJhirimCuiWUPByiEPwdJCTgty7dbwEfZyrlldAnbzf66o3z2XKiFNeHRaOyo86XXnbY4euDw==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 + '@tiptap/suggestion': ^3.22.2 - ast-kit@2.2.0: - resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} - engines: {node: '>=20.19.0'} + '@tiptap/extension-node-range@3.22.2': + resolution: {integrity: sha512-hipsIUXrU9RUcc32BLJ/mtfiCtgV35oMTMxEJTJWxJhebEw0iWd7L6cLwHbKui6HgH4W82Zo1s1Ia0Owq3Nu8w==} + peerDependencies: + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - ast-walker-scope@0.8.3: - resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} - engines: {node: '>=20.19.0'} + '@tiptap/extension-ordered-list@3.22.2': + resolution: {integrity: sha512-K7qxoBKmsVkAd3kW64ZRCUPFrDcNGpXRDUBx9YgAO/bTfsfxtH2oil+igsUWGXPczpP4yoHPKjTfhpBpLjGl6Q==} + peerDependencies: + '@tiptap/extension-list': ^3.22.2 - autoprefixer@10.4.23: - resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true + '@tiptap/extension-paragraph@3.22.2': + resolution: {integrity: sha512-EHZZzxVhvzEPDPWtRBF1YKhB+WCUjd1C2NhjHfL3Dl71PBqM3ZWA6qN7NDGPyNyGGWauui/NR/4X+5AfPqlHyA==} peerDependencies: - postcss: ^8.1.0 + '@tiptap/core': ^3.22.2 - autoprefixer@10.4.27: - resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true + '@tiptap/extension-placeholder@3.22.2': + resolution: {integrity: sha512-xYw733CmSeG7MyYBDdV5NFiwlBdXXzw4Mvjb2t4QRXagkDbHeNY/LtKTcrtcMNfO4Jx0mwivGQZUIEC8oAfvxg==} peerDependencies: - postcss: ^8.1.0 + '@tiptap/extensions': ^3.22.2 - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} + '@tiptap/extension-strike@3.22.2': + resolution: {integrity: sha512-YFC3elKU1L8PiGbcB6tqd/7vWPF5IbydJz0POJpHzSjstX+VfT8VsvS7ubxVuSIWQ11kGkH3mzX6LX8JHsHZxg==} + peerDependencies: + '@tiptap/core': ^3.22.2 - babel-loader@10.0.0: - resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} - engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} + '@tiptap/extension-text@3.22.2': + resolution: {integrity: sha512-J1w7JwijfSD7ah0WfiwZ/DVWCIGT9x369RM4RJc57i44mIBElj7tl1dh+N5KPGOXKUup4gr7sSJAE38lgeaDMg==} peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5.61.0' + '@tiptap/core': ^3.22.2 - babel-plugin-jsx-dom-expressions@0.40.3: - resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==} + '@tiptap/extension-underline@3.22.2': + resolution: {integrity: sha512-BaV6WOowxdkGTLWiU7DdZ3Twh633O4RGqwUM5dDas5LvaqL8AMWGTO8Wg9yAaaKXzd9MtKI1ZCqS/+MtzusgkQ==} peerDependencies: - '@babel/core': ^7.20.12 + '@tiptap/core': ^3.22.2 - babel-plugin-polyfill-corejs2@0.4.16: - resolution: {integrity: sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==} + '@tiptap/extensions@3.22.2': + resolution: {integrity: sha512-s7MZmm2Xdq+8feIXgY3v7gVpQ5ClqBZi20KheouS7KSbBlrY4fu2irYR1EGc6r1UUVaHMxEa+cx5knhx+mIPUw==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + '@tiptap/markdown@3.22.2': + resolution: {integrity: sha512-ZBna+5fMeaQ8vfzXT1HmMFvLauU0xSQJTA6b+Zqvh2zbD4BWteXf3bfdTrjQqNy0S97S2wFubYruSCr2/OlllQ==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - babel-plugin-polyfill-corejs3@0.14.1: - resolution: {integrity: sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@tiptap/pm@3.22.2': + resolution: {integrity: sha512-G2ENwIazoSKkAnN5MN5yN91TIZNFm6TxB74kPf3Empr2k9W51Hkcier70jHGpArhgcEaL4BVreuU1PRDRwCeGw==} - babel-plugin-polyfill-regenerator@0.6.7: - resolution: {integrity: sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==} + '@tiptap/starter-kit@3.22.2': + resolution: {integrity: sha512-+CCKX8tOQ/ZPb2k/z6em4AQCFYAcdd8+0TOzPWiuLxRyCHRPBBVhnPsXOKgKwE4OO3E8BsezquuYRYRwsyzCqg==} + + '@tiptap/suggestion@3.22.2': + resolution: {integrity: sha512-t2GQSrF4eQyPb+KqXVfcC2cokYIDNfpLLq7B0ELlnWBJURnLOVJ2ssJ6ASI247scu9ZKPG1g5bFP4IXdBhyPgg==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 - babel-preset-solid@1.9.10: - resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==} + '@tiptap/vue-3@3.22.2': + resolution: {integrity: sha512-oRJQEwcsg8LztIeuKeJea1UhIX2NtGkBDPM/biQlA3SKa/JvgNWGb0+ZJj0AWQjGhKFOoVKnfwVRysUeZeKOSg==} peerDependencies: - '@babel/core': ^7.0.0 - solid-js: ^1.9.10 - peerDependenciesMeta: - solid-js: - optional: true + '@floating-ui/dom': ^1.0.0 + '@tiptap/core': ^3.22.2 + '@tiptap/pm': ^3.22.2 + vue: ^3.0.0 - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + '@tiptap/y-tiptap@3.0.2': + resolution: {integrity: sha512-flMn/YW6zTbc6cvDaUPh/NfLRTXDIqgpBUkYzM74KA1snqQwhOMjnRcnpu4hDFrTnPO6QGzr99vRyXEA7M44WA==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + peerDependencies: + prosemirror-model: ^1.7.1 + prosemirror-state: ^1.2.3 + prosemirror-view: ^1.9.10 + y-protocols: ^1.0.1 + yjs: ^13.5.38 - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} + '@tsconfig/svelte@5.0.8': + resolution: {integrity: sha512-UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==} - baseline-browser-mapping@2.9.8: - resolution: {integrity: sha512-Y1fOuNDowLfgKOypdc9SPABfoWXuZHBOyCS4cD52IeZBhr4Md6CLLs6atcxVrzRmQ06E7hSlm5bHHApPKR/byA==} - hasBin: true + '@tufjs/canonical-json@2.0.0': + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + '@tufjs/models@4.0.0': + resolution: {integrity: sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==} + engines: {node: ^20.17.0 || >=22.9.0} - beasties@0.4.1: - resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==} - engines: {node: '>=18.0.0'} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - bidi-js@1.0.3: - resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - birpc@2.9.0: - resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - body-parser@1.20.4: - resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - body-parser@2.2.1: - resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} - engines: {node: '>=18'} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - bonjour-service@1.3.0: - resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} - engines: {node: 18 || 20 || >=22} + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} - engines: {node: 18 || 20 || >=22} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - builtin-modules@5.0.0: - resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} - engines: {node: '>=18.20'} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - bumpp@11.0.1: - resolution: {integrity: sha512-X0ti27I/ewsx/u0EJSyl0IZWWOE95q+wIpAG/60kc5gqMNR4a23YJdd3lL7JsBN11TgLbCM4KpfGMuFfdigb4g==} - engines: {node: '>=20.19.0'} - hasBin: true + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} + '@types/express-serve-static-core@4.19.7': + resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + '@types/express-serve-static-core@5.1.0': + resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} - bytestreamjs@2.0.1: - resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} - engines: {node: '>=6.0.0'} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - cac@7.0.0: - resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} - engines: {node: '>=20.19.0'} + '@types/express@5.0.6': + resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} - cacache@20.0.3: - resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} - engines: {node: ^20.17.0 || >=22.9.0} + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + '@types/jsdom@28.0.1': + resolution: {integrity: sha512-GJq2QE4TAZ5ajSoCasn5DOFm8u1mI3tIFvM5tIq3W5U/RTB6gsHwc6Yhpl91X9VSDOUVblgXmG+2+sSvFQrdlw==} - caniuse-lite@1.0.30001760: - resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - caniuse-lite@1.0.30001777: - resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} - engines: {node: '>=18'} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + '@types/node@25.5.2': + resolution: {integrity: sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - chokidar@5.0.0: - resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} - engines: {node: '>= 20.19.0'} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - ci-info@4.4.0: - resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} - engines: {node: '>=8'} + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} - cli-highlight@2.1.11: - resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} - cli-spinners@3.3.0: - resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} - engines: {node: '>=18.20'} + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - - cli-truncate@5.1.1: - resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} - engines: {node: '>=20'} - - cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - cliui@9.0.1: - resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} - engines: {node: '>=20'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} - engines: {node: '>=20'} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} + '@typescript-eslint/eslint-plugin@8.58.1': + resolution: {integrity: sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.58.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - comment-parser@1.4.5: - resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} - engines: {node: '>= 12.0.0'} + '@typescript-eslint/parser@8.57.0': + resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' - comment-parser@1.4.6: - resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} - engines: {node: '>= 12.0.0'} + '@typescript-eslint/parser@8.58.1': + resolution: {integrity: sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + '@typescript-eslint/project-service@8.57.0': + resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + '@typescript-eslint/project-service@8.58.1': + resolution: {integrity: sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + '@typescript-eslint/rule-tester@8.57.0': + resolution: {integrity: sha512-qs4OapXmAIj3so85/20lQG1WrBSSvDE/3b42Orl3lpZkaOlNXtbfKzL+9EPaY5wSEgdlhKEpympAMFHPG9i72Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - compression@1.8.1: - resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} - engines: {node: '>= 0.8.0'} + '@typescript-eslint/scope-manager@8.57.0': + resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + '@typescript-eslint/scope-manager@8.58.1': + resolution: {integrity: sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + '@typescript-eslint/tsconfig-utils@8.57.0': + resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} + '@typescript-eslint/tsconfig-utils@8.58.1': + resolution: {integrity: sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} + '@typescript-eslint/type-utils@8.58.1': + resolution: {integrity: sha512-HUFxvTJVroT+0rXVJC7eD5zol6ID+Sn5npVPWoFuHGg9Ncq5Q4EYstqR+UOqaNRFXi5TYkpXXkLhoCHe3G0+7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + '@typescript-eslint/types@8.57.0': + resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - content-disposition@1.0.1: - resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} - engines: {node: '>=18'} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + '@typescript-eslint/types@8.58.1': + resolution: {integrity: sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + '@typescript-eslint/typescript-estree@8.57.0': + resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + '@typescript-eslint/typescript-estree@8.58.1': + resolution: {integrity: sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - cookie-signature@1.0.7: - resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + '@typescript-eslint/utils@8.57.0': + resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} + '@typescript-eslint/utils@8.58.1': + resolution: {integrity: sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} + '@typescript-eslint/visitor-keys@8.57.0': + resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} + '@typescript-eslint/visitor-keys@8.58.1': + resolution: {integrity: sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} - engines: {node: '>=18'} + '@vercel/nft@1.5.0': + resolution: {integrity: sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==} + engines: {node: '>=20'} + hasBin: true - copy-webpack-plugin@14.0.0: - resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} - engines: {node: '>= 20.9.0'} + '@vitejs/devtools-kit@0.1.13': + resolution: {integrity: sha512-8TqyrrPTB8KNGb2ukVHNo4aMhGYJgUypVNMnqOvxaWYln3QAXK6CFxifK3lZGOHWKAUqWAiTmZUsYzV4S0Kn7g==} peerDependencies: - webpack: ^5.1.0 - - core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + vite: '*' - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + '@vitejs/devtools-rolldown@0.1.13': + resolution: {integrity: sha512-VScSr/0+1+s3TBt5RFhv1dcRJSjWDUH3yJ8nc9+8zTOijzuKTjVo5yqfx0ISBro9CCeoPyXHuXntPqBSIhTTCA==} - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} + '@vitejs/devtools-rpc@0.1.13': + resolution: {integrity: sha512-IbYRlvVJMdlQiRPU5fDnIAwgTu43O7v5/a1cUFp8t77zXLvg+3g2hbqrYzoqxIgAyLTr2KMY7HoYm6j/kIMB6Q==} peerDependencies: - typescript: '>=4.9.5' + ws: '*' peerDependenciesMeta: - typescript: + ws: optional: true - cross-env@10.1.0: - resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} - engines: {node: '>=20'} + '@vitejs/devtools@0.1.13': + resolution: {integrity: sha512-0PWKOrYyDiP+UFI0Sfqn3uTxRwQMnvFyA6t4vnj+0SpCEk+XNEP2igqjCp7/F9wU0JDH3SiWhfMe41za9BtwkA==} hasBin: true + peerDependencies: + vite: '*' - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-declaration-sorter@7.3.0: - resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==} - engines: {node: ^14 || ^16 || >=18} + '@vitejs/plugin-basic-ssl@2.1.4': + resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} peerDependencies: - postcss: ^8.0.9 + vite: ^6.0.0 || ^7.0.0 - css-loader@7.1.3: - resolution: {integrity: sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==} - engines: {node: '>= 18.12.0'} + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.27.0 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 peerDependenciesMeta: - '@rspack/core': + '@rolldown/plugin-babel': optional: true - webpack: + babel-plugin-react-compiler: optional: true - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - - css-select@6.0.0: - resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} + '@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 - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + '@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 - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-tree@3.2.1: - resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + '@vitest/eslint-plugin@1.6.14': + resolution: {integrity: sha512-PXZ5ysw4eHU9h8nDtBvVcGC7Z2C/T9CFdheqSw1NNXFYqViojub0V9bgdYI67iBTOcra2mwD0EYldlY9bGPf2Q==} + engines: {node: '>=18'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.57.0' + typescript: '>=5.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + typescript: + optional: true + vitest: + optional: true - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} + '@vitest/expect@4.1.3': + resolution: {integrity: sha512-CW8Q9KMtXDGHj0vCsqui0M5KqRsu0zm0GNDW7Gd3U7nZ2RFpPKSCpeCXoT+/+5zr1TNlsoQRDEz+LzZUyq6gnQ==} - css-what@7.0.0: - resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==} - engines: {node: '>= 6'} + '@vitest/mocker@4.1.3': + resolution: {integrity: sha512-XN3TrycitDQSzGRnec/YWgoofkYRhouyVQj4YNsJ5r/STCUFqMrP4+oxEv3e7ZbLi4og5kIHrZwekDJgw6hcjw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + '@vitest/pretty-format@4.1.3': + resolution: {integrity: sha512-hYqqwuMbpkkBodpRh4k4cQSOELxXky1NfMmQvOfKvV8zQHz8x8Dla+2wzElkMkBvSAJX5TRGHJAQvK0TcOafwg==} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + '@vitest/runner@4.1.3': + resolution: {integrity: sha512-VwgOz5MmT0KhlUj40h02LWDpUBVpflZ/b7xZFA25F29AJzIrE+SMuwzFf0b7t4EXdwRNX61C3B6auIXQTR3ttA==} - cssnano-preset-default@7.0.10: - resolution: {integrity: sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + '@vitest/snapshot@4.1.3': + resolution: {integrity: sha512-9l+k/J9KG5wPJDX9BcFFzhhwNjwkRb8RsnYhaT1vPY7OufxmQFc9sZzScRCPTiETzl37mrIWVY9zxzmdVeJwDQ==} - 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 + '@vitest/spy@4.1.3': + resolution: {integrity: sha512-ujj5Uwxagg4XUIfAUyRQxAg631BP6e9joRiN99mr48Bg9fRs+5mdUElhOoZ6rP5mBr8Bs3lmrREnkrQWkrsTCw==} - cssnano@7.1.2: - resolution: {integrity: sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + '@vitest/utils@4.1.3': + resolution: {integrity: sha512-Pc/Oexse/khOWsGB+w3q4yzA4te7W4gpZZAvk+fr8qXfTURZUMj5i7kuxsNK5mP/dEB6ao3jfr0rs17fHhbHdw==} - 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'} + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - data-urls@7.0.0: - resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + '@vue-macros/common@3.1.2': + resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} + engines: {node: '>=20.19.0'} peerDependencies: - supports-color: '*' + vue: ^2.7.0 || ^3.2.25 peerDependenciesMeta: - supports-color: + vue: optional: true - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} + '@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: - supports-color: '*' + '@babel/core': ^7.0.0-0 peerDependenciesMeta: - supports-color: + '@babel/core': optional: true - decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + '@vue/babel-plugin-resolve-type@2.0.1': + resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 - decode-named-character-reference@1.2.0: - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + '@vue/compiler-core@3.5.32': + resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + '@vue/compiler-dom@3.5.32': + resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + '@vue/compiler-sfc@3.5.32': + resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} - default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} - engines: {node: '>=18'} + '@vue/compiler-ssr@3.5.32': + resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} - default-browser@5.4.0: - resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} - engines: {node: '>=18'} + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + '@vue/devtools-api@8.0.7': + resolution: {integrity: sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + '@vue/devtools-core@8.1.1': + resolution: {integrity: sha512-bCCsSABp1/ot4j8xJEycM6Mtt2wbuucfByr6hMgjbYhrtlscOJypZKvy8f1FyWLYrLTchB5Qz216Lm92wfbq0A==} + peerDependencies: + vue: ^3.0.0 - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + '@vue/devtools-kit@8.1.1': + resolution: {integrity: sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==} - dependency-graph@1.0.0: - resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} - engines: {node: '>=4'} + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + '@vue/devtools-shared@8.1.1': + resolution: {integrity: sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + '@vue/language-core@3.2.6': + resolution: {integrity: sha512-xYYYX3/aVup576tP/23sEUpgiEnujrENaoNRbaozC1/MA9I6EGFQRJb4xrt/MmUCAGlxTKL2RmT8JLTPqagCkg==} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true + '@vue/reactivity@3.5.32': + resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} + '@vue/runtime-core@3.5.32': + resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + '@vue/runtime-dom@3.5.32': + resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} - devalue@5.6.4: - resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} + '@vue/server-renderer@3.5.32': + resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} + peerDependencies: + vue: 3.5.32 - devalue@5.7.0: - resolution: {integrity: sha512-qCvc8m7cImp1QDCsiY+C2EdSBWSj7Ucfoq87scSdYboDiIKdvMtFbH1U2VReBls6WMhMaUOoK3ZJEDNG/7zm3w==} + '@vue/shared@3.5.32': + resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + '@vueuse/core@10.11.1': + resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + peerDependencies: + vue: ^3.5.0 - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} + '@vueuse/integrations@14.2.1': + resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 || ^8 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + '@vueuse/metadata@10.11.1': + resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + '@vueuse/nuxt@14.2.1': + resolution: {integrity: sha512-DHgFMUpyH98M1YM9pbnRjFXMAMKEsHntJeOp8rOXs8QN2cvJBzEZ+TTWIBSPESNFOEwM02RA6BDsaTL35OK4Mw==} + peerDependencies: + nuxt: ^3.0.0 || ^4.0.0-0 + vue: ^3.5.0 - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + '@vueuse/shared@10.11.1': + resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} + peerDependencies: + vue: ^3.5.0 - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - emojilib@2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - empathic@2.0.0: - resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} - engines: {node: '>=14'} + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - enhanced-resolve@5.20.0: - resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} - engines: {node: '>=10.13.0'} + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} - error-stack-parser-es@1.0.5: - resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} - es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 - esbuild-wasm@0.27.3: - resolution: {integrity: sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==} - engines: {node: '>=18'} - hasBin: true + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} - engines: {node: '>=18'} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} hasBin: true - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} - eslint-config-flat-gitignore@2.3.0: - resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==} + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: - eslint: ^9.5.0 || ^10.0.0 - - eslint-flat-config-utils@3.1.0: - resolution: {integrity: sha512-lM+Nwo2CzpuTS/RASQExlEIwk/BQoKqJWX6VbDlLMb/mveqvt9MMrRXFEkG3bseuK6g8noKZLeX82epkILtv4A==} + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - eslint-json-compat-utils@0.2.3: - resolution: {integrity: sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ==} - engines: {node: '>=12'} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: - '@eslint/json': '*' - eslint: '*' - jsonc-eslint-parser: ^2.4.0 || ^3.0.0 + ajv: ^8.0.0 peerDependenciesMeta: - '@eslint/json': + ajv: optional: true - eslint-merge-processors@2.0.0: - resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: - eslint: '*' + ajv: ^8.8.2 - eslint-plugin-antfu@3.2.2: - resolution: {integrity: sha512-Qzixht2Dmd/pMbb5EnKqw2V8TiWHbotPlsORO8a+IzCLFwE0RxK8a9k4DCTFPzBwyxJzH+0m2Mn8IUGeGQkyUw==} - peerDependencies: - eslint: '*' + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - eslint-plugin-command@3.5.2: - resolution: {integrity: sha512-PA59QAkQDwvcCMEt5lYLJLI3zDGVKJeC4id/pcRY2XdRYhSGW7iyYT1VC1N3bmpuvu6Qb/9QptiS3GJMjeGTJg==} - peerDependencies: - '@typescript-eslint/rule-tester': '*' - '@typescript-eslint/typescript-estree': '*' - '@typescript-eslint/utils': '*' - eslint: '*' + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - eslint-plugin-depend@1.5.0: - resolution: {integrity: sha512-i3UeLYmclf1Icp35+6W7CR4Bp2PIpDgBuf/mpmXK5UeLkZlvYJ21VuQKKHHAIBKRTPivPGX/gZl5JGno1o9Y0A==} - peerDependencies: - eslint: '>=8.40.0' + algoliasearch@5.48.1: + resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} + engines: {node: '>= 14.0.0'} - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' + alien-signals@3.1.1: + resolution: {integrity: sha512-ogkIWbVrLwKtHY6oOAXaYkAxP+cTH7V5FZ5+Tm4NZFd8VDZ6uNMDrfzqctTZ42eTMCSR3ne3otpcxmqSnFfPYA==} - eslint-plugin-harlanzw@0.12.0: - resolution: {integrity: sha512-b5szOGMD78TONLjezFzmWNu30BVGkG7iUHOakUYAPDtK8O+ZWEOQZFsZ59KHsDdw5syQe6WZceB+k+jqQGRbFA==} - peerDependencies: - eslint: '>=9.0.0' + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} - eslint-plugin-import-lite@0.6.0: - resolution: {integrity: sha512-80vevx2A7i3H7n1/6pqDO8cc5wRz6OwLDvIyVl9UflBV1N1f46e9Ihzi65IOLYoSxM6YykK2fTw1xm0Ixx6aTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + engines: {node: '>=18'} - eslint-plugin-jsdoc@62.9.0: - resolution: {integrity: sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true - eslint-plugin-jsonc@3.1.2: - resolution: {integrity: sha512-dopTxdB22iuOkgKyJCupEC5IYBItUT4J/teq1H5ddUObcaYhOURxtJElZczdcYnnKCghNU/vccuyPkliy2Wxsg==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: '>=9.38.0' + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - eslint-plugin-n@17.24.0: - resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.23.0' + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} - eslint-plugin-no-only-tests@3.3.0: - resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} - engines: {node: '>=5.0.0'} + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - eslint-plugin-perfectionist@5.8.0: - resolution: {integrity: sha512-k8uIptWIxkUclonCFGyDzgYs9NI+Qh0a7cUXS3L7IYZDEsjXuimFBVbxXPQQngWqMiaxJRwbtYB4smMGMqF+cw==} - engines: {node: ^20.0.0 || >=22.0.0} - peerDependencies: - eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - eslint-plugin-pnpm@1.6.0: - resolution: {integrity: sha512-dxmt9r3zvPaft6IugS4i0k16xag3fTbOvm/road5uV9Y8qUCQT0xzheSh3gMlYAlC6vXRpfArBDsTZ7H7JKCbg==} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} - eslint-plugin-regexp@3.1.0: - resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: '>=9.38.0' + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} - eslint-plugin-toml@1.3.1: - resolution: {integrity: sha512-1l00fBP03HIt9IPV7ZxBi7x0y0NMdEZmakL1jBD6N/FoKBvfKxPw5S8XkmzBecOnFBTn5Z8sNJtL5vdf9cpRMQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: '>=9.38.0' + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - eslint-plugin-unicorn@64.0.0: - resolution: {integrity: sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==} - engines: {node: ^20.10.0 || >=21.0.0} - peerDependencies: - eslint: '>=9.38.0' + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} - eslint-plugin-unused-imports@4.4.1: - resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^10.0.0 || ^9.0.0 || ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} - eslint-plugin-vue@10.8.0: - resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-eslint-parser: ^10.0.0 - peerDependenciesMeta: - '@stylistic/eslint-plugin': - optional: true - '@typescript-eslint/parser': - optional: true + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} - eslint-plugin-yml@3.3.1: - resolution: {integrity: sha512-isntsZchaTqDMNNkD+CakrgA/pdUoJ45USWBKpuqfAW1MCuw731xX/vrXfoJFZU3tTFr24nCbDYmDfT2+g4QtQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} - peerDependencies: - eslint: '>=9.38.0' + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} - eslint-processor-vue-blocks@2.0.0: - resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} - peerDependencies: - '@vue/compiler-sfc': ^3.3.0 - eslint: '>=9.0.0' + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + args-tokenizer@0.3.0: + resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} - eslint-scope@9.1.2: - resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + aria-query@5.3.1: + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} - eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} - eslint@10.2.0: - resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - esm-env@1.2.2: - resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + asn1js@3.0.7: + resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} + engines: {node: '>=12.0.0'} - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} - espree@11.2.0: - resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} + ast-walker-scope@0.8.3: + resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} + engines: {node: '>=20.19.0'} - esrap@2.2.4: - resolution: {integrity: sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==} + async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.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 - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + b4a@1.8.0: + resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + babel-loader@10.0.0: + resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} + engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5.61.0' - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + babel-plugin-jsx-dom-expressions@0.40.3: + resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==} + peerDependencies: + '@babel/core': ^7.20.12 - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + babel-plugin-polyfill-corejs2@0.4.16: + resolution: {integrity: sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + babel-plugin-polyfill-corejs3@0.14.1: + resolution: {integrity: sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} + babel-plugin-polyfill-regenerator@0.6.7: + resolution: {integrity: sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - eventsource-parser@3.0.6: - resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} - engines: {node: '>=18.0.0'} + babel-preset-solid@1.9.10: + resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==} + peerDependencies: + '@babel/core': ^7.0.0 + solid-js: ^1.9.10 + peerDependenciesMeta: + solid-js: + optional: true - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} - engines: {node: '>=12.0.0'} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} - exponential-backoff@3.1.3: - resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true - express-rate-limit@8.3.1: - resolution: {integrity: sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==} - engines: {node: '>= 16'} + bare-fs@4.6.0: + resolution: {integrity: sha512-2YkS7NuiJceSEbyEOdSNLE9tsGd+f4+f7C+Nik/MCk27SYdwIMPT/yRKvg++FZhQXgk0KWJKJyXX9RhVV0RGqA==} + engines: {bare: '>=1.16.0'} peerDependencies: - express: '>= 4.11' + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true - express@4.22.1: - resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} - engines: {node: '>= 0.10.0'} + bare-os@3.8.7: + resolution: {integrity: sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==} + engines: {bare: '>=1.14.0'} - express@5.2.1: - resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} - engines: {node: '>= 18'} + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + bare-stream@2.12.0: + resolution: {integrity: sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==} + peerDependencies: + bare-abort-controller: '*' + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true - fast-check@4.4.0: - resolution: {integrity: sha512-s87BFAp8YaWYOBXjbTxeotaOhmA4hPYAyk9gBTFxdab25P6eAlqrryUvVMA2qd9bT/0Xq+YNJGtoVhJd/BxI4g==} - engines: {node: '>=12.17.0'} + bare-url@2.4.0: + resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + baseline-browser-mapping@2.9.8: + resolution: {integrity: sha512-Y1fOuNDowLfgKOypdc9SPABfoWXuZHBOyCS4cD52IeZBhr4Md6CLLs6atcxVrzRmQ06E7hSlm5bHHApPKR/byA==} + hasBin: true - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - fast-string-truncated-width@1.2.1: - resolution: {integrity: sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==} + beasties@0.4.1: + resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==} + engines: {node: '>=18.0.0'} - fast-string-width@1.1.0: - resolution: {integrity: sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - fast-wrap-ansi@0.1.6: - resolution: {integrity: sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} - fault@2.0.1: - resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - finalhandler@1.3.2: - resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} - engines: {node: '>= 0.8'} + body-parser@2.2.1: + resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} + engines: {node: '>=18'} - finalhandler@2.1.1: - resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} - engines: {node: '>= 18.0.0'} + bole@5.0.28: + resolution: {integrity: sha512-l+yybyZLV7zTD6EuGxoXsilpER1ctMCpdOqjSYNigJJma39ha85fzCtYccPx06oR1u7uCQLOcUAFFzvfXVBmuQ==} - find-cache-directory@6.0.0: - resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} - engines: {node: '>=20'} + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} + builtin-modules@5.0.0: + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + engines: {node: '>=18.20'} - fraction.js@5.3.4: - resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + bumpp@11.0.1: + resolution: {integrity: sha512-X0ti27I/ewsx/u0EJSyl0IZWWOE95q+wIpAG/60kc5gqMNR4a23YJdd3lL7JsBN11TgLbCM4KpfGMuFfdigb4g==} + engines: {node: '>=20.19.0'} + hasBin: true - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - fs-extra@11.3.4: - resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} - engines: {node: '>=14.14'} - - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + c12@3.3.4: + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} - get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} - engines: {node: '>=18'} + cacache@20.0.3: + resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} + engines: {node: ^20.17.0 || >=22.9.0} - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + caniuse-lite@1.0.30001777: + resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - glob-to-regex.js@1.2.0: - resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - globals@17.4.0: - resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==} - engines: {node: '>=18'} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} - hono@4.12.6: - resolution: {integrity: sha512-KljEp+MeEEEIOT75qBo1UjqqB29fRMtlDEwCxcexOzdkUq6LR/vRvHk5pdROcxyOYyW1niq7Gb5pFVGy5R1eBw==} - engines: {node: '>=16.9.0'} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} - hookable@6.1.0: - resolution: {integrity: sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - hosted-git-info@9.0.2: - resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} - engines: {node: ^20.17.0 || >=22.9.0} + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - html-encoding-sniffer@6.0.0: - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} - html-entities@2.3.3: - resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} - html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + cli-spinners@3.3.0: + resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} + engines: {node: '>=18.20'} - http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + cli-truncate@5.1.1: + resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + engines: {node: '>=20'} - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - http-parser-js@0.5.10: - resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} - http-proxy-middleware@2.0.9: - resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} - http-proxy-middleware@3.0.5: - resolution: {integrity: sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + colortranslator@5.0.0: + resolution: {integrity: sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w==} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - iconv-lite@0.7.1: - resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==} - engines: {node: '>=0.10.0'} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} - ignore-walk@8.0.0: - resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} - engines: {node: ^20.17.0 || >=22.9.0} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} - image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true + comment-parser@1.4.5: + resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} + engines: {node: '>= 12.0.0'} - immutable@5.1.4: - resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + comment-parser@1.4.6: + resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} + engines: {node: '>= 12.0.0'} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + compatx@0.2.0: + resolution: {integrity: sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} - ini@6.0.0: - resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} - engines: {node: ^20.17.0 || >=22.9.0} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - injection-js@2.6.1: - resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - ip-address@10.1.0: - resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} - engines: {node: '>= 12'} + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} - ipaddr.js@2.3.0: - resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} - engines: {node: '>= 10'} + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} - is-builtin-module@5.0.0: - resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} - engines: {node: '>=18.20'} + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + cookie-es@2.0.1: + resolution: {integrity: sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + cookie-es@3.1.1: + resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} - is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} - engines: {node: '>=18'} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} - is-in-ssh@1.0.0: - resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} - engines: {node: '>=20'} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} - is-network-error@1.3.0: - resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} - engines: {node: '>=16'} + copy-webpack-plugin@14.0.0: + resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} + engines: {node: '>= 20.9.0'} + peerDependencies: + webpack: ^5.1.0 - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - is-reference@3.0.3: - resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + croner@10.0.1: + resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==} + engines: {node: '>=18.0'} - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} + hasBin: true - is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} - is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} - engines: {node: '>=18'} + crossws@0.4.4: + resolution: {integrity: sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg==} + peerDependencies: + srvx: '>=0.7.1' + peerDependenciesMeta: + srvx: + optional: true - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + css-declaration-sorter@7.3.0: + resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + css-loader@7.1.3: + resolution: {integrity: sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} + css-select@6.0.0: + resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + css-what@7.0.0: + resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==} + engines: {node: '>= 6'} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true - jose@6.1.3: - resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + 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 - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + 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 - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + 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 - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true + 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'} - jsdoc-type-pratt-parser@7.1.1: - resolution: {integrity: sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==} - engines: {node: '>=20.0.0'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - jsdoc-type-pratt-parser@7.2.0: - resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} - engines: {node: '>=20.0.0'} + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} - jsdom@29.0.2: - resolution: {integrity: sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + db0@0.3.4: + resolution: {integrity: sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==} peerDependencies: - canvas: ^3.0.0 + '@electric-sql/pglite': '*' + '@libsql/client': '*' + better-sqlite3: '*' + drizzle-orm: '*' + mysql2: '*' + sqlite3: '*' peerDependenciesMeta: - canvas: + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + better-sqlite3: + optional: true + drizzle-orm: + optional: true + mysql2: + optional: true + sqlite3: optional: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - json-parse-even-better-errors@5.0.0: - resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} - engines: {node: ^20.17.0 || >=22.9.0} + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} - json-schema-typed@8.0.2: - resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} + engines: {node: '>=18'} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} - jsonc-eslint-parser@3.1.0: - resolution: {integrity: sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} - karma-source-map-support@1.4.0: - resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} - katex@0.16.45: - resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} - hasBin: true + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - knitwork@1.3.0: - resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} - launch-editor@2.12.0: - resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - less-loader@12.3.1: - resolution: {integrity: sha512-JZZmG7gMzoDP3VGeEG8Sh6FW5wygB5jYL7Wp29FFihuRTsIBacqO3LbRPr2yStYD11riVf13selLm/CPFRDBRQ==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 - less: ^3.5.0 || ^4.0.0 - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + devalue@5.7.0: + resolution: {integrity: sha512-qCvc8m7cImp1QDCsiY+C2EdSBWSj7Ucfoq87scSdYboDiIKdvMtFbH1U2VReBls6WMhMaUOoK3ZJEDNG/7zm3w==} - less@4.4.2: - resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} - engines: {node: '>=14'} - hasBin: true + devalue@5.7.1: + resolution: {integrity: sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==} - less@4.5.1: - resolution: {integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==} - engines: {node: '>=14'} - hasBin: true + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - license-webpack-plugin@4.0.2: - resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} - peerDependencies: - webpack: '*' - peerDependenciesMeta: - webpack: - optional: true + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] + dot-prop@10.1.0: + resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} + engines: {node: '>=20'} - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] + dotenv@17.4.1: + resolution: {integrity: sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==} + engines: {node: '>=12'} - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} - engines: {node: '>= 12.0.0'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} - listr2@9.0.5: - resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} - engines: {node: '>=20.0.0'} + embla-carousel-auto-height@8.6.0: + resolution: {integrity: sha512-/HrJQOEM6aol/oF33gd2QlINcXy3e19fJWvHDuHWp2bpyTa+2dm9tVVJak30m2Qy6QyQ6Fc8DkImtv7pxWOJUQ==} + peerDependencies: + embla-carousel: 8.6.0 - lmdb@3.5.1: - resolution: {integrity: sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==} - hasBin: true + embla-carousel-auto-scroll@8.6.0: + resolution: {integrity: sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ==} + peerDependencies: + embla-carousel: 8.6.0 - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} + embla-carousel-autoplay@8.6.0: + resolution: {integrity: sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==} + peerDependencies: + embla-carousel: 8.6.0 - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} + embla-carousel-class-names@8.6.0: + resolution: {integrity: sha512-l1hm1+7GxQ+zwdU2sea/LhD946on7XO2qk3Xq2XWSwBaWfdgchXdK567yzLtYSHn4sWYdiX+x4nnaj+saKnJkw==} + peerDependencies: + embla-carousel: 8.6.0 - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} + embla-carousel-fade@8.6.0: + resolution: {integrity: sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==} + peerDependencies: + embla-carousel: 8.6.0 - local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} - engines: {node: '>=14'} + embla-carousel-reactive-utils@8.6.0: + resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==} + peerDependencies: + embla-carousel: 8.6.0 - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + embla-carousel-vue@8.6.0: + resolution: {integrity: sha512-v8UO5UsyLocZnu/LbfQA7Dn2QHuZKurJY93VUmZYP//QRWoCWOsionmvLLAlibkET3pGPs7++03VhJKbWD7vhQ==} + peerDependencies: + vue: ^3.2.37 - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + embla-carousel-wheel-gestures@8.1.0: + resolution: {integrity: sha512-J68jkYrxbWDmXOm2n2YHl+uMEXzkGSKjWmjaEgL9xVvPb3HqVmg6rJSKfI3sqIDVvm7mkeTy87wtG/5263XqHQ==} engines: {node: '>=10'} + peerDependencies: + embla-carousel: ^8.0.0 || ~8.0.0-rc03 - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - 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==} + embla-carousel@8.6.0: + resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - log-symbols@7.0.1: - resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} - engines: {node: '>=18'} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} - engines: {node: 20 || >=22} + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} - lru-cache@11.2.7: - resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} - engines: {node: 20 || >=22} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} - lru-cache@11.3.2: - resolution: {integrity: sha512-wgWa6FWQ3QRRJbIjbsldRJZxdxYngT/dO0I5Ynmlnin8qy7tC6xYzbcJjtN4wHLXtkbVwHzk0C+OejVw1XM+DQ==} - engines: {node: 20 || >=22} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true + enhanced-resolve@5.20.0: + resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} + engines: {node: '>=10.13.0'} - magic-regexp@0.10.0: - resolution: {integrity: sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} - magic-string-ast@1.0.3: - resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} - engines: {node: '>=20.19.0'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - make-fetch-happen@15.0.3: - resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} - engines: {node: ^20.17.0 || >=22.9.0} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} - marked-terminal@7.3.0: - resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} - engines: {node: '>=16.0.0'} - peerDependencies: - marked: '>=1 <16' + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - marked@9.1.6: - resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} - engines: {node: '>= 16'} + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + errx@0.1.0: + resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} - mdast-util-frontmatter@2.0.1: - resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + esbuild-wasm@0.27.3: + resolution: {integrity: sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==} + engines: {node: '>=18'} + hasBin: true - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true - mdast-util-math@3.0.0: - resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} - mdn-data@2.27.1: - resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} + eslint-config-flat-gitignore@2.3.0: + resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==} + peerDependencies: + eslint: ^9.5.0 || ^10.0.0 - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} + eslint-flat-config-utils@3.1.0: + resolution: {integrity: sha512-lM+Nwo2CzpuTS/RASQExlEIwk/BQoKqJWX6VbDlLMb/mveqvt9MMrRXFEkG3bseuK6g8noKZLeX82epkILtv4A==} - memfs@4.51.1: - resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} + eslint-json-compat-utils@0.2.3: + resolution: {integrity: sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 || ^3.0.0 + peerDependenciesMeta: + '@eslint/json': + optional: true - merge-anything@5.1.7: - resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} - engines: {node: '>=12.13'} + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + eslint-plugin-antfu@3.2.2: + resolution: {integrity: sha512-Qzixht2Dmd/pMbb5EnKqw2V8TiWHbotPlsORO8a+IzCLFwE0RxK8a9k4DCTFPzBwyxJzH+0m2Mn8IUGeGQkyUw==} + peerDependencies: + eslint: '*' - merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} + eslint-plugin-command@3.5.2: + resolution: {integrity: sha512-PA59QAkQDwvcCMEt5lYLJLI3zDGVKJeC4id/pcRY2XdRYhSGW7iyYT1VC1N3bmpuvu6Qb/9QptiS3GJMjeGTJg==} + peerDependencies: + '@typescript-eslint/rule-tester': '*' + '@typescript-eslint/typescript-estree': '*' + '@typescript-eslint/utils': '*' + eslint: '*' - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + eslint-plugin-depend@1.5.0: + resolution: {integrity: sha512-i3UeLYmclf1Icp35+6W7CR4Bp2PIpDgBuf/mpmXK5UeLkZlvYJ21VuQKKHHAIBKRTPivPGX/gZl5JGno1o9Y0A==} + peerDependencies: + eslint: '>=8.40.0' - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + eslint-plugin-harlanzw@0.12.0: + resolution: {integrity: sha512-b5szOGMD78TONLjezFzmWNu30BVGkG7iUHOakUYAPDtK8O+ZWEOQZFsZ59KHsDdw5syQe6WZceB+k+jqQGRbFA==} + peerDependencies: + eslint: '>=9.0.0' - micromark-extension-frontmatter@2.0.0: - resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + eslint-plugin-import-lite@0.6.0: + resolution: {integrity: sha512-80vevx2A7i3H7n1/6pqDO8cc5wRz6OwLDvIyVl9UflBV1N1f46e9Ihzi65IOLYoSxM6YykK2fTw1xm0Ixx6aTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + eslint-plugin-jsdoc@62.9.0: + resolution: {integrity: sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + eslint-plugin-jsonc@3.1.2: + resolution: {integrity: sha512-dopTxdB22iuOkgKyJCupEC5IYBItUT4J/teq1H5ddUObcaYhOURxtJElZczdcYnnKCghNU/vccuyPkliy2Wxsg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: '>=9.38.0' - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + eslint-plugin-n@17.24.0: + resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + eslint-plugin-perfectionist@5.8.0: + resolution: {integrity: sha512-k8uIptWIxkUclonCFGyDzgYs9NI+Qh0a7cUXS3L7IYZDEsjXuimFBVbxXPQQngWqMiaxJRwbtYB4smMGMqF+cw==} + engines: {node: ^20.0.0 || >=22.0.0} + peerDependencies: + eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + eslint-plugin-pnpm@1.6.0: + resolution: {integrity: sha512-dxmt9r3zvPaft6IugS4i0k16xag3fTbOvm/road5uV9Y8qUCQT0xzheSh3gMlYAlC6vXRpfArBDsTZ7H7JKCbg==} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + eslint-plugin-regexp@3.1.0: + resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: '>=9.38.0' - micromark-extension-math@3.1.0: - resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} + eslint-plugin-toml@1.3.1: + resolution: {integrity: sha512-1l00fBP03HIt9IPV7ZxBi7x0y0NMdEZmakL1jBD6N/FoKBvfKxPw5S8XkmzBecOnFBTn5Z8sNJtL5vdf9cpRMQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: '>=9.38.0' - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + eslint-plugin-unicorn@64.0.0: + resolution: {integrity: sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==} + engines: {node: ^20.10.0 || >=21.0.0} + peerDependencies: + eslint: '>=9.38.0' - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + eslint-plugin-unused-imports@4.4.1: + resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^10.0.0 || ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + eslint-plugin-vue@10.8.0: + resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + vue-eslint-parser: ^10.0.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + eslint-plugin-yml@3.3.1: + resolution: {integrity: sha512-isntsZchaTqDMNNkD+CakrgA/pdUoJ45USWBKpuqfAW1MCuw731xX/vrXfoJFZU3tTFr24nCbDYmDfT2+g4QtQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + eslint: '>=9.38.0' - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + eslint@10.2.0: + resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + esrap@2.2.4: + resolution: {integrity: sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==} - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} - mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} - mini-css-extract-plugin@2.10.0: - resolution: {integrity: sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} - engines: {node: 18 || 20 || >=22} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} - engines: {node: 18 || 20 || >=22} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} + express-rate-limit@8.3.1: + resolution: {integrity: sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' - minipass-fetch@5.0.0: - resolution: {integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==} - engines: {node: ^20.17.0 || >=22.9.0} + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} + engines: {node: '>= 0.10.0'} - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} + fast-check@4.4.0: + resolution: {integrity: sha512-s87BFAp8YaWYOBXjbTxeotaOhmA4hPYAyk9gBTFxdab25P6eAlqrryUvVMA2qd9bT/0Xq+YNJGtoVhJd/BxI4g==} + engines: {node: '>=12.17.0'} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - mkdist@2.4.1: - resolution: {integrity: sha512-Ezk0gi04GJBkqMfsksICU5Rjoemc4biIekwgrONWVPor2EO/N9nBgN6MZXAf7Yw4mDDhrNyKbdETaHNevfumKg==} + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-npm-meta@1.4.2: + resolution: {integrity: sha512-XXyd9d3ie/JeIIjm6WeKalvapGGFI4ShAjPJM78vgUFYzoEsuNSjvvVTuht0XZcwbVdOnEEGzhxwguRbxkIcDg==} hasBin: true - peerDependencies: - sass: ^1.92.1 - typescript: '>=5.9.2' - vue: ^3.5.21 - vue-sfc-transformer: ^0.1.1 - vue-tsc: ^1.8.27 || ^2.0.21 || ^3.0.0 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - vue: - optional: true - vue-sfc-transformer: - optional: true - vue-tsc: - optional: true - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - mlly@1.8.2: - resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + fast-string-truncated-width@1.2.1: + resolution: {integrity: sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==} - module-replacements@2.11.0: - resolution: {integrity: sha512-j5sNQm3VCpQQ7nTqGeOZtoJtV3uKERgCBm9QRhmGRiXiqkf7iRFOkfxdJRZWLkqYY8PNf4cDQF/WfXUYLENrRA==} + fast-string-width@1.1.0: + resolution: {integrity: sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - mrmime@2.0.1: - resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} - engines: {node: '>=10'} + fast-wrap-ansi@0.1.6: + resolution: {integrity: sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - msgpackr-extract@3.0.3: - resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} - hasBin: true + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} - msgpackr@1.11.6: - resolution: {integrity: sha512-DzHs4d3a2AaIF4bQZNX5z7NfcoV1pHK/FIcX8Ow65s2DVYPVhJoq0S7wf6I17NkYuWRnG0mvRv4/Bii0D1PEfA==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} - natural-orderby@5.0.0: - resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + find-cache-directory@6.0.0: + resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} + engines: {node: '>=20'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} - needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} - engines: {node: '>= 4.4.x'} - hasBin: true + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - ng-packagr@21.2.2: - resolution: {integrity: sha512-VO0y7RU3Ik8E14QdrryVyVbTAyqO2MK9W9GrG4e/4N8+ti+DWiBSQmw0tIhnV67lEjQwCccPA3ZBoIn3B1vJ1Q==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - hasBin: true + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} peerDependencies: - '@angular/compiler-cli': ^21.0.0 || ^21.2.0-next - tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - tslib: ^2.3.0 - typescript: '>=5.9 <6.0' + debug: '*' peerDependenciesMeta: - tailwindcss: + debug: optional: true - node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-emoji@2.2.0: - resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} - engines: {node: '>=18'} + fontaine@0.8.0: + resolution: {integrity: sha512-eek1GbzOdWIj9FyQH/emqW1aEdfC3lYRCHepzwlFCm5T77fBSRSyNRKE6/antF1/B1M+SfJXVRQTY9GAr7lnDg==} + engines: {node: '>=18.12.0'} - node-gyp-build-optional-packages@5.2.2: - resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} - hasBin: true + fontkitten@1.0.3: + resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} + engines: {node: '>=20'} - node-gyp@12.1.0: - resolution: {integrity: sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true + fontless@0.2.1: + resolution: {integrity: sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ==} + engines: {node: '>=18.12.0'} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} - nopt@9.0.0: - resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} - npm-bundled@5.0.0: - resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} - engines: {node: ^20.17.0 || >=22.9.0} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - npm-install-checks@8.0.0: - resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} - engines: {node: ^20.17.0 || >=22.9.0} + framer-motion@12.38.0: + resolution: {integrity: sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true - npm-normalize-package-bin@5.0.0: - resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} - engines: {node: ^20.17.0 || >=22.9.0} + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} - npm-package-arg@13.0.2: - resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} - engines: {node: ^20.17.0 || >=22.9.0} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} - npm-packlist@10.0.3: - resolution: {integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==} - engines: {node: ^20.17.0 || >=22.9.0} + fs-extra@11.3.4: + resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} + engines: {node: '>=14.14'} - npm-pick-manifest@11.0.3: - resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} - engines: {node: ^20.17.0 || >=22.9.0} + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-registry-fetch@19.1.1: - resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} - engines: {node: ^20.17.0 || >=22.9.0} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - object-deep-merge@2.0.0: - resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==} + fuse.js@7.3.0: + resolution: {integrity: sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==} + engines: {node: '>=10'} - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} + fzf@0.5.2: + resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} - on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + get-port-please@3.2.0: + resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} - open@10.2.0: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} - engines: {node: '>=18'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} - open@11.0.0: - resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} - engines: {node: '>=20'} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + giget@3.2.0: + resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} + hasBin: true - ora@9.3.0: - resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} - engines: {node: '>=20'} + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - ordered-binary@1.6.0: - resolution: {integrity: sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} - oxc-parser@0.124.0: - resolution: {integrity: sha512-h07SFj/tp2U3cf3+LFX6MmOguQiM9ahwpGs0ZK5CGhgL8p4kk24etrJKsEzhXAvo7mfvoKTZooZ5MLKAPRmJ1g==} - engines: {node: ^20.19.0 || >=22.12.0} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} - oxc-walker@0.7.0: - resolution: {integrity: sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A==} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} peerDependencies: - oxc-parser: '>=0.98.0' + tslib: '2' - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} + engines: {node: 20 || >=22} + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - p-retry@6.2.1: - resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} - engines: {node: '>=16.17'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} - package-manager-detector@1.6.0: - resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + globals@17.4.0: + resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==} + engines: {node: '>=18'} - pacote@21.3.1: - resolution: {integrity: sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true + globby@16.2.0: + resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} + engines: {node: '>=20'} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - parse-gitignore@2.0.0: - resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} - engines: {node: '>=14'} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} - parse-imports-exports@0.2.4: - resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + gzip-size@7.0.0: + resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} - parse-statements@1.0.11: - resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - parse5-html-rewriting-stream@8.0.0: - resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - parse5-htmlparser2-tree-adapter@6.0.1: - resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} - parse5-sax-parser@8.0.0: - resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} - parse5@5.1.1: - resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - parse5@8.0.0: - resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + hono@4.12.6: + resolution: {integrity: sha512-KljEp+MeEEEIOT75qBo1UjqqB29fRMtlDEwCxcexOzdkUq6LR/vRvHk5pdROcxyOYyW1niq7Gb5pFVGy5R1eBw==} + engines: {node: '>=16.9.0'} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + hookable@6.1.0: + resolution: {integrity: sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==} - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + engines: {node: ^20.17.0 || >=22.9.0} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} - engines: {node: 20 || >=22} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} - path-to-regexp@8.3.0: - resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - perfect-debounce@2.0.0: - resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} - pinia@3.0.4: - resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + http-proxy-middleware@2.0.9: + resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} + engines: {node: '>=12.0.0'} peerDependencies: - typescript: '>=4.5.0' - vue: ^3.5.11 + '@types/express': ^4.17.13 peerDependenciesMeta: - typescript: + '@types/express': optional: true - piscina@5.1.4: - resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} - engines: {node: '>=20.x'} + http-proxy-middleware@3.0.5: + resolution: {integrity: sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pkce-challenge@5.0.1: - resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} - engines: {node: '>=16.20.0'} + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} - pkg-dir@8.0.0: - resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} - engines: {node: '>=18'} + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + httpxy@0.5.0: + resolution: {integrity: sha512-qwX7QX/rK2visT10/b7bSeZWQOMlSm3svTD0pZpU+vJjNUP0YHtNv4c3z+MO+MSnGuRFWJFdCZiV+7F7dXIOzg==} - pkijs@3.3.3: - resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} - engines: {node: '>=16.0.0'} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} - playwright-core@1.59.1: - resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} - engines: {node: '>=18'} - hasBin: true + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} - playwright@1.59.1: - resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} - engines: {node: '>=18'} - hasBin: true + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} - pnpm-workspace-yaml@1.6.0: - resolution: {integrity: sha512-uUy4dK3E11sp7nK+hnT7uAWfkBMe00KaUw8OG3NuNlYQoTk4sc9pcdIy1+XIP85v9Tvr02mK3JPaNNrP0QyRaw==} + iconv-lite@0.7.1: + resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==} + engines: {node: '>=0.10.0'} - postcss-calc@10.1.1: - resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} - engines: {node: ^18.12 || ^20.9 || >=22.0} + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: - postcss: ^8.4.38 + postcss: ^8.1.0 - postcss-colormin@7.0.5: - resolution: {integrity: sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - postcss-convert-values@7.0.8: - resolution: {integrity: sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + ignore-walk@8.0.0: + resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} + engines: {node: ^20.17.0 || >=22.9.0} - postcss-discard-comments@7.0.5: - resolution: {integrity: sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} - 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 + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} - 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 + image-meta@0.2.2: + resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==} - 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 + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true - postcss-loader@8.2.0: - resolution: {integrity: sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + immer@11.1.4: + resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==} - postcss-media-query-parser@0.2.3: - resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} - 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 + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} - postcss-merge-rules@7.0.7: - resolution: {integrity: sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + impound@1.1.5: + resolution: {integrity: sha512-5AUn+QE0UofqNHu5f2Skf6Svukdg4ehOIq8O0EtqIx4jta0CDZYBPqpIHt0zrlUTiFVYlLpeH39DoikXBjPKpA==} - 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 + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - postcss-minify-gradients@7.0.1: - resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} - postcss-minify-params@7.0.5: - resolution: {integrity: sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} - postcss-minify-selectors@7.0.5: - resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + individual@3.0.0: + resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} - postcss-nested@7.0.2: - resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.2.14 + injection-js@2.6.1: + resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} - 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 + ioredis@5.10.1: + resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} + engines: {node: '>=12.22.0'} - 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 + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} - 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 + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} - 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 + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} + engines: {node: '>= 10'} - 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 + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - 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 + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - postcss-normalize-unicode@7.0.5: - resolution: {integrity: sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} - 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 + is-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} - 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 + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} - 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 + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true - postcss-reduce-initial@7.0.5: - resolution: {integrity: sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - 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 + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.4.31 + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} - postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} - engines: {node: '>=4'} + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} - postcss-svgo@7.1.0: - resolution: {integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.32 + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} - postcss-unique-selectors@7.0.4: - resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + is-installed-globally@1.0.0: + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} + engines: {node: '>=18'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} - engines: {node: ^10 || ^12 || >=14} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - powershell-utils@0.1.0: - resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} - engines: {node: '>=20'} + is-network-error@1.3.0: + resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} + engines: {node: '>=16'} - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - pretty-bytes@7.1.0: - resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} - engines: {node: '>=20'} + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} - proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} - proc-log@6.1.0: - resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} - engines: {node: ^20.17.0 || >=22.9.0} + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - pure-rand@7.0.1: - resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - pvtsutils@1.3.6: - resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} - pvutils@1.1.5: - resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} - engines: {node: '>=16.0.0'} + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} - quansync@1.0.0: - resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - raw-body@2.5.3: - resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} - engines: {node: '>= 0.8'} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - raw-body@3.0.2: - resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} - engines: {node: '>= 0.10'} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} - react-dom@19.2.4: - resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} - peerDependencies: - react: ^19.2.4 + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + isomorphic.js@0.2.5: + resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} - react-router-dom@7.14.0: - resolution: {integrity: sha512-2G3ajSVSZMEtmTjIklRWlNvo8wICEpLihfD/0YMDxbWK2UyP5EGfnoIn9AIQGnF3G/FX0MRbHXdFcD+rL1ZreQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} - react-router@7.14.0: - resolution: {integrity: sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - peerDependenciesMeta: - react-dom: - optional: true + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} - react@19.2.4: - resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} - engines: {node: '>=0.10.0'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} - readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} - engines: {node: '>= 20.19.0'} + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - refa@0.12.1: - resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + jsdoc-type-pratt-parser@7.1.1: + resolution: {integrity: sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==} + engines: {node: '>=20.0.0'} - regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} + jsdoc-type-pratt-parser@7.2.0: + resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} + engines: {node: '>=20.0.0'} - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + jsdom@29.0.2: + resolution: {integrity: sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true - regex-parser@2.3.1: - resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true - regexp-ast-analysis@0.7.1: - resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} + json-parse-even-better-errors@5.0.0: + resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} + engines: {node: ^20.17.0 || >=22.9.0} - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} - hasBin: true + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - reserved-identifiers@1.2.0: - resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} - engines: {node: '>=18'} + jsonc-eslint-parser@3.1.0: + resolution: {integrity: sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - resolve-url-loader@5.0.0: - resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} - engines: {node: '>=12'} + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} - engines: {node: '>= 0.4'} - hasBin: true + karma-source-map-support@1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} + katex@0.16.45: + resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} + hasBin: true - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} - rolldown@1.0.0-rc.12: - resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} - rolldown@1.0.0-rc.4: - resolution: {integrity: sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true + knitwork@1.3.0: + resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} - rollup-plugin-analyzer@4.0.0: - resolution: {integrity: sha512-LL9GEt3bkXp6Wa19SNR5MWcvHNMvuTFYg+eYBZN2OIFhSWN+pEJUQXEKu5BsOeABob3x9PDaLKW7w5iOJnsESQ==} - engines: {node: '>=8.0.0'} + launch-editor@2.13.2: + resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} - rollup-plugin-dts@6.3.0: - resolution: {integrity: sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} - rollup-plugin-dts@6.4.1: - resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} - engines: {node: '>=20'} + less-loader@12.3.1: + resolution: {integrity: sha512-JZZmG7gMzoDP3VGeEG8Sh6FW5wygB5jYL7Wp29FFihuRTsIBacqO3LbRPr2yStYD11riVf13selLm/CPFRDBRQ==} + engines: {node: '>= 18.12.0'} peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 || ^6.0 + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true - rollup-plugin-visualizer@7.0.1: - resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} - engines: {node: '>=22'} + less@4.4.2: + resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} + engines: {node: '>=14'} hasBin: true - peerDependencies: - rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rolldown: - optional: true - rollup: - optional: true - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + less@4.5.1: + resolution: {integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==} + engines: {node: '>=14'} hasBin: true - rollup@4.60.0: - resolution: {integrity: sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} - rollup@4.60.1: - resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + lib0@0.2.117: + resolution: {integrity: sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==} + engines: {node: '>=16'} hasBin: true - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} - - run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} - engines: {node: '>=18'} + license-webpack-plugin@4.0.2: + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] - sass-loader@16.0.7: - resolution: {integrity: sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - webpack: - optional: true + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] - sass@1.97.3: - resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} - engines: {node: '>=14.0.0'} - hasBin: true + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] - sax@1.4.3: - resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] - scslre@0.3.0: - resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} - engines: {node: ^14.0.0 || >=16.0.0} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - selfsigned@5.5.0: - resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} - engines: {node: '>=18'} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true + linkifyjs@4.3.2: + resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + listhen@1.9.1: + resolution: {integrity: sha512-4EhoyVcXEpNlY5HJRSQpH7Rba94M8N2JmI62ePjl0lrJKXSfG0F1FAgHGxBoz/T3pe41sUEwkIRRIcaUL0/Ofw==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} + lmdb@3.5.1: + resolution: {integrity: sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==} hasBin: true - send@0.19.2: - resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} - engines: {node: '>= 0.8.0'} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + engines: {node: '>=6.11.5'} - send@1.2.1: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} - serialize-javascript@7.0.4: - resolution: {integrity: sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==} - engines: {node: '>=20.0.0'} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} - seroval-plugins@1.5.1: - resolution: {integrity: sha512-4FbuZ/TMl02sqv0RTFexu0SP6V+ywaIe5bAWCCEik0fk17BhALgwvUDVF7e3Uvf9pxmwCEJsRPmlkUE6HdzLAw==} - engines: {node: '>=10'} - peerDependencies: - seroval: ^1.0 + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - seroval@1.5.1: - resolution: {integrity: sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA==} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - serve-static@1.16.3: - resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} - engines: {node: '>= 0.8.0'} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - serve-static@2.2.1: - resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} - engines: {node: '>= 18'} + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - set-cookie-parser@2.7.2: - resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} - engines: {node: '>= 0.4'} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} + lru-cache@11.3.2: + resolution: {integrity: sha512-wgWa6FWQ3QRRJbIjbsldRJZxdxYngT/dO0I5Ynmlnin8qy7tC6xYzbcJjtN4wHLXtkbVwHzk0C+OejVw1XM+DQ==} + engines: {node: 20 || >=22} - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + magic-regexp@0.10.0: + resolution: {integrity: sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} - sigstore@4.0.0: - resolution: {integrity: sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==} - engines: {node: ^20.17.0 || >=22.9.0} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - sirv@3.0.2: - resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} - engines: {node: '>=18'} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} - skin-tone@2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} + make-fetch-happen@15.0.3: + resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} + engines: {node: ^20.17.0 || >=22.9.0} - slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} - engines: {node: '>=18'} + markdown-it@14.1.1: + resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} + hasBin: true - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <16' - socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} + marked@17.0.6: + resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} + engines: {node: '>= 20'} + hasBin: true - socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true - solid-js@1.9.12: - resolution: {integrity: sha512-QzKaSJq2/iDrWR1As6MHZQ8fQkdOBf8GReYb7L5iKwMGceg7HxDcaOHk0at66tNgn9U2U7dXo8ZZpLIAmGMzgw==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} - solid-refresh@0.6.3: - resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} - peerDependencies: - solid-js: ^1.3 + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - source-map-loader@5.0.0: - resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.72.1 + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} - spdx-license-ids@3.0.22: - resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - ssri@13.0.0: - resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} - engines: {node: ^20.17.0 || >=22.9.0} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - std-env@4.0.0: - resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + memfs@4.51.1: + resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} - stdin-discarder@0.3.1: - resolution: {integrity: sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==} - engines: {node: '>=18'} + merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} - string-width@8.1.0: - resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} - engines: {node: '>=20'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} - engines: {node: '>=12'} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - strip-indent@4.1.1: - resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} - engines: {node: '>=12'} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - stylehacks@7.0.7: - resolution: {integrity: sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - superjson@2.2.6: - resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} - engines: {node: '>=16'} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} - engines: {node: '>=14.18'} + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} - svelte-check@4.4.6: - resolution: {integrity: sha512-kP1zG81EWaFe9ZyTv4ZXv44Csi6Pkdpb7S3oj6m+K2ec/IcDg/a8LsFsnVLqm2nxtkSwsd5xPj/qFkTBgXHXjg==} - engines: {node: '>= 18.0.0'} - hasBin: true - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - typescript: '>=5.0.0' + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - svelte@5.55.1: - resolution: {integrity: sha512-QjvU7EFemf6mRzdMGlAFttMWtAAVXrax61SZYHdkD6yoVGQ89VeyKfZD4H1JrV1WLmJBxWhFch9H6ig/87VGjw==} - engines: {node: '>=18'} - - svgo@4.0.0: - resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} - engines: {node: '>=16'} - hasBin: true + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - synckit@0.11.12: - resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} - engines: {node: ^14.18.0 || >=16.0.0} + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} - engines: {node: '>=6'} + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - tar@7.5.2: - resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} - engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - terser-webpack-plugin@5.3.16: - resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - terser@5.46.0: - resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} - engines: {node: '>=10'} - hasBin: true + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - thingies@2.5.0: - resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - tinyexec@1.0.4: - resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} - engines: {node: '>=18'} + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} - engines: {node: '>=14.0.0'} + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - tldts-core@7.0.28: - resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - tldts@7.0.28: - resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} - hasBin: true + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - to-valid-identifier@1.0.0: - resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} - engines: {node: '>=20'} + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} - toml-eslint-parser@1.0.3: - resolution: {integrity: sha512-A5F0cM6+mDleacLIEUkmfpkBbnHJFV1d2rprHU2MXNk7mlxHq2zGojA+SRvQD1RoMo9gqjZPWEaKG4v1BQ48lw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} - tough-cookie@6.0.1: - resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} - engines: {node: '>=16'} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} - tr46@6.0.0: - resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} - engines: {node: '>=20'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} - tree-dump@1.1.0: - resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + mime@4.1.0: + resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==} + engines: {node: '>=16'} hasBin: true - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} - ts-declaration-location@1.0.7: - resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + mini-css-extract-plugin@2.10.0: + resolution: {integrity: sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==} + engines: {node: '>= 12.13.0'} peerDependencies: - typescript: '>=4.0.0' + webpack: ^5.0.0 - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} - tsyringe@4.10.0: - resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} - engines: {node: '>= 6.0.0'} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} - tuf-js@4.0.0: - resolution: {integrity: sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==} - engines: {node: ^20.17.0 || >=22.9.0} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + minipass-fetch@5.0.0: + resolution: {integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==} + engines: {node: ^20.17.0 || >=22.9.0} - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} - type-level-regexp@0.1.17: - resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==} + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} - typed-assert@1.0.9: - resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} - typescript@5.6.1-rc: - resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} - engines: {node: '>=14.17'} - hasBin: true + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} - typescript@6.0.2: - resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} - engines: {node: '>=14.17'} - hasBin: true + mitt@2.1.0: + resolution: {integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==} - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - unbuild@3.6.1: - resolution: {integrity: sha512-+U5CdtrdjfWkZhuO4N9l5UhyiccoeMEXIc2Lbs30Haxb+tRwB3VwB8AoZRxlAzORXunenSo+j6lh45jx+xkKgg==} + mkdist@2.4.1: + resolution: {integrity: sha512-Ezk0gi04GJBkqMfsksICU5Rjoemc4biIekwgrONWVPor2EO/N9nBgN6MZXAf7Yw4mDDhrNyKbdETaHNevfumKg==} hasBin: true peerDependencies: - typescript: ^5.9.2 + sass: ^1.92.1 + typescript: '>=5.9.2' + vue: ^3.5.21 + vue-sfc-transformer: ^0.1.1 + vue-tsc: ^1.8.27 || ^2.0.21 || ^3.0.0 peerDependenciesMeta: + sass: + optional: true typescript: optional: true + vue: + optional: true + vue-sfc-transformer: + optional: true + vue-tsc: + optional: true - unconfig-core@7.5.0: - resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} - - unconfig@7.5.0: - resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + mocked-exports@0.1.1: + resolution: {integrity: sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==} - undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + module-replacements@2.11.0: + resolution: {integrity: sha512-j5sNQm3VCpQQ7nTqGeOZtoJtV3uKERgCBm9QRhmGRiXiqkf7iRFOkfxdJRZWLkqYY8PNf4cDQF/WfXUYLENrRA==} - undici-types@7.22.0: - resolution: {integrity: sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==} + motion-dom@12.38.0: + resolution: {integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==} - undici@7.24.4: - resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} - engines: {node: '>=20.18.1'} + motion-utils@12.36.0: + resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==} - undici@7.24.7: - resolution: {integrity: sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==} - engines: {node: '>=20.18.1'} + motion-v@2.2.0: + resolution: {integrity: sha512-8rrUBt9UMwy45MfLMwHer9J7xBY/rL31S+0U3ZUAouqjH3AOVHvS0NGuXwF4mfWfvb22rfZEv59ZsBc2f1epxQ==} + peerDependencies: + '@vueuse/core': '>=10.0.0' + vue: '>=3.0.0' - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true - unimport@5.6.0: - resolution: {integrity: sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A==} - engines: {node: '>=18.12.0'} + msgpackr@1.11.6: + resolution: {integrity: sha512-DzHs4d3a2AaIF4bQZNX5z7NfcoV1pHK/FIcX8Ow65s2DVYPVhJoq0S7wf6I17NkYuWRnG0mvRv4/Bii0D1PEfA==} - unique-filename@5.0.0: - resolution: {integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==} - engines: {node: ^20.17.0 || >=22.9.0} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - unique-slug@6.0.0: - resolution: {integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==} - engines: {node: ^20.17.0 || >=22.9.0} + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + nanotar@0.3.0: + resolution: {integrity: sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true - unplugin-auto-import@21.0.0: - resolution: {integrity: sha512-vWuC8SwqJmxZFYwPojhOhOXDb5xFhNNcEVb9K/RFkyk/3VnfaOjzitWN7v+8DEKpMjSsY2AEGXNgt6I0yQrhRQ==} - engines: {node: '>=20.19.0'} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + ng-packagr@21.2.2: + resolution: {integrity: sha512-VO0y7RU3Ik8E14QdrryVyVbTAyqO2MK9W9GrG4e/4N8+ti+DWiBSQmw0tIhnV67lEjQwCccPA3ZBoIn3B1vJ1Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + hasBin: true peerDependencies: - '@nuxt/kit': ^4.0.0 - '@vueuse/core': '*' + '@angular/compiler-cli': ^21.0.0 || ^21.2.0-next + tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 + tslib: ^2.3.0 + typescript: '>=5.9 <6.0' peerDependenciesMeta: - '@nuxt/kit': + tailwindcss: optional: true - '@vueuse/core': + + nitropack@2.13.3: + resolution: {integrity: sha512-C8vO7RxkU0AQ3HbYUumuG6MVM5JjRaBchke/rYFOp3EvrLtTBHZYhDVGECdpa27vNuOYRzm3GtQMn2YDOjDJLA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + xml2js: ^0.6.2 + peerDependenciesMeta: + xml2js: optional: true - unplugin-utils@0.3.1: - resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} - engines: {node: '>=20.19.0'} + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - unplugin-vue-components@32.0.0: - resolution: {integrity: sha512-uLdccgS7mf3pv1bCCP20y/hm+u1eOjAmygVkh+Oa70MPkzgl1eQv1L0CwdHNM3gscO8/GDMGIET98Ja47CBbZg==} - engines: {node: '>=20.19.0'} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: - '@nuxt/kit': ^3.2.2 || ^4.0.0 - vue: ^3.0.0 + encoding: ^0.1.0 peerDependenciesMeta: - '@nuxt/kit': + encoding: optional: true - unplugin@2.3.11: - 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} + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} - untyped@2.0.0: - resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + node-gyp@12.1.0: + resolution: {integrity: sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} - utility-types@3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + npm-bundled@5.0.0: + resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} + engines: {node: ^20.17.0 || >=22.9.0} - validate-npm-package-name@7.0.2: - resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} + npm-install-checks@8.0.0: + resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} engines: {node: ^20.17.0 || >=22.9.0} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + npm-normalize-package-bin@5.0.0: + resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} + engines: {node: ^20.17.0 || >=22.9.0} - vite-bundle-analyzer@1.3.7: - resolution: {integrity: sha512-dYlW6iM0Gq7+uSEfXytDC+UjruUMgEKhXwQUbw4cJUgHA6FdEhpLgIrL5OZEyabrzVen0mZyfOSESyZ7nGyT8g==} - hasBin: true + npm-package-arg@13.0.2: + resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} + engines: {node: ^20.17.0 || >=22.9.0} - vite-plugin-inspect@10.1.0: - resolution: {integrity: sha512-solJQhkZULyR7Qq2CRGbO/8ijNPTwmxxLDMx3FkMzGQAuVqKrgqmV2cw/u8SXBsKDHgSMykipW+78MBMZz3O0g==} - engines: {node: '>=14'} + npm-packlist@10.0.3: + resolution: {integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-pick-manifest@11.0.3: + resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-registry-fetch@19.1.1: + resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-run-path@5.3.0: + 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: - '@nuxt/kit': '*' - vite: ^6.0.0 + '@parcel/watcher': ^2.1.0 + '@types/node': '>=18.12.0' peerDependenciesMeta: - '@nuxt/kit': + '@parcel/watcher': + optional: true + '@types/node': optional: true - vite-plugin-solid@2.11.12: - resolution: {integrity: sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==} - peerDependencies: - '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* - solid-js: ^1.7.2 - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - '@testing-library/jest-dom': - optional: true + nypm@0.6.5: + resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==} + engines: {node: '>=18'} + hasBin: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-deep-merge@2.0.0: + resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + 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==} + + on-change@6.0.2: + resolution: {integrity: sha512-08+12qcOVEA0fS9g/VxKS27HaT94nRutUT77J2dr8zv/unzXopvhBuF8tNLWsoLQ5IgrQ6eptGeGqUYat82U1w==} + engines: {node: '>=20'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.5: + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} + + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@9.3.0: + resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} + engines: {node: '>=20'} + + ordered-binary@1.6.0: + resolution: {integrity: sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==} + + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + + oxc-minify@0.117.0: + resolution: {integrity: sha512-JHsv/b+bmBJkAzkHXgTN7RThloVxLHPT0ojHfjqxVeHuQB7LPpLUbJ2qfwz37sto9stZ9+AVwUP4b3gtR7p/Tw==} engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@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 - vite@8.0.5: - resolution: {integrity: sha512-nmu43Qvq9UopTRfMx2jOYW5l16pb3iDC1JH6yMuPkpVbzK0k+L7dfsEDH4jRgYFmsg0sTAqkojoZgzLMlwHsCQ==} + oxc-parser@0.117.0: + resolution: {integrity: sha512-l3cbgK5wUvWDVNWM/JFU77qDdGZK1wudnLsFcrRyNo/bL1CyU8pC25vDhMHikVY29lbK2InTWsX42RxVSutUdQ==} engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.0 - esbuild: ^0.27.0 || ^0.28.0 - jiti: '>=1.21.0' - less: ^4.0.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - '@vitejs/devtools': - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vitefu@1.1.2: - resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0 - peerDependenciesMeta: - vite: - optional: true + oxc-parser@0.124.0: + resolution: {integrity: sha512-h07SFj/tp2U3cf3+LFX6MmOguQiM9ahwpGs0ZK5CGhgL8p4kk24etrJKsEzhXAvo7mfvoKTZooZ5MLKAPRmJ1g==} + engines: {node: ^20.19.0 || >=22.12.0} - vitest-package-exports@1.2.0: - resolution: {integrity: sha512-eSpazGhRMgGfUdaWgMeLM3v4l5P/1wFDA6gTe43Q+wT/r1jn/k8Ft9tsVleMU+gjzLXlwaPHSpt1/5+JMsnPWw==} + oxc-transform@0.117.0: + resolution: {integrity: sha512-u1Stl2uhDh9bFuOGjGXQIqx46IRUNMyHQkq59LayXNGS2flNv7RpZpRSWs5S5deuNP6jJZ12gtMBze+m4dOhmw==} + engines: {node: ^20.19.0 || >=22.12.0} - vitest@4.1.2: - resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true + oxc-walker@0.7.0: + resolution: {integrity: sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A==} peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.2 - '@vitest/browser-preview': 4.1.2 - '@vitest/browser-webdriverio': 4.1.2 - '@vitest/ui': 4.1.2 - happy-dom: '*' - jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@opentelemetry/api': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + oxc-parser: '>=0.98.0' - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} - vue-eslint-parser@10.4.0: - resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + p-limit@7.3.0: + resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} + engines: {node: '>=20'} - 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 + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} - vue-tsc@3.2.6: - resolution: {integrity: sha512-gYW/kWI0XrwGzd0PKc7tVB/qpdeAkIZLNZb10/InizkQjHjnT8weZ/vBarZoj4kHKbUTZT/bAVgoOr8x4NsQ/Q==} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + engines: {node: '>=18'} + + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + pacote@21.3.1: + resolution: {integrity: sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - peerDependencies: - typescript: '>=5.0.0' - vue@3.5.32: - resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + + parse5-html-rewriting-stream@8.0.0: + resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5-sax-parser@8.0.0: + resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinia@3.0.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + piscina@5.1.4: + resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} + engines: {node: '>=20.x'} + + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} + engines: {node: '>=16.20.0'} + + pkg-dir@8.0.0: + resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} + engines: {node: '>=18'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + pkijs@3.3.3: + resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} + engines: {node: '>=16.0.0'} + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pnpm-workspace-yaml@1.6.0: + resolution: {integrity: sha512-uUy4dK3E11sp7nK+hnT7uAWfkBMe00KaUw8OG3NuNlYQoTk4sc9pcdIy1+XIP85v9Tvr02mK3JPaNNrP0QyRaw==} + + 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-loader@8.2.0: + resolution: {integrity: sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + 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-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-nested@7.0.2: + resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} + engines: {node: '>=18.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'} + peerDependencies: + postcss: ^8.4.31 + + 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==} + + postcss@8.5.6: + 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} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + pretty-bytes@7.1.0: + resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} + engines: {node: '>=20'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + proc-log@5.0.0: + resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + prosemirror-changeset@2.4.0: + resolution: {integrity: sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==} + + prosemirror-collab@1.3.1: + resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} + + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} + + prosemirror-dropcursor@1.8.2: + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} + + prosemirror-gapcursor@1.4.1: + resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==} + + prosemirror-history@1.5.0: + resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==} + + prosemirror-inputrules@1.5.1: + resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==} + + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} + + prosemirror-markdown@1.13.4: + resolution: {integrity: sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==} + + prosemirror-menu@1.3.0: + resolution: {integrity: sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg==} + + prosemirror-model@1.25.4: + resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==} + + prosemirror-schema-basic@1.2.4: + resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} + + prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} + + prosemirror-state@1.4.4: + resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} + + prosemirror-tables@1.8.5: + resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} + + prosemirror-trailing-node@3.0.0: + resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} + peerDependencies: + prosemirror-model: ^1.22.1 + prosemirror-state: ^1.4.2 + prosemirror-view: ^1.33.8 + + prosemirror-transform@1.12.0: + resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==} + + prosemirror-view@1.41.8: + resolution: {integrity: sha512-TnKDdohEatgyZNGCDWIdccOHXhYloJwbwU+phw/a23KBvJIR9lWQWW7WHHK3vBdOLDNuF7TaX98GObUZOWkOnA==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + publint@0.3.18: + resolution: {integrity: sha512-JRJFeBTrfx4qLwEuGFPk+haJOJN97KnPuK01yj+4k/Wj5BgoOK5uNsivporiqBjk2JDaslg7qJOhGRnpltGeog==} + engines: {node: '>=18'} + hasBin: true + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@7.0.1: + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + + rc9@3.0.1: + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + peerDependencies: + react: ^19.2.5 + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-router-dom@7.14.0: + resolution: {integrity: sha512-2G3ajSVSZMEtmTjIklRWlNvo8wICEpLihfD/0YMDxbWK2UyP5EGfnoIn9AIQGnF3G/FX0MRbHXdFcD+rL1ZreQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.14.0: + resolution: {integrity: sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + engines: {node: '>=0.10.0'} + + read-yaml-file@2.1.0: + resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} + engines: {node: '>=10.13'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regex-parser@2.3.1: + resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + hasBin: true + + reka-ui@2.9.3: + resolution: {integrity: sha512-C9lCVxsSC7uYD0Nbgik1+14FNndHNprZmf0zGQt0ZDYIt5KxXV3zD0hEqNcfRUsEEJvVmoRsUkJnASBVBeaaUw==} + peerDependencies: + vue: '>= 3.4.0' + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + reserved-identifiers@1.2.0: + resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} + engines: {node: '>=18'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rolldown@1.0.0-rc.13: + resolution: {integrity: sha512-bvVj8YJmf0rq4pSFmH7laLa6pYrhghv3PRzrCdRAr23g66zOKVJ4wkvFtgohtPLWmthgg8/rkaqRHrpUEh0Zbw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rolldown@1.0.0-rc.15: + resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rolldown@1.0.0-rc.4: + resolution: {integrity: sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rollup-plugin-analyzer@4.0.0: + resolution: {integrity: sha512-LL9GEt3bkXp6Wa19SNR5MWcvHNMvuTFYg+eYBZN2OIFhSWN+pEJUQXEKu5BsOeABob3x9PDaLKW7w5iOJnsESQ==} + engines: {node: '>=8.0.0'} + + rollup-plugin-dts@6.4.1: + resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} + engines: {node: '>=20'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 || ^6.0 + + rollup-plugin-visualizer@7.0.1: + resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} + engines: {node: '>=22'} + hasBin: true + peerDependencies: + rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + + rou3@0.8.1: + resolution: {integrity: sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==} + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-loader@16.0.7: + resolution: {integrity: sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + + sass@1.97.3: + resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serialize-javascript@7.0.4: + resolution: {integrity: sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==} + engines: {node: '>=20.0.0'} + + seroval-plugins@1.5.1: + resolution: {integrity: sha512-4FbuZ/TMl02sqv0RTFexu0SP6V+ywaIe5bAWCCEik0fk17BhALgwvUDVF7e3Uvf9pxmwCEJsRPmlkUE6HdzLAw==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.5.1: + resolution: {integrity: sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA==} + engines: {node: '>=10'} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-placeholder@2.0.2: + resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + shiki@4.0.2: + resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} + engines: {node: '>=20'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sigstore@4.0.0: + resolution: {integrity: sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==} + engines: {node: ^20.17.0 || >=22.9.0} + + simple-git@3.35.2: + resolution: {integrity: sha512-ZMjl06lzTm1EScxEGuM6+mEX+NQd14h/B3x0vWU+YOXAMF8sicyi1K4cjTfj5is+35ChJEHDl1EjypzYFWH2FA==} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + smob@1.6.1: + resolution: {integrity: sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==} + engines: {node: '>=20.0.0'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + solid-js@1.9.12: + resolution: {integrity: sha512-QzKaSJq2/iDrWR1As6MHZQ8fQkdOBf8GReYb7L5iKwMGceg7HxDcaOHk0at66tNgn9U2U7dXo8ZZpLIAmGMzgw==} + + solid-refresh@0.6.3: + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} + peerDependencies: + solid-js: ^1.3 + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-loader@5.0.0: + resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.72.1 + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + srvx@0.11.15: + resolution: {integrity: sha512-iXsux0UcOjdvs0LCMa2Ws3WwcDUozA3JN3BquNXkaFPP7TpRqgunKdEgoZ/uwb1J6xaYHfxtz9Twlh6yzwM6Tg==} + engines: {node: '>=20.16.0'} + hasBin: true + + ssri@13.0.0: + resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} + engines: {node: ^20.17.0 || >=22.9.0} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + + stdin-discarder@0.3.1: + resolution: {integrity: sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==} + engines: {node: '>=18'} + + streamx@2.25.0: + resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.1.0: + resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} + engines: {node: '>=20'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-comments-strings@1.2.0: + resolution: {integrity: sha512-zwF4bmnyEjZwRhaak9jUWNxc0DoeKBJ7lwSN/LEc8dQXZcUFG6auaaTQJokQWXopLdM3iTx01nQT8E4aL29DAQ==} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} + engines: {node: '>=12'} + + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + structured-clone-es@2.0.0: + resolution: {integrity: sha512-5UuAHmBLXYPCl22xWJrFuGmIhBKQzxISPVz6E7nmTmTcAOpUzlbjKJsRrCE4vADmMQ0dzeCnlWn9XufnAGf76Q==} + + stylehacks@7.0.7: + resolution: {integrity: sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte-check@4.4.6: + resolution: {integrity: sha512-kP1zG81EWaFe9ZyTv4ZXv44Csi6Pkdpb7S3oj6m+K2ec/IcDg/a8LsFsnVLqm2nxtkSwsd5xPj/qFkTBgXHXjg==} + engines: {node: '>= 18.0.0'} + hasBin: true + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: '>=5.0.0' + + svelte@5.55.2: + resolution: {integrity: sha512-z41M/hi0ZPTzrwVKLvB/R1/Oo08gL1uIib8HZ+FncqxxtY9MLb01emg2fqk+WLZ/lNrrtNDFh7BZLDxAHvMgLw==} + engines: {node: '>=18'} + + svgo@4.0.1: + resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} + engines: {node: '>=16'} + hasBin: true + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tailwind-merge@3.5.0: + resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} + + tailwind-variants@3.2.2: + resolution: {integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwind-merge: '>=3.0.0' + tailwindcss: '*' + peerDependenciesMeta: + tailwind-merge: + optional: true + + tailwindcss@4.2.2: + resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tar-stream@3.1.8: + resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} + + tar@7.5.2: + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + + terser-webpack-plugin@5.3.16: + resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + engines: {node: '>=10'} + hasBin: true + + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + 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} + + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@7.0.28: + resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} + + tldts@7.0.28: + resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-valid-identifier@1.0.0: + resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} + engines: {node: '>=20'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toml-eslint-parser@1.0.3: + resolution: {integrity: sha512-A5F0cM6+mDleacLIEUkmfpkBbnHJFV1d2rprHU2MXNk7mlxHq2zGojA+SRvQD1RoMo9gqjZPWEaKG4v1BQ48lw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + peerDependencies: + typescript: '>=4.0.0' + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + + tuf-js@4.0.0: + resolution: {integrity: sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==} + engines: {node: ^20.17.0 || >=22.9.0} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@5.5.0: + resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} + engines: {node: '>=20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type-is@2.0.1: + 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-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + ultrahtml@1.6.0: + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} + + unbuild@3.6.1: + resolution: {integrity: sha512-+U5CdtrdjfWkZhuO4N9l5UhyiccoeMEXIc2Lbs30Haxb+tRwB3VwB8AoZRxlAzORXunenSo+j6lh45jx+xkKgg==} + hasBin: true + peerDependencies: + typescript: ^5.9.2 + peerDependenciesMeta: + typescript: + optional: true + + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + + unconfig@7.5.0: + resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + unctx@2.5.0: + resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==} + + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + + undici-types@7.22.0: + resolution: {integrity: sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==} + + undici@7.24.4: + resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} + engines: {node: '>=20.18.1'} + + undici@7.24.7: + resolution: {integrity: sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==} + engines: {node: '>=20.18.1'} + + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + + unifont@0.7.4: + resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==} + + unimport@5.6.0: + resolution: {integrity: sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A==} + engines: {node: '>=18.12.0'} + + unimport@6.0.2: + resolution: {integrity: sha512-ZSOkrDw380w+KIPniY3smyXh2h7H9v2MNr9zejDuh239o5sdea44DRAYrv+rfUi2QGT186P2h0GPGKvy8avQ5g==} + engines: {node: '>=18.12.0'} + + unique-filename@5.0.0: + resolution: {integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==} + engines: {node: ^20.17.0 || >=22.9.0} + + unique-slug@6.0.0: + resolution: {integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==} + engines: {node: ^20.17.0 || >=22.9.0} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-auto-import@21.0.0: + resolution: {integrity: sha512-vWuC8SwqJmxZFYwPojhOhOXDb5xFhNNcEVb9K/RFkyk/3VnfaOjzitWN7v+8DEKpMjSsY2AEGXNgt6I0yQrhRQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^4.0.0 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + unplugin-vue-components@32.0.0: + resolution: {integrity: sha512-uLdccgS7mf3pv1bCCP20y/hm+u1eOjAmygVkh+Oa70MPkzgl1eQv1L0CwdHNM3gscO8/GDMGIET98Ja47CBbZg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^3.2.2 || ^4.0.0 + vue: ^3.0.0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + unplugin@2.3.11: + 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==} + + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + + untyped@2.0.0: + resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} + hasBin: true + + unwasm@0.5.3: + resolution: {integrity: sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.3: + resolution: {integrity: sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + valibot@1.3.1: + resolution: {integrity: sha512-sfdRir/QFM0JaF22hqTroPc5xy4DimuGQVKFrzF1YfGwaS1nJot3Y8VqMdLO2Lg27fMzat2yD3pY5PbAYO39Gg==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + validate-npm-package-name@7.0.2: + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} + engines: {node: ^20.17.0 || >=22.9.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vaul-vue@0.4.1: + resolution: {integrity: sha512-A6jOWOZX5yvyo1qMn7IveoWN91mJI5L3BUKsIwkg6qrTGgHs1Sb1JF/vyLJgnbN1rH4OOOxFbtqL9A46bOyGUQ==} + peerDependencies: + reka-ui: ^2.0.0 + vue: ^3.3.0 + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-bundle-analyzer@1.3.7: + resolution: {integrity: sha512-dYlW6iM0Gq7+uSEfXytDC+UjruUMgEKhXwQUbw4cJUgHA6FdEhpLgIrL5OZEyabrzVen0mZyfOSESyZ7nGyT8g==} + 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@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@10.1.0: + resolution: {integrity: sha512-solJQhkZULyR7Qq2CRGbO/8ijNPTwmxxLDMx3FkMzGQAuVqKrgqmV2cw/u8SXBsKDHgSMykipW+78MBMZz3O0g==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^6.0.0 + peerDependenciesMeta: + '@nuxt/kit': + 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.12: + resolution: {integrity: sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==} + peerDependencies: + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@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@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@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 + + vite@7.3.2: + resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@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 + + vite@8.0.8: + resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.2: + resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + + vitest-package-exports@1.2.0: + resolution: {integrity: sha512-eSpazGhRMgGfUdaWgMeLM3v4l5P/1wFDA6gTe43Q+wT/r1jn/k8Ft9tsVleMU+gjzLXlwaPHSpt1/5+JMsnPWw==} + + vitest@4.1.3: + resolution: {integrity: sha512-DBc4Tx0MPNsqb9isoyOq00lHftVx/KIU44QOm2q59npZyLUkENn8TMFsuzuO+4U2FUa9rgbbPt3udrP25GcjXw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.3 + '@vitest/browser-preview': 4.1.3 + '@vitest/browser-webdriverio': 4.1.3 + '@vitest/coverage-istanbul': 4.1.3 + '@vitest/coverage-v8': 4.1.3 + '@vitest/ui': 4.1.3 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + 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-component-type-helpers@3.2.6: + resolution: {integrity: sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-devtools-stub@0.1.0: + resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} + + vue-eslint-parser@10.4.0: + resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.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-tsc@3.2.6: + resolution: {integrity: sha512-gYW/kWI0XrwGzd0PKc7tVB/qpdeAkIZLNZb10/InizkQjHjnT8weZ/vBarZoj4kHKbUTZT/bAVgoOr8x4NsQ/Q==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue-virtual-scroller@2.0.1: + resolution: {integrity: sha512-3Drq8C61C4B3reSaZJr5nXBf/B7Beq1+h5/kYZB25MLYljTy97ISeUufRX9z6ZSZlFDXyafAOLK9XwajOWJY1A==} + peerDependencies: + vue: ^3.3.0 + + vue@3.5.32: + resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + weak-lru-cache@1.2.2: + resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@5.2.3: + resolution: {integrity: sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-merge@6.0.1: + resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} + engines: {node: '>=18.0.0'} + + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack-subresource-integrity@5.1.0: + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webpack@5.105.2: + resolution: {integrity: sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + wheel-gestures@2.2.48: + resolution: {integrity: sha512-f+Gy33Oa5Z14XY9679Zze+7VFhbsQfBFXodnU2x589l4kxGM9L5Y8zETTmcMR5pWOPQyRv4Z0lNax6xCO0NSlA==} + engines: {node: '>=18'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + 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'} + hasBin: true + + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + write-yaml-file@5.0.0: + resolution: {integrity: sha512-FdNA4RyH1L43TlvGG8qOMIfcEczwA5ij+zLXUy3Z83CjxhLvcV7/Q/8pk22wnCgYw7PJhtK+7lhO+qqyT4NdvQ==} + engines: {node: '>=16.14'} + + 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'} + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + xhr2@0.2.1: + resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} + engines: {node: '>= 6'} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y-protocols@1.0.7: + resolution: {integrity: sha512-YSVsLoXxO67J6eE/nV4AtFtT3QEotZf5sK5BHxFBXso7VDUT3Tx07IfA6hsu5Q5OmBdMkQVmFZ9QOA7fikWvnw==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + peerDependencies: + yjs: ^13.0.0 + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml-eslint-parser@2.0.0: + resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yjs@13.6.30: + resolution: {integrity: sha512-vv/9h42eCMC81ZHDFswuu/MKzkl/vyq1BhaNGfHyOonwlG4CJbQF4oiBBJPvfdeCt/PlVDWh7Nov9D34YY09uQ==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} + + youch@4.1.1: + resolution: {integrity: sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==} + + zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + + zod-to-json-schema@3.25.1: + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} + peerDependencies: + zod: ^3.25 || ^4 + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + + zone.js@0.16.1: + resolution: {integrity: sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adobe/css-tools@4.4.4': {} + + '@algolia/abtesting@1.14.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/client-abtesting@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/client-analytics@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/client-common@5.48.1': {} + + '@algolia/client-insights@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/client-personalization@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/client-query-suggestions@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/client-search@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/ingestion@1.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/monitoring@1.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/recommend@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr': 5.48.1 + '@algolia/requester-fetch': 5.48.1 + '@algolia/requester-node-http': 5.48.1 + + '@algolia/requester-browser-xhr@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + + '@algolia/requester-fetch@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + + '@algolia/requester-node-http@5.48.1': + dependencies: + '@algolia/client-common': 5.48.1 + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@andrewbranch/untar.js@1.0.3': {} + + '@angular-devkit/architect@0.2102.7(chokidar@5.0.0)': + dependencies: + '@angular-devkit/core': 21.2.7(chokidar@5.0.0) + rxjs: 7.8.2 + transitivePeerDependencies: + - chokidar + + '@angular-devkit/build-angular@21.2.7(21af41c996a65d5eb64c7730448a46b2)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2102.7(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.7)))(webpack@5.105.2(esbuild@0.27.3)) + '@angular-devkit/core': 21.2.7(chokidar@5.0.0) + '@angular/build': 21.2.7(a2fc291618ec06660ea29b511e9927be) + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/runtime': 7.28.6 + '@discoveryjs/json-ext': 0.6.3 + '@ngtools/webpack': 21.2.7(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)) + ansi-colors: 4.1.3 + autoprefixer: 10.4.27(postcss@8.5.6) + babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(esbuild@0.27.3)) + browserslist: 4.28.1 + copy-webpack-plugin: 14.0.0(webpack@5.105.2(esbuild@0.27.3)) + css-loader: 7.1.3(webpack@5.105.2(esbuild@0.27.3)) + esbuild-wasm: 0.27.3 + http-proxy-middleware: 3.0.5 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + karma-source-map-support: 1.4.0 + less: 4.4.2 + less-loader: 12.3.1(less@4.4.2)(webpack@5.105.2(esbuild@0.27.3)) + license-webpack-plugin: 4.0.2(webpack@5.105.2(esbuild@0.27.3)) + loader-utils: 3.3.1 + mini-css-extract-plugin: 2.10.0(webpack@5.105.2(esbuild@0.27.3)) + open: 11.0.0 + ora: 9.3.0 + picomatch: 4.0.4 + piscina: 5.1.4 + postcss: 8.5.6 + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)) + resolve-url-loader: 5.0.0 + rxjs: 7.8.2 + sass: 1.97.3 + sass-loader: 16.0.7(sass@1.97.3)(webpack@5.105.2(esbuild@0.27.3)) + semver: 7.7.4 + source-map-loader: 5.0.0(webpack@5.105.2(esbuild@0.27.3)) + source-map-support: 0.5.21 + terser: 5.46.0 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + tslib: 2.8.1 + typescript: 6.0.2 + webpack: 5.105.2(esbuild@0.27.3) + webpack-dev-middleware: 7.4.5(webpack@5.105.2(esbuild@0.27.7)) + webpack-dev-server: 5.2.3(webpack@5.105.2(esbuild@0.27.7)) + webpack-merge: 6.0.1 + webpack-subresource-integrity: 5.1.0(webpack@5.105.2(esbuild@0.27.3)) + optionalDependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.7(9c898ff27dabd87c2e39c7d23b6394cf) + esbuild: 0.27.3 + ng-packagr: 21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + tailwindcss: 4.2.2 + transitivePeerDependencies: + - '@angular/compiler' + - '@emnapi/core' + - '@emnapi/runtime' + - '@rspack/core' + - '@swc/core' + - '@types/node' + - bufferutil + - chokidar + - debug + - html-webpack-plugin + - jiti + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - tsx + - uglify-js + - utf-8-validate + - vitest + - webpack-cli + - yaml + + '@angular-devkit/build-angular@21.2.7(a6e994258d24a93916297482080e59ec)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2102.7(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.7)))(webpack@5.105.2(esbuild@0.27.3)) + '@angular-devkit/core': 21.2.7(chokidar@5.0.0) + '@angular/build': 21.2.7(36e260f753e0919653a012a2d2cd0875) + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/runtime': 7.28.6 + '@discoveryjs/json-ext': 0.6.3 + '@ngtools/webpack': 21.2.7(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)) + ansi-colors: 4.1.3 + autoprefixer: 10.4.27(postcss@8.5.6) + babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(esbuild@0.27.3)) + browserslist: 4.28.1 + copy-webpack-plugin: 14.0.0(webpack@5.105.2(esbuild@0.27.3)) + css-loader: 7.1.3(webpack@5.105.2(esbuild@0.27.3)) + esbuild-wasm: 0.27.3 + http-proxy-middleware: 3.0.5 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + karma-source-map-support: 1.4.0 + less: 4.4.2 + less-loader: 12.3.1(less@4.4.2)(webpack@5.105.2(esbuild@0.27.3)) + license-webpack-plugin: 4.0.2(webpack@5.105.2(esbuild@0.27.3)) + loader-utils: 3.3.1 + mini-css-extract-plugin: 2.10.0(webpack@5.105.2(esbuild@0.27.3)) + open: 11.0.0 + ora: 9.3.0 + picomatch: 4.0.4 + piscina: 5.1.4 + postcss: 8.5.6 + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)) + resolve-url-loader: 5.0.0 + rxjs: 7.8.2 + sass: 1.97.3 + sass-loader: 16.0.7(sass@1.97.3)(webpack@5.105.2(esbuild@0.27.3)) + semver: 7.7.4 + source-map-loader: 5.0.0(webpack@5.105.2(esbuild@0.27.3)) + source-map-support: 0.5.21 + terser: 5.46.0 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + tslib: 2.8.1 + typescript: 6.0.2 + webpack: 5.105.2(esbuild@0.27.3) + webpack-dev-middleware: 7.4.5(webpack@5.105.2(esbuild@0.27.7)) + webpack-dev-server: 5.2.3(webpack@5.105.2(esbuild@0.27.7)) + webpack-merge: 6.0.1 + webpack-subresource-integrity: 5.1.0(webpack@5.105.2(esbuild@0.27.3)) + optionalDependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.7(9c898ff27dabd87c2e39c7d23b6394cf) + esbuild: 0.27.3 + ng-packagr: 21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + tailwindcss: 4.2.2 + transitivePeerDependencies: + - '@angular/compiler' + - '@emnapi/core' + - '@emnapi/runtime' + - '@rspack/core' + - '@swc/core' + - '@types/node' + - bufferutil + - chokidar + - debug + - html-webpack-plugin + - jiti + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - tsx + - uglify-js + - utf-8-validate + - vitest + - webpack-cli + - yaml + + '@angular-devkit/build-webpack@0.2102.7(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.7)))(webpack@5.105.2(esbuild@0.27.3))': + dependencies: + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + rxjs: 7.8.2 + webpack: 5.105.2(esbuild@0.27.3) + webpack-dev-server: 5.2.3(webpack@5.105.2(esbuild@0.27.7)) + transitivePeerDependencies: + - chokidar + + '@angular-devkit/core@21.2.7(chokidar@5.0.0)': + dependencies: + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + jsonc-parser: 3.3.1 + picomatch: 4.0.4 + rxjs: 7.8.2 + source-map: 0.7.6 + optionalDependencies: + chokidar: 5.0.0 + + '@angular-devkit/schematics@21.2.7(chokidar@5.0.0)': + dependencies: + '@angular-devkit/core': 21.2.7(chokidar@5.0.0) + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + ora: 9.3.0 + rxjs: 7.8.2 + transitivePeerDependencies: + - chokidar + + '@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))': + dependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + tslib: 2.8.1 + + '@angular/build@21.2.7(36e260f753e0919653a012a2d2cd0875)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + '@angular/compiler': 21.2.8 + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + beasties: 0.4.1 + browserslist: 4.28.1 + esbuild: 0.27.3 + https-proxy-agent: 7.0.6 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + listr2: 9.0.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + parse5-html-rewriting-stream: 8.0.0 + picomatch: 4.0.4 + piscina: 5.1.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + sass: 1.97.3 + semver: 7.7.4 + source-map-support: 0.5.21 + tinyglobby: 0.2.15 + tslib: 2.8.1 + typescript: 6.0.2 + undici: 7.24.4 + vite: 7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + watchpack: 2.5.1 + optionalDependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.7(9c898ff27dabd87c2e39c7d23b6394cf) + less: 4.4.2 + lmdb: 3.5.1 + ng-packagr: 21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + postcss: 8.5.6 + tailwindcss: 4.2.2 + vitest: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + - '@types/node' + - chokidar + - jiti + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@angular/build@21.2.7(a2fc291618ec06660ea29b511e9927be)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + '@angular/compiler': 21.2.8 + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + beasties: 0.4.1 + browserslist: 4.28.1 + esbuild: 0.27.3 + https-proxy-agent: 7.0.6 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + listr2: 9.0.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + parse5-html-rewriting-stream: 8.0.0 + picomatch: 4.0.4 + piscina: 5.1.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + sass: 1.97.3 + semver: 7.7.4 + source-map-support: 0.5.21 + tinyglobby: 0.2.15 + tslib: 2.8.1 + typescript: 6.0.2 + undici: 7.24.4 + vite: 7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + watchpack: 2.5.1 + optionalDependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.7(9c898ff27dabd87c2e39c7d23b6394cf) + less: 4.4.2 + lmdb: 3.5.1 + ng-packagr: 21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + postcss: 8.5.6 + tailwindcss: 4.2.2 + vitest: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + - '@types/node' + - chokidar + - jiti + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@angular/build@21.2.7(ea0906435215446007e06217866bce7d)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + '@angular/compiler': 21.2.8 + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + beasties: 0.4.1 + browserslist: 4.28.1 + esbuild: 0.27.3 + https-proxy-agent: 7.0.6 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + listr2: 9.0.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + parse5-html-rewriting-stream: 8.0.0 + picomatch: 4.0.4 + piscina: 5.1.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + sass: 1.97.3 + semver: 7.7.4 + source-map-support: 0.5.21 + tinyglobby: 0.2.15 + tslib: 2.8.1 + typescript: 6.0.2 + undici: 7.24.4 + vite: 7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + watchpack: 2.5.1 + optionalDependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.7(9c898ff27dabd87c2e39c7d23b6394cf) + less: 4.4.2 + lmdb: 3.5.1 + ng-packagr: 21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + postcss: 8.5.9 + tailwindcss: 4.2.2 + vitest: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + - '@types/node' + - chokidar + - jiti + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@angular/cli@21.2.7(@types/node@25.5.2)(chokidar@5.0.0)': + dependencies: + '@angular-devkit/architect': 0.2102.7(chokidar@5.0.0) + '@angular-devkit/core': 21.2.7(chokidar@5.0.0) + '@angular-devkit/schematics': 21.2.7(chokidar@5.0.0) + '@inquirer/prompts': 7.10.1(@types/node@25.5.2) + '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.2))(@types/node@25.5.2)(listr2@9.0.5) + '@modelcontextprotocol/sdk': 1.26.0(zod@4.3.6) + '@schematics/angular': 21.2.7(chokidar@5.0.0) + '@yarnpkg/lockfile': 1.1.0 + algoliasearch: 5.48.1 + ini: 6.0.0 + jsonc-parser: 3.3.1 + listr2: 9.0.5 + npm-package-arg: 13.0.2 + pacote: 21.3.1 + parse5-html-rewriting-stream: 8.0.0 + semver: 7.7.4 + yargs: 18.0.0 + zod: 4.3.6 + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@types/node' + - chokidar + - supports-color + + '@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)': + dependencies: + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + rxjs: 7.8.2 + tslib: 2.8.1 + + '@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2)': + dependencies: + '@angular/compiler': 21.2.8 + '@babel/core': 7.29.0 + '@jridgewell/sourcemap-codec': 1.5.5 + chokidar: 5.0.0 + convert-source-map: 1.9.0 + reflect-metadata: 0.2.2 + semver: 7.7.4 + tslib: 2.8.1 + yargs: 18.0.0 + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - supports-color + + '@angular/compiler@21.2.8': + dependencies: + tslib: 2.8.1 + + '@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)': + dependencies: + rxjs: 7.8.2 + tslib: 2.8.1 + optionalDependencies: + '@angular/compiler': 21.2.8 + zone.js: 0.16.1 + + '@angular/forms@21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + dependencies: + '@angular/common': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + '@standard-schema/spec': 1.1.0 + rxjs: 7.8.2 + tslib: 2.8.1 + + '@angular/platform-browser-dynamic@21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))': + dependencies: + '@angular/common': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/compiler': 21.2.8 + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + tslib: 2.8.1 + + '@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))': + dependencies: + '@angular/common': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + tslib: 2.8.1 + optionalDependencies: + '@angular/animations': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + + '@angular/platform-server@21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + dependencies: + '@angular/common': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/compiler': 21.2.8 + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + rxjs: 7.8.2 + tslib: 2.8.1 + xhr2: 0.2.1 + + '@angular/router@21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + dependencies: + '@angular/common': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)) + rxjs: 7.8.2 + tslib: 2.8.1 + + '@angular/ssr@21.2.7(9c898ff27dabd87c2e39c7d23b6394cf)': + dependencies: + '@angular/common': 21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/router': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + tslib: 2.8.1 + optionalDependencies: + '@angular/platform-server': 21.2.8(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.8)(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.8(@angular/animations@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.8(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.8(@angular/compiler@21.2.8)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + + '@antfu/eslint-config@8.1.1(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.1(typescript@6.0.2))(@typescript-eslint/utils@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@vue/compiler-sfc@3.5.32)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8))': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@clack/prompts': 1.2.0 + '@e18e/eslint-plugin': 0.3.0(eslint@10.2.0(jiti@2.6.1)) + '@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@10.2.0(jiti@2.6.1)) + '@eslint/markdown': 8.0.1 + '@stylistic/eslint-plugin': 5.10.0(eslint@10.2.0(jiti@2.6.1)) + '@typescript-eslint/eslint-plugin': 8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@vitest/eslint-plugin': 1.6.14(@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8)) + ansis: 4.2.0 + cac: 7.0.0 + eslint: 10.2.0(jiti@2.6.1) + eslint-config-flat-gitignore: 2.3.0(eslint@10.2.0(jiti@2.6.1)) + eslint-flat-config-utils: 3.1.0 + eslint-merge-processors: 2.0.0(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-antfu: 3.2.2(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-command: 3.5.2(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.1(typescript@6.0.2))(@typescript-eslint/utils@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-import-lite: 0.6.0(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-jsdoc: 62.9.0(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-jsonc: 3.1.2(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-n: 17.24.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 5.8.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint-plugin-pnpm: 1.6.0(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-regexp: 3.1.0(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-toml: 1.3.1(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-unicorn: 64.0.0(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1)))(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.2.0(jiti@2.6.1))) + eslint-plugin-yml: 3.3.1(eslint@10.2.0(jiti@2.6.1)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.32)(eslint@10.2.0(jiti@2.6.1)) + globals: 17.4.0 + local-pkg: 1.1.2 + parse-gitignore: 2.0.0 + toml-eslint-parser: 1.0.3 + vue-eslint-parser: 10.4.0(eslint@10.2.0(jiti@2.6.1)) + yaml-eslint-parser: 2.0.0 + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/rule-tester' + - '@typescript-eslint/typescript-estree' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - oxlint + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.1.1 + + '@arethetypeswrong/cli@0.18.2': + dependencies: + '@arethetypeswrong/core': 0.18.2 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 7.3.0(marked@9.1.6) + semver: 7.7.4 + + '@arethetypeswrong/core@0.18.2': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + '@loaderkit/resolve': 1.0.4 + cjs-module-lexer: 1.4.3 + fflate: 0.8.2 + lru-cache: 11.3.2 + semver: 7.7.4 + typescript: 5.6.1-rc + validate-npm-package-name: 5.0.1 + + '@asamuzakjp/css-color@5.1.6': + dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@7.0.7': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 - watchpack@2.5.1: - resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} - engines: {node: '>=10.13.0'} + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + '@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 - weak-lru-cache@1.2.2: - resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 - webidl-conversions@8.0.1: - resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} - engines: {node: '>=20'} + '@babel/helper-define-polyfill-provider@0.6.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color - webpack-dev-middleware@7.4.5: - resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true + '@babel/helper-globals@7.28.0': {} - webpack-dev-server@5.2.3: - resolution: {integrity: sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==} - engines: {node: '>= 18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color - webpack-merge@6.0.1: - resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} - engines: {node: '>=18.0.0'} + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.29.0 - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} - engines: {node: '>=10.13.0'} + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color - webpack-subresource-integrity@5.1.0: - resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} - engines: {node: '>= 12'} - peerDependencies: - html-webpack-plugin: '>= 5.0.0-beta.1 < 6' - webpack: ^5.12.0 - peerDependenciesMeta: - html-webpack-plugin: - optional: true + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 - webpack@5.105.2: - resolution: {integrity: sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + '@babel/helper-plugin-utils@7.28.6': {} - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} + '@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 - whatwg-mimetype@5.0.0: - resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} - engines: {node: '>=20'} + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color - whatwg-url@16.0.1: - resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.29.0 - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + '@babel/helper-string-parser@7.27.1': {} - which@6.0.0: - resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true + '@babel/helper-validator-identifier@7.28.5': {} - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true + '@babel/helper-validator-option@7.27.1': {} - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + '@babel/helper-wrap-function@7.28.3': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - wrap-ansi@9.0.2: - resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} - engines: {node: '>=18'} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - 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 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color - wsl-utils@0.1.0: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} - engines: {node: '>=18'} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 - wsl-utils@0.3.1: - resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} - engines: {node: '>=20'} + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - xhr2@0.2.1: - resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} - engines: {node: '>= 6'} + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - yaml-eslint-parser@2.0.0: - resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} - engines: {node: '>= 14.6'} - hasBin: true + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color - yargs-parser@22.0.0: - resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 - yargs@18.0.0: - resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 - yoctocolors-cjs@2.1.3: - resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} - engines: {node: '>=18'} + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - yoctocolors@2.1.2: - resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} - engines: {node: '>=18'} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 - zimmerframe@1.1.4: - resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - zod-to-json-schema@3.25.1: - resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} - peerDependencies: - zod: ^3.25 || ^4 + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - zone.js@0.16.1: - resolution: {integrity: sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==} + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color -snapshots: + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - '@adobe/css-tools@4.4.4': {} + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/abtesting@1.14.1': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/client-abtesting@5.48.1': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/client-analytics@5.48.1': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/client-common@5.48.1': {} + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color - '@algolia/client-insights@5.48.1': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - '@algolia/client-personalization@5.48.1': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color - '@algolia/client-query-suggestions@5.48.1': + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/client-search@5.48.1': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/ingestion@1.48.1': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/monitoring@1.48.1': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/recommend@5.48.1': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color - '@algolia/requester-browser-xhr@5.48.1': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color - '@algolia/requester-fetch@5.48.1': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@algolia/requester-node-http@5.48.1': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': dependencies: - '@algolia/client-common': 5.48.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color - '@ampproject/remapping@2.3.0': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@andrewbranch/untar.js@1.0.3': {} + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@angular-devkit/architect@0.2102.6(chokidar@5.0.0)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': dependencies: - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - rxjs: 7.8.2 + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - - chokidar + - supports-color - '@angular-devkit/build-angular@21.2.6(b8b8be2aec57acfbe96adaf392bb1a3d)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2102.6(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.3)))(webpack@5.105.2(esbuild@0.27.3)) - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - '@angular/build': 21.2.6(721b98d25cca6d330717effa0845d083) - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3) '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) - '@babel/runtime': 7.28.6 - '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 21.2.6(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.105.2(esbuild@0.27.3)) - ansi-colors: 4.1.3 - autoprefixer: 10.4.27(postcss@8.5.6) - babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(esbuild@0.27.3)) - browserslist: 4.28.1 - copy-webpack-plugin: 14.0.0(webpack@5.105.2(esbuild@0.27.3)) - css-loader: 7.1.3(webpack@5.105.2(esbuild@0.27.3)) - esbuild-wasm: 0.27.3 - http-proxy-middleware: 3.0.5 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - karma-source-map-support: 1.4.0 - less: 4.4.2 - less-loader: 12.3.1(less@4.4.2)(webpack@5.105.2(esbuild@0.27.3)) - license-webpack-plugin: 4.0.2(webpack@5.105.2(esbuild@0.27.3)) - loader-utils: 3.3.1 - mini-css-extract-plugin: 2.10.0(webpack@5.105.2(esbuild@0.27.3)) - open: 11.0.0 - ora: 9.3.0 - picomatch: 4.0.4 - piscina: 5.1.4 - postcss: 8.5.6 - postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.105.2(esbuild@0.27.3)) - resolve-url-loader: 5.0.0 - rxjs: 7.8.2 - sass: 1.97.3 - sass-loader: 16.0.7(sass@1.97.3)(webpack@5.105.2(esbuild@0.27.3)) - semver: 7.7.4 - source-map-loader: 5.0.0(webpack@5.105.2(esbuild@0.27.3)) - source-map-support: 0.5.21 - terser: 5.46.0 - tinyglobby: 0.2.15 - tree-kill: 1.2.2 - tslib: 2.8.1 - typescript: 5.9.3 - webpack: 5.105.2(esbuild@0.27.3) - webpack-dev-middleware: 7.4.5(webpack@5.105.2(esbuild@0.27.3)) - webpack-dev-server: 5.2.3(webpack@5.105.2(esbuild@0.27.3)) - webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.105.2(esbuild@0.27.3)) - optionalDependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/platform-server': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/ssr': 21.2.6(bb34f5a4800f2729c0a819df96d6aed2) - esbuild: 0.27.3 - ng-packagr: 21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - - '@angular/compiler' - - '@rspack/core' - - '@swc/core' - - '@types/node' - - bufferutil - - chokidar - - debug - - html-webpack-plugin - - jiti - - lightningcss - - node-sass - - sass-embedded - - stylus - - sugarss - supports-color - - tsx - - uglify-js - - utf-8-validate - - vitest - - webpack-cli - - yaml - '@angular-devkit/build-angular@21.2.6(f1523c80898605e922439b0e8b2efd2d)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2102.6(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.3)))(webpack@5.105.2(esbuild@0.27.3)) - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - '@angular/build': 21.2.6(a6697453d2eadc5b9ef236602c76bbfc) - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2) '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) - '@babel/runtime': 7.28.6 - '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 21.2.6(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)) - ansi-colors: 4.1.3 - autoprefixer: 10.4.27(postcss@8.5.6) - babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(esbuild@0.27.3)) - browserslist: 4.28.1 - copy-webpack-plugin: 14.0.0(webpack@5.105.2(esbuild@0.27.3)) - css-loader: 7.1.3(webpack@5.105.2(esbuild@0.27.3)) - esbuild-wasm: 0.27.3 - http-proxy-middleware: 3.0.5 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - karma-source-map-support: 1.4.0 - less: 4.4.2 - less-loader: 12.3.1(less@4.4.2)(webpack@5.105.2(esbuild@0.27.3)) - license-webpack-plugin: 4.0.2(webpack@5.105.2(esbuild@0.27.3)) - loader-utils: 3.3.1 - mini-css-extract-plugin: 2.10.0(webpack@5.105.2(esbuild@0.27.3)) - open: 11.0.0 - ora: 9.3.0 - picomatch: 4.0.4 - piscina: 5.1.4 - postcss: 8.5.6 - postcss-loader: 8.2.0(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)) - resolve-url-loader: 5.0.0 - rxjs: 7.8.2 - sass: 1.97.3 - sass-loader: 16.0.7(sass@1.97.3)(webpack@5.105.2(esbuild@0.27.3)) - semver: 7.7.4 - source-map-loader: 5.0.0(webpack@5.105.2(esbuild@0.27.3)) - source-map-support: 0.5.21 - terser: 5.46.0 - tinyglobby: 0.2.15 - tree-kill: 1.2.2 - tslib: 2.8.1 - typescript: 6.0.2 - webpack: 5.105.2(esbuild@0.27.3) - webpack-dev-middleware: 7.4.5(webpack@5.105.2(esbuild@0.27.3)) - webpack-dev-server: 5.2.3(webpack@5.105.2(esbuild@0.27.3)) - webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.105.2(esbuild@0.27.3)) - optionalDependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/platform-server': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/ssr': 21.2.6(bb34f5a4800f2729c0a819df96d6aed2) - esbuild: 0.27.3 - ng-packagr: 21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2))(tslib@2.8.1)(typescript@6.0.2) - transitivePeerDependencies: - - '@angular/compiler' - - '@rspack/core' - - '@swc/core' - - '@types/node' - - bufferutil - - chokidar - - debug - - html-webpack-plugin - - jiti - - lightningcss - - node-sass - - sass-embedded - - stylus - - sugarss + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + babel-plugin-polyfill-corejs2: 0.4.16(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: - supports-color - - tsx - - uglify-js - - utf-8-validate - - vitest - - webpack-cli - - yaml - '@angular-devkit/build-webpack@0.2102.6(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.3)))(webpack@5.105.2(esbuild@0.27.3))': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': dependencies: - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - rxjs: 7.8.2 - webpack: 5.105.2(esbuild@0.27.3) - webpack-dev-server: 5.2.3(webpack@5.105.2(esbuild@0.27.3)) + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - - chokidar + - supports-color - '@angular-devkit/core@21.2.6(chokidar@5.0.0)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': dependencies: - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - jsonc-parser: 3.3.1 - picomatch: 4.0.4 - rxjs: 7.8.2 - source-map: 0.7.6 - optionalDependencies: - chokidar: 5.0.0 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@angular-devkit/schematics@21.2.6(chokidar@5.0.0)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - jsonc-parser: 3.3.1 - magic-string: 0.30.21 - ora: 9.3.0 - rxjs: 7.8.2 - transitivePeerDependencies: - - chokidar + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': dependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - tslib: 2.8.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@angular/build@21.2.6(0a37a63e1e9066626d3a2166d9688072)': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular/compiler': 21.2.7 - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3) '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.21(@types/node@25.5.2) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - beasties: 0.4.1 - browserslist: 4.28.1 - esbuild: 0.27.3 - https-proxy-agent: 7.0.6 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - listr2: 9.0.5 - magic-string: 0.30.21 - mrmime: 2.0.1 - parse5-html-rewriting-stream: 8.0.0 - picomatch: 4.0.4 - piscina: 5.1.4 - rolldown: 1.0.0-rc.4 - sass: 1.97.3 - semver: 7.7.4 - source-map-support: 0.5.21 - tinyglobby: 0.2.15 - tslib: 2.8.1 - typescript: 5.9.3 - undici: 7.24.4 - vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - watchpack: 2.5.1 - optionalDependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/platform-server': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/ssr': 21.2.6(bb34f5a4800f2729c0a819df96d6aed2) - less: 4.4.2 - lmdb: 3.5.1 - ng-packagr: 21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) - postcss: 8.5.8 - vitest: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + '@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: - - '@types/node' - - chokidar - - jiti - - lightningcss - - sass-embedded - - stylus - - sugarss - supports-color - - terser - - tsx - - yaml - '@angular/build@21.2.6(721b98d25cca6d330717effa0845d083)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular/compiler': 21.2.7 - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3) '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.21(@types/node@25.5.2) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - beasties: 0.4.1 - browserslist: 4.28.1 - esbuild: 0.27.3 - https-proxy-agent: 7.0.6 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - listr2: 9.0.5 - magic-string: 0.30.21 - mrmime: 2.0.1 - parse5-html-rewriting-stream: 8.0.0 - picomatch: 4.0.4 - piscina: 5.1.4 - rolldown: 1.0.0-rc.4 - sass: 1.97.3 - semver: 7.7.4 - source-map-support: 0.5.21 - tinyglobby: 0.2.15 - tslib: 2.8.1 - typescript: 5.9.3 - undici: 7.24.4 - vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - watchpack: 2.5.1 - optionalDependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/platform-server': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/ssr': 21.2.6(bb34f5a4800f2729c0a819df96d6aed2) - less: 4.4.2 - lmdb: 3.5.1 - ng-packagr: 21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) - postcss: 8.5.6 - vitest: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - transitivePeerDependencies: - - '@types/node' - - chokidar - - jiti - - lightningcss - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + '@babel/helper-plugin-utils': 7.28.6 - '@angular/build@21.2.6(a6697453d2eadc5b9ef236602c76bbfc)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular/compiler': 21.2.7 - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2) '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.21(@types/node@25.5.2) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - beasties: 0.4.1 - browserslist: 4.28.1 - esbuild: 0.27.3 - https-proxy-agent: 7.0.6 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - listr2: 9.0.5 - magic-string: 0.30.21 - mrmime: 2.0.1 - parse5-html-rewriting-stream: 8.0.0 - picomatch: 4.0.4 - piscina: 5.1.4 - rolldown: 1.0.0-rc.4 - sass: 1.97.3 - semver: 7.7.4 - source-map-support: 0.5.21 - tinyglobby: 0.2.15 - tslib: 2.8.1 - typescript: 6.0.2 - undici: 7.24.4 - vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - watchpack: 2.5.1 - optionalDependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/platform-server': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/ssr': 21.2.6(bb34f5a4800f2729c0a819df96d6aed2) - less: 4.4.2 - lmdb: 3.5.1 - ng-packagr: 21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2))(tslib@2.8.1)(typescript@6.0.2) - postcss: 8.5.6 - vitest: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - transitivePeerDependencies: - - '@types/node' - - chokidar - - jiti - - lightningcss - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 - '@angular/cli@21.2.6(@types/node@25.5.2)(chokidar@5.0.0)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': dependencies: - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.6(chokidar@5.0.0) - '@inquirer/prompts': 7.10.1(@types/node@25.5.2) - '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.2))(@types/node@25.5.2)(listr2@9.0.5) - '@modelcontextprotocol/sdk': 1.26.0(zod@4.3.6) - '@schematics/angular': 21.2.6(chokidar@5.0.0) - '@yarnpkg/lockfile': 1.1.0 - algoliasearch: 5.48.1 - ini: 6.0.0 - jsonc-parser: 3.3.1 - listr2: 9.0.5 - npm-package-arg: 13.0.2 - pacote: 21.3.1 - parse5-html-rewriting-stream: 8.0.0 - semver: 7.7.4 - yargs: 18.0.0 - zod: 4.3.6 + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-env@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.16(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) + core-js-compat: 3.49.0 + semver: 6.3.1 transitivePeerDependencies: - - '@cfworker/json-schema' - - '@types/node' - - chokidar - supports-color - '@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': dependencies: - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - rxjs: 7.8.2 - tslib: 2.8.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.29.0 + esutils: 2.0.3 - '@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3)': + '@babel/runtime@7.28.6': {} + + '@babel/template@7.28.6': dependencies: - '@angular/compiler': 21.2.7 - '@babel/core': 7.29.0 - '@jridgewell/sourcemap-codec': 1.5.5 - chokidar: 5.0.0 - convert-source-map: 1.9.0 - reflect-metadata: 0.2.2 - semver: 7.7.4 - tslib: 2.8.1 - yargs: 18.0.0 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 - '@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2)': + '@babel/traverse@7.29.0': dependencies: - '@angular/compiler': 21.2.7 - '@babel/core': 7.29.0 - '@jridgewell/sourcemap-codec': 1.5.5 - chokidar: 5.0.0 - convert-source-map: 1.9.0 - reflect-metadata: 0.2.2 - semver: 7.7.4 - tslib: 2.8.1 - yargs: 18.0.0 - optionalDependencies: - typescript: 6.0.2 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color - '@angular/compiler@21.2.7': + '@babel/types@7.29.0': dependencies: - tslib: 2.8.1 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)': - dependencies: - rxjs: 7.8.2 - tslib: 2.8.1 + '@bomb.sh/tab@0.0.14(cac@6.7.14)(citty@0.2.2)': optionalDependencies: - '@angular/compiler': 21.2.7 - zone.js: 0.16.1 + cac: 6.7.14 + citty: 0.2.2 + + '@braidai/lang@1.1.2': {} - '@angular/forms@21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + '@bramus/specificity@2.4.2': dependencies: - '@angular/common': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - '@standard-schema/spec': 1.1.0 - rxjs: 7.8.2 - tslib: 2.8.1 + css-tree: 3.2.1 - '@angular/platform-browser-dynamic@21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))': + '@capsizecss/unpack@4.0.0': dependencies: - '@angular/common': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/compiler': 21.2.7 - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - tslib: 2.8.1 + fontkitten: 1.0.3 - '@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))': + '@clack/core@1.2.0': dependencies: - '@angular/common': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - tslib: 2.8.1 - optionalDependencies: - '@angular/animations': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) + fast-wrap-ansi: 0.1.6 + sisteransi: 1.0.5 - '@angular/platform-server@21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + '@clack/prompts@1.2.0': dependencies: - '@angular/common': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/compiler': 21.2.7 - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - rxjs: 7.8.2 - tslib: 2.8.1 - xhr2: 0.2.1 + '@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.2': {} + + '@colordx/core@5.0.3': {} + + '@colors/colors@1.5.0': + optional: true + + '@csstools/color-helpers@6.0.2': {} - '@angular/router@21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@angular/common': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)) - rxjs: 7.8.2 - tslib: 2.8.1 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@angular/ssr@21.2.6(bb34f5a4800f2729c0a819df96d6aed2)': + '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@angular/common': 21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/router': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - tslib: 2.8.1 + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': optionalDependencies: - '@angular/platform-server': 21.2.7(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.7)(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.7(@angular/animations@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.7(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.7(@angular/compiler@21.2.7)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@discoveryjs/json-ext@0.6.3': {} - '@antfu/eslint-config@8.0.0(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2))(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@vue/compiler-sfc@3.5.32)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)))': + '@dxup/nuxt@0.4.0(magicast@0.5.2)(typescript@6.0.2)': dependencies: - '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.2.0 - '@e18e/eslint-plugin': 0.3.0(eslint@10.2.0(jiti@2.6.1)) - '@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@10.2.0(jiti@2.6.1)) - '@eslint/markdown': 8.0.1 - '@stylistic/eslint-plugin': 5.10.0(eslint@10.2.0(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - '@vitest/eslint-plugin': 1.6.14(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))) - ansis: 4.2.0 - cac: 7.0.0 - eslint: 10.2.0(jiti@2.6.1) - eslint-config-flat-gitignore: 2.3.0(eslint@10.2.0(jiti@2.6.1)) - eslint-flat-config-utils: 3.1.0 - eslint-merge-processors: 2.0.0(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-antfu: 3.2.2(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-command: 3.5.2(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2))(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-import-lite: 0.6.0(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-jsdoc: 62.9.0(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-jsonc: 3.1.2(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-n: 17.24.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 5.8.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - eslint-plugin-pnpm: 1.6.0(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-regexp: 3.1.0(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-toml: 1.3.1(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-unicorn: 64.0.0(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1)))(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.2.0(jiti@2.6.1))) - eslint-plugin-yml: 3.3.1(eslint@10.2.0(jiti@2.6.1)) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.32)(eslint@10.2.0(jiti@2.6.1)) - globals: 17.4.0 - local-pkg: 1.1.2 - parse-gitignore: 2.0.0 - toml-eslint-parser: 1.0.3 - vue-eslint-parser: 10.4.0(eslint@10.2.0(jiti@2.6.1)) - yaml-eslint-parser: 2.0.0 + '@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.16 + typescript: 6.0.2 transitivePeerDependencies: - - '@eslint/json' - - '@typescript-eslint/rule-tester' - - '@typescript-eslint/typescript-estree' - - '@typescript-eslint/utils' - - '@vue/compiler-sfc' - - oxlint - - supports-color - - typescript - - vitest + - magicast - '@antfu/install-pkg@1.1.0': - dependencies: - package-manager-detector: 1.6.0 - tinyexec: 1.0.4 + '@dxup/unimport@0.1.2': {} - '@arethetypeswrong/cli@0.18.2': + '@e18e/eslint-plugin@0.3.0(eslint@10.2.0(jiti@2.6.1))': dependencies: - '@arethetypeswrong/core': 0.18.2 - chalk: 4.1.2 - cli-table3: 0.6.5 - commander: 10.0.1 - marked: 9.1.6 - marked-terminal: 7.3.0(marked@9.1.6) - semver: 7.7.3 + eslint-plugin-depend: 1.5.0(eslint@10.2.0(jiti@2.6.1)) + optionalDependencies: + eslint: 10.2.0(jiti@2.6.1) - '@arethetypeswrong/core@0.18.2': + '@emnapi/core@1.9.1': dependencies: - '@andrewbranch/untar.js': 1.0.3 - '@loaderkit/resolve': 1.0.4 - cjs-module-lexer: 1.4.3 - fflate: 0.8.2 - lru-cache: 11.2.4 - semver: 7.7.3 - typescript: 5.6.1-rc - validate-npm-package-name: 5.0.1 + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true - '@asamuzakjp/css-color@5.1.6': + '@emnapi/core@1.9.2': dependencies: - '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true - '@asamuzakjp/dom-selector@7.0.7': + '@emnapi/runtime@1.9.1': dependencies: - '@asamuzakjp/nwsapi': 2.3.9 - bidi-js: 1.0.3 - css-tree: 3.2.1 - is-potential-custom-element-name: 1.0.1 + tslib: 2.8.1 + optional: true - '@asamuzakjp/nwsapi@2.3.9': {} + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 + optional: true - '@babel/code-frame@7.27.1': + '@emnapi/wasi-threads@1.2.0': dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 + tslib: 2.8.1 + optional: true - '@babel/code-frame@7.29.0': + '@emnapi/wasi-threads@1.2.1': dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 + tslib: 2.8.1 + optional: true - '@babel/compat-data@7.29.0': {} + '@epic-web/invariant@1.0.0': {} - '@babel/core@7.29.0': + '@es-joy/jsdoccomment@0.84.0': dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.58.1 + comment-parser: 1.4.5 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 7.1.1 + + '@es-joy/jsdoccomment@0.86.0': + dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.58.1 + comment-parser: 1.4.6 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 7.2.0 + + '@es-joy/resolve.exports@1.2.0': {} + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true - '@babel/generator@7.28.5': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 + '@esbuild/android-arm64@0.27.7': + optional: true - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 + '@esbuild/android-arm@0.25.12': + optional: true - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.28.5 + '@esbuild/android-arm@0.27.3': + optional: true - '@babel/helper-compilation-targets@7.28.6': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 - lru-cache: 5.1.1 - semver: 6.3.1 + '@esbuild/android-arm@0.27.7': + optional: true - '@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 + '@esbuild/android-x64@0.25.12': + optional: true - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 + '@esbuild/android-x64@0.27.3': + optional: true - '@babel/helper-define-polyfill-provider@0.6.7(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.11 - transitivePeerDependencies: - - supports-color + '@esbuild/android-x64@0.27.7': + optional: true - '@babel/helper-globals@7.28.0': {} + '@esbuild/darwin-arm64@0.25.12': + optional: true - '@babel/helper-member-expression-to-functions@7.28.5': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/darwin-arm64@0.27.3': + optional: true - '@babel/helper-module-imports@7.18.6': - dependencies: - '@babel/types': 7.29.0 + '@esbuild/darwin-arm64@0.27.7': + optional: true - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - transitivePeerDependencies: - - supports-color + '@esbuild/darwin-x64@0.25.12': + optional: true - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/darwin-x64@0.27.3': + optional: true - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/darwin-x64@0.27.7': + optional: true - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.29.0 + '@esbuild/freebsd-arm64@0.25.12': + optional: true - '@babel/helper-plugin-utils@7.27.1': {} + '@esbuild/freebsd-arm64@0.27.3': + optional: true - '@babel/helper-plugin-utils@7.28.6': {} + '@esbuild/freebsd-arm64@0.27.7': + optional: true - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/freebsd-x64@0.25.12': + optional: true - '@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 + '@esbuild/freebsd-x64@0.27.3': + optional: true - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/freebsd-x64@0.27.7': + optional: true - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.29.0 + '@esbuild/linux-arm64@0.25.12': + optional: true - '@babel/helper-string-parser@7.27.1': {} + '@esbuild/linux-arm64@0.27.3': + optional: true - '@babel/helper-validator-identifier@7.28.5': {} + '@esbuild/linux-arm64@0.27.7': + optional: true - '@babel/helper-validator-option@7.27.1': {} + '@esbuild/linux-arm@0.25.12': + optional: true - '@babel/helper-wrap-function@7.28.3': - dependencies: - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/linux-arm@0.27.3': + optional: true - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 + '@esbuild/linux-arm@0.27.7': + optional: true - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.29.0 + '@esbuild/linux-ia32@0.25.12': + optional: true - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 + '@esbuild/linux-ia32@0.27.3': + optional: true - '@babel/parser@7.29.2': - dependencies: - '@babel/types': 7.29.0 + '@esbuild/linux-ia32@0.27.7': + optional: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/linux-loong64@0.25.12': + optional: true - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-loong64@0.27.3': + optional: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-loong64@0.27.7': + optional: true - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color + '@esbuild/linux-mips64el@0.25.12': + optional: true - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/linux-mips64el@0.27.3': + optional: true - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 + '@esbuild/linux-mips64el@0.27.7': + optional: true - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-ppc64@0.25.12': + optional: true - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-ppc64@0.27.3': + optional: true - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-ppc64@0.27.7': + optional: true - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-riscv64@0.25.12': + optional: true - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-riscv64@0.27.3': + optional: true - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/linux-x64@0.25.12': + optional: true - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color + '@esbuild/linux-x64@0.27.3': + optional: true - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/linux-x64@0.27.7': + optional: true - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/netbsd-arm64@0.25.12': + optional: true - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color + '@esbuild/netbsd-arm64@0.27.3': + optional: true - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color + '@esbuild/netbsd-arm64@0.27.7': + optional: true - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/netbsd-x64@0.25.12': + optional: true - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/template': 7.28.6 + '@esbuild/netbsd-x64@0.27.3': + optional: true - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/netbsd-x64@0.27.7': + optional: true - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/openbsd-arm64@0.25.12': + optional: true - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/openbsd-arm64@0.27.3': + optional: true - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/openbsd-arm64@0.27.7': + optional: true - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/openbsd-x64@0.25.12': + optional: true - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color + '@esbuild/openbsd-x64@0.27.3': + optional: true - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/openbsd-x64@0.27.7': + optional: true - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/openharmony-arm64@0.25.12': + optional: true - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color + '@esbuild/openharmony-arm64@0.27.3': + optional: true - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/openharmony-arm64@0.27.7': + optional: true - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/sunos-x64@0.25.12': + optional: true - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/sunos-x64@0.27.3': + optional: true - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/sunos-x64@0.27.7': + optional: true - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/win32-arm64@0.25.12': + optional: true - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color + '@esbuild/win32-arm64@0.27.3': + optional: true - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color + '@esbuild/win32-arm64@0.27.7': + optional: true - '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@esbuild/win32-ia32@0.25.12': + optional: true - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color + '@esbuild/win32-ia32@0.27.3': + optional: true - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/win32-ia32@0.27.7': + optional: true - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/win32-x64@0.25.12': + optional: true - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/win32-x64@0.27.3': + optional: true - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@esbuild/win32-x64@0.27.7': + optional: true - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + '@eslint-community/eslint-plugin-eslint-comments@4.7.1(eslint@10.2.0(jiti@2.6.1))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + escape-string-regexp: 4.0.0 + eslint: 10.2.0(jiti@2.6.1) + ignore: 7.0.5 - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0(jiti@2.6.1))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color + eslint: 10.2.0(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/compat@2.0.3(eslint@10.2.0(jiti@2.6.1))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@eslint/core': 1.2.0 + optionalDependencies: + eslint: 10.2.0(jiti@2.6.1) - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + '@eslint/config-array@0.23.4': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@eslint/object-schema': 3.0.4 + debug: 4.4.3 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + '@eslint/config-helpers@0.5.4': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@eslint/core': 1.2.0 - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + '@eslint/core@1.2.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color + '@types/json-schema': 7.0.15 - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + '@eslint/markdown@8.0.1': 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 + '@eslint/core': 1.2.0 + '@eslint/plugin-kit': 0.6.1 + github-slugger: 2.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-frontmatter: 2.0.1 + mdast-util-gfm: 3.1.0 + mdast-util-math: 3.0.0 + micromark-extension-frontmatter: 2.0.0 + micromark-extension-gfm: 3.0.0 + micromark-extension-math: 3.1.0 + micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@eslint/object-schema@3.0.4': {} - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + '@eslint/plugin-kit@0.6.1': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@eslint/core': 1.2.0 + levn: 0.4.1 - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + '@eslint/plugin-kit@0.7.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@eslint/core': 1.2.0 + levn: 0.4.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + '@exodus/bytes@1.15.0': {} + + '@fast-check/vitest@0.4.0(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + fast-check: 4.4.0 + vitest: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8) - '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)': + '@floating-ui/core@1.7.5': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.16(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@floating-ui/utils': 0.2.11 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + '@floating-ui/dom@1.7.6': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + '@floating-ui/utils@0.2.11': {} + + '@floating-ui/vue@1.1.11(vue@3.5.32(typescript@6.0.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@floating-ui/dom': 1.7.6 + '@floating-ui/utils': 0.2.11 + vue-demi: 0.14.10(vue@3.5.32(typescript@6.0.2)) transitivePeerDependencies: - - supports-color + - '@vue/composition-api' + - vue - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@gwhitney/detect-indent@7.0.1': {} - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@harperfast/extended-iterable@1.0.3': + optional: true - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + '@hono/node-server@1.19.11(hono@4.12.6)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + hono: 4.12.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 + '@humanfs/core@0.19.1': {} - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + '@humanfs/node@0.16.7': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@humanwhocodes/module-importer@1.0.1': {} - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@humanwhocodes/retry@0.4.3': {} - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + '@iconify/collections@1.0.670': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 + '@iconify/types': 2.0.0 - '@babel/preset-env@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.16(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) - core-js-compat: 3.49.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@iconify/types@2.0.0': {} - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + '@iconify/utils@3.1.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.29.0 - esutils: 2.0.3 + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.2 - '@babel/runtime@7.28.4': {} + '@iconify/vue@5.0.0(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.5.32(typescript@6.0.2) - '@babel/runtime@7.28.6': {} + '@inquirer/ansi@1.0.2': {} - '@babel/template@7.27.2': + '@inquirer/checkbox@4.3.2(@types/node@25.5.2)': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.5.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.5.2 - '@babel/template@7.28.6': + '@inquirer/confirm@5.1.21(@types/node@25.5.2)': dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + optionalDependencies: + '@types/node': 25.5.2 - '@babel/traverse@7.28.5': + '@inquirer/core@10.3.2(@types/node@25.5.2)': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.5.2) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.5.2 - '@babel/traverse@7.29.0': + '@inquirer/editor@4.2.23(@types/node@25.5.2)': dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/external-editor': 1.0.3(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + optionalDependencies: + '@types/node': 25.5.2 - '@babel/types@7.28.5': + '@inquirer/expand@4.0.23(@types/node@25.5.2)': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.5.2 - '@babel/types@7.29.0': + '@inquirer/external-editor@1.0.3(@types/node@25.5.2)': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + chardet: 2.1.1 + iconv-lite: 0.7.1 + optionalDependencies: + '@types/node': 25.5.2 - '@braidai/lang@1.1.2': {} + '@inquirer/figures@1.0.15': {} - '@bramus/specificity@2.4.2': + '@inquirer/input@4.3.1(@types/node@25.5.2)': dependencies: - css-tree: 3.2.1 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + optionalDependencies: + '@types/node': 25.5.2 - '@clack/core@1.2.0': + '@inquirer/number@3.0.23(@types/node@25.5.2)': dependencies: - fast-wrap-ansi: 0.1.6 - sisteransi: 1.0.5 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + optionalDependencies: + '@types/node': 25.5.2 - '@clack/prompts@1.2.0': + '@inquirer/password@4.0.23(@types/node@25.5.2)': dependencies: - '@clack/core': 1.2.0 - fast-string-width: 1.1.0 - fast-wrap-ansi: 0.1.6 - sisteransi: 1.0.5 - - '@colors/colors@1.5.0': - optional: true - - '@csstools/color-helpers@6.0.2': {} + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + optionalDependencies: + '@types/node': 25.5.2 - '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@inquirer/prompts@7.10.1(@types/node@25.5.2)': dependencies: - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 + '@inquirer/checkbox': 4.3.2(@types/node@25.5.2) + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@inquirer/editor': 4.2.23(@types/node@25.5.2) + '@inquirer/expand': 4.0.23(@types/node@25.5.2) + '@inquirer/input': 4.3.1(@types/node@25.5.2) + '@inquirer/number': 3.0.23(@types/node@25.5.2) + '@inquirer/password': 4.0.23(@types/node@25.5.2) + '@inquirer/rawlist': 4.1.11(@types/node@25.5.2) + '@inquirer/search': 3.2.2(@types/node@25.5.2) + '@inquirer/select': 4.4.2(@types/node@25.5.2) + optionalDependencies: + '@types/node': 25.5.2 - '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@inquirer/rawlist@4.1.11(@types/node@25.5.2)': dependencies: - '@csstools/color-helpers': 6.0.2 - '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.5.2 - '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + '@inquirer/search@3.2.2(@types/node@25.5.2)': dependencies: - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.5.2) + yoctocolors-cjs: 2.1.3 optionalDependencies: - css-tree: 3.2.1 - - '@csstools/css-tokenizer@4.0.0': {} - - '@discoveryjs/json-ext@0.6.3': {} + '@types/node': 25.5.2 - '@e18e/eslint-plugin@0.3.0(eslint@10.2.0(jiti@2.6.1))': + '@inquirer/select@4.4.2(@types/node@25.5.2)': dependencies: - eslint-plugin-depend: 1.5.0(eslint@10.2.0(jiti@2.6.1)) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.5.2) + yoctocolors-cjs: 2.1.3 optionalDependencies: - eslint: 10.2.0(jiti@2.6.1) + '@types/node': 25.5.2 - '@emnapi/core@1.7.1': - dependencies: - '@emnapi/wasi-threads': 1.1.0 - tslib: 2.8.1 - optional: true + '@inquirer/type@3.0.10(@types/node@25.5.2)': + optionalDependencies: + '@types/node': 25.5.2 - '@emnapi/runtime@1.7.1': + '@internationalized/date@3.12.0': dependencies: - tslib: 2.8.1 - optional: true + '@swc/helpers': 0.5.21 - '@emnapi/wasi-threads@1.1.0': + '@internationalized/number@3.6.5': dependencies: - tslib: 2.8.1 - optional: true + '@swc/helpers': 0.5.21 - '@epic-web/invariant@1.0.0': {} + '@ioredis/commands@1.5.1': {} - '@es-joy/jsdoccomment@0.84.0': + '@isaacs/cliui@8.0.2': dependencies: - '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.57.0 - comment-parser: 1.4.5 - esquery: 1.7.0 - jsdoc-type-pratt-parser: 7.1.1 + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 - '@es-joy/jsdoccomment@0.86.0': + '@isaacs/fs-minipass@4.0.1': dependencies: - '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.58.0 - comment-parser: 1.4.6 - esquery: 1.7.0 - jsdoc-type-pratt-parser: 7.2.0 - - '@es-joy/resolve.exports@1.2.0': {} - - '@esbuild/aix-ppc64@0.25.12': - optional: true + minipass: 7.1.2 - '@esbuild/aix-ppc64@0.27.3': - optional: true + '@istanbuljs/schema@0.1.3': {} - '@esbuild/android-arm64@0.25.12': - optional: true + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - '@esbuild/android-arm64@0.27.3': - optional: true + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@esbuild/android-arm@0.25.12': - optional: true + '@jridgewell/resolve-uri@3.1.2': {} - '@esbuild/android-arm@0.27.3': - optional: true + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@esbuild/android-x64@0.25.12': - optional: true + '@jridgewell/sourcemap-codec@1.5.5': {} - '@esbuild/android-x64@0.27.3': - optional: true + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - '@esbuild/darwin-arm64@0.25.12': - optional: true + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 - '@esbuild/darwin-arm64@0.27.3': - optional: true + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 - '@esbuild/darwin-x64@0.25.12': - optional: true + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 - '@esbuild/darwin-x64@0.27.3': - optional: true + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 - '@esbuild/freebsd-arm64@0.25.12': - optional: true + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 - '@esbuild/freebsd-arm64@0.27.3': - optional: true + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 - '@esbuild/freebsd-x64@0.25.12': - optional: true + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color - '@esbuild/freebsd-x64@0.27.3': - optional: true + '@kwsites/promise-deferred@1.1.1': {} - '@esbuild/linux-arm64@0.25.12': - optional: true + '@leichtgewicht/ip-codec@2.0.5': {} - '@esbuild/linux-arm64@0.27.3': - optional: true + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.2))(@types/node@25.5.2)(listr2@9.0.5)': + dependencies: + '@inquirer/prompts': 7.10.1(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) + listr2: 9.0.5 + transitivePeerDependencies: + - '@types/node' - '@esbuild/linux-arm@0.25.12': + '@lmdb/lmdb-darwin-arm64@3.5.1': optional: true - '@esbuild/linux-arm@0.27.3': + '@lmdb/lmdb-darwin-x64@3.5.1': optional: true - '@esbuild/linux-ia32@0.25.12': + '@lmdb/lmdb-linux-arm64@3.5.1': optional: true - '@esbuild/linux-ia32@0.27.3': + '@lmdb/lmdb-linux-arm@3.5.1': optional: true - '@esbuild/linux-loong64@0.25.12': + '@lmdb/lmdb-linux-x64@3.5.1': optional: true - '@esbuild/linux-loong64@0.27.3': + '@lmdb/lmdb-win32-arm64@3.5.1': optional: true - '@esbuild/linux-mips64el@0.25.12': + '@lmdb/lmdb-win32-x64@3.5.1': optional: true - '@esbuild/linux-mips64el@0.27.3': - optional: true + '@loaderkit/resolve@1.0.4': + dependencies: + '@braidai/lang': 1.1.2 - '@esbuild/linux-ppc64@0.25.12': - optional: true + '@mapbox/node-pre-gyp@2.0.3(encoding@0.1.13)': + dependencies: + consola: 3.4.2 + detect-libc: 2.1.2 + https-proxy-agent: 7.0.6 + node-fetch: 2.7.0(encoding@0.1.13) + nopt: 8.1.0 + semver: 7.7.4 + tar: 7.5.2 + transitivePeerDependencies: + - encoding + - supports-color - '@esbuild/linux-ppc64@0.27.3': - optional: true + '@modelcontextprotocol/sdk@1.26.0(zod@4.3.6)': + dependencies: + '@hono/node-server': 1.19.11(hono@4.12.6) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.6 + express: 5.2.1 + express-rate-limit: 8.3.1(express@5.2.1) + hono: 4.12.6 + jose: 6.1.3 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.3.6 + zod-to-json-schema: 3.25.1(zod@4.3.6) + transitivePeerDependencies: + - supports-color - '@esbuild/linux-riscv64@0.25.12': + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true - '@esbuild/linux-riscv64@0.27.3': + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': optional: true - '@esbuild/linux-s390x@0.25.12': + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': optional: true - '@esbuild/linux-s390x@0.27.3': + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': optional: true - '@esbuild/linux-x64@0.25.12': + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': optional: true - '@esbuild/linux-x64@0.27.3': + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@napi-rs/nice-android-arm-eabi@1.1.1': optional: true - '@esbuild/netbsd-arm64@0.27.3': + '@napi-rs/nice-android-arm64@1.1.1': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@napi-rs/nice-darwin-arm64@1.1.1': optional: true - '@esbuild/netbsd-x64@0.27.3': + '@napi-rs/nice-darwin-x64@1.1.1': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@napi-rs/nice-freebsd-x64@1.1.1': optional: true - '@esbuild/openbsd-arm64@0.27.3': + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@napi-rs/nice-linux-arm64-gnu@1.1.1': optional: true - '@esbuild/openbsd-x64@0.27.3': + '@napi-rs/nice-linux-arm64-musl@1.1.1': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': optional: true - '@esbuild/openharmony-arm64@0.27.3': + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': optional: true - '@esbuild/sunos-x64@0.25.12': + '@napi-rs/nice-linux-s390x-gnu@1.1.1': optional: true - '@esbuild/sunos-x64@0.27.3': + '@napi-rs/nice-linux-x64-gnu@1.1.1': optional: true - '@esbuild/win32-arm64@0.25.12': + '@napi-rs/nice-linux-x64-musl@1.1.1': optional: true - '@esbuild/win32-arm64@0.27.3': + '@napi-rs/nice-openharmony-arm64@1.1.1': optional: true - '@esbuild/win32-ia32@0.25.12': + '@napi-rs/nice-win32-arm64-msvc@1.1.1': optional: true - '@esbuild/win32-ia32@0.27.3': + '@napi-rs/nice-win32-ia32-msvc@1.1.1': optional: true - '@esbuild/win32-x64@0.25.12': + '@napi-rs/nice-win32-x64-msvc@1.1.1': optional: true - '@esbuild/win32-x64@0.27.3': + '@napi-rs/nice@1.1.1': + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.1.1 + '@napi-rs/nice-android-arm64': 1.1.1 + '@napi-rs/nice-darwin-arm64': 1.1.1 + '@napi-rs/nice-darwin-x64': 1.1.1 + '@napi-rs/nice-freebsd-x64': 1.1.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1 + '@napi-rs/nice-linux-arm64-gnu': 1.1.1 + '@napi-rs/nice-linux-arm64-musl': 1.1.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.1.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.1.1 + '@napi-rs/nice-linux-s390x-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-musl': 1.1.1 + '@napi-rs/nice-openharmony-arm64': 1.1.1 + '@napi-rs/nice-win32-arm64-msvc': 1.1.1 + '@napi-rs/nice-win32-ia32-msvc': 1.1.1 + '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.7.1(eslint@10.2.0(jiti@2.6.1))': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: - escape-string-regexp: 4.0.0 - eslint: 10.2.0(jiti@2.6.1) - ignore: 7.0.5 + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@tybys/wasm-util': 0.10.1 + optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0(jiti@2.6.1))': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - eslint: 10.2.0(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.1 + optional: true - '@eslint/compat@2.0.3(eslint@10.2.0(jiti@2.6.1))': + '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@eslint/core': 1.1.1 - optionalDependencies: - eslint: 10.2.0(jiti@2.6.1) + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.1 + optional: true - '@eslint/config-array@0.23.4': + '@ngtools/webpack@21.2.7(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3))': dependencies: - '@eslint/object-schema': 3.0.4 - debug: 4.4.3 - minimatch: 10.2.4 - transitivePeerDependencies: - - supports-color + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + typescript: 6.0.2 + webpack: 5.105.2(esbuild@0.27.3) - '@eslint/config-helpers@0.5.3': - dependencies: - '@eslint/core': 1.1.1 + '@noble/hashes@1.4.0': {} - '@eslint/config-helpers@0.5.4': + '@nodelib/fs.scandir@2.1.5': dependencies: - '@eslint/core': 1.2.0 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - '@eslint/core@1.1.1': - dependencies: - '@types/json-schema': 7.0.15 + '@nodelib/fs.stat@2.0.5': {} - '@eslint/core@1.2.0': + '@nodelib/fs.walk@1.2.8': dependencies: - '@types/json-schema': 7.0.15 + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 - '@eslint/markdown@8.0.1': + '@npmcli/agent@4.0.0': dependencies: - '@eslint/core': 1.1.1 - '@eslint/plugin-kit': 0.6.1 - github-slugger: 2.0.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-frontmatter: 2.0.1 - mdast-util-gfm: 3.1.0 - mdast-util-math: 3.0.0 - micromark-extension-frontmatter: 2.0.0 - micromark-extension-gfm: 3.0.0 - micromark-extension-math: 3.1.0 - micromark-util-normalize-identifier: 2.0.1 + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 11.3.2 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color - '@eslint/object-schema@3.0.4': {} - - '@eslint/plugin-kit@0.6.1': + '@npmcli/fs@5.0.0': dependencies: - '@eslint/core': 1.1.1 - levn: 0.4.1 + semver: 7.7.4 - '@eslint/plugin-kit@0.7.0': + '@npmcli/git@7.0.1': dependencies: - '@eslint/core': 1.2.0 - levn: 0.4.1 - - '@exodus/bytes@1.15.0': {} + '@npmcli/promise-spawn': 9.0.1 + ini: 6.0.0 + lru-cache: 11.3.2 + npm-pick-manifest: 11.0.3 + proc-log: 6.1.0 + promise-retry: 2.0.1 + semver: 7.7.4 + which: 6.0.1 - '@fast-check/vitest@0.4.0(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)))': + '@npmcli/installed-package-contents@4.0.0': dependencies: - fast-check: 4.4.0 - vitest: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + npm-bundled: 5.0.0 + npm-normalize-package-bin: 5.0.0 - '@harperfast/extended-iterable@1.0.3': - optional: true + '@npmcli/node-gyp@5.0.0': {} - '@hono/node-server@1.19.11(hono@4.12.6)': + '@npmcli/package-json@7.0.4': dependencies: - hono: 4.12.6 - - '@humanfs/core@0.19.1': {} + '@npmcli/git': 7.0.1 + glob: 13.0.0 + hosted-git-info: 9.0.2 + json-parse-even-better-errors: 5.0.0 + proc-log: 6.1.0 + semver: 7.7.4 + validate-npm-package-license: 3.0.4 - '@humanfs/node@0.16.7': + '@npmcli/promise-spawn@9.0.1': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.4.3 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} + which: 6.0.1 - '@inquirer/ansi@1.0.2': {} + '@npmcli/redact@4.0.0': {} - '@inquirer/checkbox@4.3.2(@types/node@25.5.2)': + '@npmcli/run-script@10.0.3': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.5.2 + '@npmcli/node-gyp': 5.0.0 + '@npmcli/package-json': 7.0.4 + '@npmcli/promise-spawn': 9.0.1 + node-gyp: 12.1.0 + proc-log: 6.1.0 + which: 6.0.1 + transitivePeerDependencies: + - supports-color - '@inquirer/confirm@5.1.21(@types/node@25.5.2)': + '@nuxt/cli@3.34.0(@nuxt/schema@4.4.2)(cac@6.7.14)(magicast@0.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) + '@bomb.sh/tab': 0.0.14(cac@6.7.14)(citty@0.2.2) + '@clack/prompts': 1.2.0 + c12: 3.3.4(magicast@0.5.2) + citty: 0.2.2 + confbox: 0.2.4 + consola: 3.4.2 + debug: 4.4.3 + defu: 6.1.7 + exsolve: 1.0.8 + fuse.js: 7.3.0 + fzf: 0.5.2 + giget: 3.2.0 + jiti: 2.6.1 + listhen: 1.9.1(srvx@0.11.15) + 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.1 optionalDependencies: - '@types/node': 25.5.2 + '@nuxt/schema': 4.4.2 + transitivePeerDependencies: + - cac + - commander + - magicast + - supports-color - '@inquirer/core@10.3.2(@types/node@25.5.2)': + '@nuxt/devalue@2.0.2': {} + + '@nuxt/devtools-kit@3.2.4(magicast@0.5.2)(vite@8.0.8)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.2) - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.5.2 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + execa: 8.0.1 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + transitivePeerDependencies: + - magicast - '@inquirer/editor@4.2.23(@types/node@25.5.2)': + '@nuxt/devtools-wizard@3.2.4': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/external-editor': 1.0.3(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - optionalDependencies: - '@types/node': 25.5.2 + '@clack/prompts': 1.2.0 + consola: 3.4.2 + diff: 8.0.4 + execa: 8.0.1 + magicast: 0.5.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + semver: 7.7.4 - '@inquirer/expand@4.0.23(@types/node@25.5.2)': + '@nuxt/devtools@3.2.4(@vitejs/devtools@0.1.13)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2))': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - yoctocolors-cjs: 2.1.3 + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@8.0.8) + '@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@6.0.2)) + '@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.35.2 + sirv: 3.0.2 + structured-clone-es: 2.0.0 + tinyglobby: 0.2.16 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite-plugin-inspect: 11.3.3(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@8.0.8) + vite-plugin-vue-tracer: 1.3.0(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) + which: 6.0.1 + ws: 8.20.0 optionalDependencies: - '@types/node': 25.5.2 + '@vitejs/devtools': 0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@6.0.2)(vite@8.0.8) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + - vue - '@inquirer/external-editor@1.0.3(@types/node@25.5.2)': + '@nuxt/fonts@0.14.0(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(vite@8.0.8)': dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.1 - optionalDependencies: - '@types/node': 25.5.2 - - '@inquirer/figures@1.0.15': {} + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@8.0.8) + '@nuxt/kit': 4.4.2(magicast@0.5.2) + consola: 3.4.2 + defu: 6.1.7 + fontless: 0.2.1(db0@0.3.4)(ioredis@5.10.1)(vite@8.0.8) + h3: 1.15.11 + magic-regexp: 0.10.0 + ofetch: 1.5.1 + pathe: 2.0.3 + sirv: 3.0.2 + tinyglobby: 0.2.16 + ufo: 1.6.3 + unifont: 0.7.4 + unplugin: 3.0.0 + unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - magicast + - uploadthing + - vite + + '@nuxt/icon@2.2.1(magicast@0.5.2)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@iconify/collections': 1.0.670 + '@iconify/types': 2.0.0 + '@iconify/utils': 3.1.0 + '@iconify/vue': 5.0.0(vue@3.5.32(typescript@6.0.2)) + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@8.0.8) + '@nuxt/kit': 4.4.2(magicast@0.5.2) + consola: 3.4.2 + local-pkg: 1.1.2 + mlly: 1.8.2 + ohash: 2.0.11 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.10.0 + tinyglobby: 0.2.16 + transitivePeerDependencies: + - magicast + - vite + - vue - '@inquirer/input@4.3.1(@types/node@25.5.2)': + '@nuxt/kit@3.21.2(magicast@0.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - optionalDependencies: - '@types/node': 25.5.2 + c12: 3.3.4(magicast@0.5.2) + consola: 3.4.2 + defu: 6.1.7 + destr: 2.0.5 + errx: 0.1.0 + exsolve: 1.0.8 + ignore: 7.0.5 + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + mlly: 1.8.2 + 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.16 + ufo: 1.6.3 + unctx: 2.5.0 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast - '@inquirer/number@3.0.23(@types/node@25.5.2)': + '@nuxt/kit@4.4.2(magicast@0.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - optionalDependencies: - '@types/node': 25.5.2 + c12: 3.3.4(magicast@0.5.2) + consola: 3.4.2 + defu: 6.1.7 + 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.2 + 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.16 + ufo: 1.6.3 + unctx: 2.5.0 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast - '@inquirer/password@4.0.23(@types/node@25.5.2)': + '@nuxt/nitro-server@4.4.2(@babel/core@7.29.0)(db0@0.3.4)(encoding@0.1.13)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2))(rolldown@1.0.0-rc.15)(srvx@0.11.15)(typescript@6.0.2)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - optionalDependencies: - '@types/node': 25.5.2 + '@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': link:packages/vue + '@vue/shared': 3.5.32 + consola: 3.4.2 + defu: 6.1.7 + destr: 2.0.5 + devalue: 5.7.0 + 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.3(encoding@0.1.13)(rolldown@1.0.0-rc.15)(srvx@0.11.15) + nuxt: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2) + 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.5(db0@0.3.4)(ioredis@5.10.1) + vue: 3.5.32(typescript@6.0.2) + 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 + - srvx + - supports-color + - typescript + - uploadthing + - xml2js - '@inquirer/prompts@7.10.1(@types/node@25.5.2)': + '@nuxt/schema@4.4.2': dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@25.5.2) - '@inquirer/confirm': 5.1.21(@types/node@25.5.2) - '@inquirer/editor': 4.2.23(@types/node@25.5.2) - '@inquirer/expand': 4.0.23(@types/node@25.5.2) - '@inquirer/input': 4.3.1(@types/node@25.5.2) - '@inquirer/number': 3.0.23(@types/node@25.5.2) - '@inquirer/password': 4.0.23(@types/node@25.5.2) - '@inquirer/rawlist': 4.1.11(@types/node@25.5.2) - '@inquirer/search': 3.2.2(@types/node@25.5.2) - '@inquirer/select': 4.4.2(@types/node@25.5.2) - optionalDependencies: - '@types/node': 25.5.2 + '@vue/shared': 3.5.32 + defu: 6.1.7 + pathe: 2.0.3 + pkg-types: 2.3.0 + std-env: 4.0.0 - '@inquirer/rawlist@4.1.11(@types/node@25.5.2)': + '@nuxt/telemetry@2.8.0(@nuxt/kit@4.4.2(magicast@0.5.2))': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - yoctocolors-cjs: 2.1.3 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + citty: 0.2.2 + consola: 3.4.2 + ofetch: 2.0.0-alpha.3 + rc9: 3.0.1 + std-env: 4.0.0 + + '@nuxt/ui@4.6.1(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(change-case@5.4.4)(db0@0.3.4)(embla-carousel@8.6.0)(ioredis@5.10.1)(magicast@0.5.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)(typescript@6.0.2)(valibot@1.3.1(typescript@6.0.2))(vite@8.0.8)(vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2))(yjs@13.6.30)(zod@4.3.6)': + dependencies: + '@floating-ui/dom': 1.7.6 + '@iconify/vue': 5.0.0(vue@3.5.32(typescript@6.0.2)) + '@internationalized/date': 3.12.0 + '@internationalized/number': 3.6.5 + '@nuxt/fonts': 0.14.0(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(vite@8.0.8) + '@nuxt/icon': 2.2.1(magicast@0.5.2)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@nuxt/schema': 4.4.2 + '@nuxtjs/color-mode': 3.5.2(magicast@0.5.2) + '@standard-schema/spec': 1.1.0 + '@tailwindcss/postcss': 4.2.2 + '@tailwindcss/vite': 4.2.2(vite@8.0.8) + '@tanstack/vue-table': 8.21.3(vue@3.5.32(typescript@6.0.2)) + '@tanstack/vue-virtual': 3.13.23(vue@3.5.32(typescript@6.0.2)) + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/extension-bubble-menu': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-code': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-collaboration': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30) + '@tiptap/extension-drag-handle': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/extension-collaboration@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)) + '@tiptap/extension-drag-handle-vue-3': 3.22.2(@tiptap/extension-drag-handle@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/extension-collaboration@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)))(@tiptap/pm@3.22.2)(@tiptap/vue-3@3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + '@tiptap/extension-floating-menu': 3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-horizontal-rule': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-image': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-mention': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/suggestion@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-node-range': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-placeholder': 3.22.2(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/markdown': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + '@tiptap/starter-kit': 3.22.2 + '@tiptap/suggestion': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/vue-3': 3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(vue@3.5.32(typescript@6.0.2)) + '@unhead/vue': link:packages/vue + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) + '@vueuse/integrations': 14.2.1(change-case@5.4.4)(fuse.js@7.3.0)(vue@3.5.32(typescript@6.0.2)) + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@6.0.2)) + colortranslator: 5.0.0 + consola: 3.4.2 + defu: 6.1.7 + embla-carousel-auto-height: 8.6.0(embla-carousel@8.6.0) + embla-carousel-auto-scroll: 8.6.0(embla-carousel@8.6.0) + embla-carousel-autoplay: 8.6.0(embla-carousel@8.6.0) + embla-carousel-class-names: 8.6.0(embla-carousel@8.6.0) + embla-carousel-fade: 8.6.0(embla-carousel@8.6.0) + embla-carousel-vue: 8.6.0(vue@3.5.32(typescript@6.0.2)) + embla-carousel-wheel-gestures: 8.1.0(embla-carousel@8.6.0) + fuse.js: 7.3.0 + hookable: 6.1.0 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.2 + motion-v: 2.2.0(@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vue@3.5.32(typescript@6.0.2)) + ohash: 2.0.11 + pathe: 2.0.3 + reka-ui: 2.9.3(vue@3.5.32(typescript@6.0.2)) + scule: 1.3.0 + tailwind-merge: 3.5.0 + tailwind-variants: 3.2.2(tailwind-merge@3.5.0)(tailwindcss@4.2.2) + tailwindcss: 4.2.2 + tinyglobby: 0.2.16 + typescript: 6.0.2 + ufo: 1.6.3 + unplugin: 3.0.0 + unplugin-auto-import: 21.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2))) + unplugin-vue-components: 32.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(vue@3.5.32(typescript@6.0.2)) + vaul-vue: 0.4.1(reka-ui@2.9.3(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + vue-component-type-helpers: 3.2.6 optionalDependencies: - '@types/node': 25.5.2 + valibot: 1.3.1(typescript@6.0.2) + vue-router: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + zod: 4.3.6 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@emotion/is-prop-valid' + - '@netlify/blobs' + - '@planetscale/database' + - '@tiptap/extensions' + - '@tiptap/y-tiptap' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vue/composition-api' + - async-validator + - aws4fetch + - axios + - change-case + - db0 + - drauu + - embla-carousel + - focus-trap + - idb-keyval + - ioredis + - jwt-decode + - magicast + - nprogress + - qrcode + - react + - react-dom + - sortablejs + - universal-cookie + - uploadthing + - vite + - vue + - yjs - '@inquirer/search@3.2.2(@types/node@25.5.2)': + '@nuxt/vite-builder@4.4.2(041258faa70147792a1a09054f226794)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.2) - yoctocolors-cjs: 2.1.3 + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@rollup/plugin-replace': 6.0.3(rollup@4.60.1) + '@vitejs/plugin-vue': 6.0.5(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2)) + '@vitejs/plugin-vue-jsx': 5.1.5(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2)) + autoprefixer: 10.4.27(postcss@8.5.9) + consola: 3.4.2 + cssnano: 7.1.4(postcss@8.5.9) + defu: 6.1.7 + 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.2 + mocked-exports: 0.1.1 + nuxt: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2) + nypm: 0.6.5 + pathe: 2.0.3 + pkg-types: 2.3.0 + postcss: 8.5.9 + seroval: 1.5.1 + std-env: 4.0.0 + ufo: 1.6.3 + unenv: 2.0.0-rc.24 + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite-node: 5.3.0(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite-plugin-checker: 0.12.0(eslint@10.2.0(jiti@2.6.1))(optionator@0.9.4)(typescript@6.0.2)(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue-tsc@3.2.6(typescript@6.0.2)) + vue: 3.5.32(typescript@6.0.2) + vue-bundle-renderer: 2.2.0 optionalDependencies: - '@types/node': 25.5.2 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) + rolldown: 1.0.0-rc.15 + rollup-plugin-visualizer: 7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1) + 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 - '@inquirer/select@4.4.2(@types/node@25.5.2)': + '@nuxtjs/color-mode@3.5.2(magicast@0.5.2)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.5.2) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.5.2 + '@nuxt/kit': 3.21.2(magicast@0.5.2) + pathe: 1.1.2 + pkg-types: 1.3.1 + semver: 7.7.4 + transitivePeerDependencies: + - magicast - '@inquirer/type@3.0.10(@types/node@25.5.2)': - optionalDependencies: - '@types/node': 25.5.2 + '@ota-meshi/ast-token-store@0.3.0': {} - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.2 + '@oxc-minify/binding-android-arm-eabi@0.117.0': + optional: true - '@istanbuljs/schema@0.1.3': {} + '@oxc-minify/binding-android-arm64@0.117.0': + optional: true - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + '@oxc-minify/binding-darwin-arm64@0.117.0': + optional: true - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + '@oxc-minify/binding-darwin-x64@0.117.0': + optional: true - '@jridgewell/resolve-uri@3.1.2': {} + '@oxc-minify/binding-freebsd-x64@0.117.0': + optional: true - '@jridgewell/source-map@0.3.11': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + '@oxc-minify/binding-linux-arm-gnueabihf@0.117.0': + optional: true - '@jridgewell/sourcemap-codec@1.5.5': {} + '@oxc-minify/binding-linux-arm-musleabihf@0.117.0': + optional: true - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@oxc-minify/binding-linux-arm64-gnu@0.117.0': + optional: true - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 + '@oxc-minify/binding-linux-arm64-musl@0.117.0': + optional: true - '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 + '@oxc-minify/binding-linux-ppc64-gnu@0.117.0': + optional: true - '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 + '@oxc-minify/binding-linux-riscv64-gnu@0.117.0': + optional: true - '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 2.5.0(tslib@2.8.1) - tree-dump: 1.1.0(tslib@2.8.1) - tslib: 2.8.1 + '@oxc-minify/binding-linux-riscv64-musl@0.117.0': + optional: true - '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - tslib: 2.8.1 + '@oxc-minify/binding-linux-s390x-gnu@0.117.0': + optional: true - '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - tslib: 2.8.1 + '@oxc-minify/binding-linux-x64-gnu@0.117.0': + optional: true - '@leichtgewicht/ip-codec@2.0.5': {} + '@oxc-minify/binding-linux-x64-musl@0.117.0': + optional: true - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.2))(@types/node@25.5.2)(listr2@9.0.5)': + '@oxc-minify/binding-openharmony-arm64@0.117.0': + optional: true + + '@oxc-minify/binding-wasm32-wasi@0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@25.5.2) - '@inquirer/type': 3.0.10(@types/node@25.5.2) - listr2: 9.0.5 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - - '@types/node' - - '@lmdb/lmdb-darwin-arm64@3.5.1': + - '@emnapi/core' + - '@emnapi/runtime' optional: true - '@lmdb/lmdb-darwin-x64@3.5.1': + '@oxc-minify/binding-win32-arm64-msvc@0.117.0': optional: true - '@lmdb/lmdb-linux-arm64@3.5.1': + '@oxc-minify/binding-win32-ia32-msvc@0.117.0': optional: true - '@lmdb/lmdb-linux-arm@3.5.1': + '@oxc-minify/binding-win32-x64-msvc@0.117.0': optional: true - '@lmdb/lmdb-linux-x64@3.5.1': + '@oxc-parser/binding-android-arm-eabi@0.117.0': optional: true - '@lmdb/lmdb-win32-arm64@3.5.1': + '@oxc-parser/binding-android-arm-eabi@0.124.0': optional: true - '@lmdb/lmdb-win32-x64@3.5.1': + '@oxc-parser/binding-android-arm64@0.117.0': optional: true - '@loaderkit/resolve@1.0.4': - dependencies: - '@braidai/lang': 1.1.2 + '@oxc-parser/binding-android-arm64@0.124.0': + optional: true - '@modelcontextprotocol/sdk@1.26.0(zod@4.3.6)': - dependencies: - '@hono/node-server': 1.19.11(hono@4.12.6) - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - eventsource-parser: 3.0.6 - express: 5.2.1 - express-rate-limit: 8.3.1(express@5.2.1) - hono: 4.12.6 - jose: 6.1.3 - json-schema-typed: 8.0.2 - pkce-challenge: 5.0.1 - raw-body: 3.0.2 - zod: 4.3.6 - zod-to-json-schema: 3.25.1(zod@4.3.6) - transitivePeerDependencies: - - supports-color + '@oxc-parser/binding-darwin-arm64@0.117.0': + optional: true - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + '@oxc-parser/binding-darwin-arm64@0.124.0': optional: true - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + '@oxc-parser/binding-darwin-x64@0.117.0': optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + '@oxc-parser/binding-darwin-x64@0.124.0': optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + '@oxc-parser/binding-freebsd-x64@0.117.0': optional: true - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + '@oxc-parser/binding-freebsd-x64@0.124.0': optional: true - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + '@oxc-parser/binding-linux-arm-gnueabihf@0.117.0': optional: true - '@napi-rs/nice-android-arm-eabi@1.1.1': + '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': optional: true - '@napi-rs/nice-android-arm64@1.1.1': + '@oxc-parser/binding-linux-arm-musleabihf@0.117.0': optional: true - '@napi-rs/nice-darwin-arm64@1.1.1': + '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': optional: true - '@napi-rs/nice-darwin-x64@1.1.1': + '@oxc-parser/binding-linux-arm64-gnu@0.117.0': optional: true - '@napi-rs/nice-freebsd-x64@1.1.1': + '@oxc-parser/binding-linux-arm64-gnu@0.124.0': optional: true - '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': + '@oxc-parser/binding-linux-arm64-musl@0.117.0': optional: true - '@napi-rs/nice-linux-arm64-gnu@1.1.1': + '@oxc-parser/binding-linux-arm64-musl@0.124.0': optional: true - '@napi-rs/nice-linux-arm64-musl@1.1.1': + '@oxc-parser/binding-linux-ppc64-gnu@0.117.0': optional: true - '@napi-rs/nice-linux-ppc64-gnu@1.1.1': + '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': optional: true - '@napi-rs/nice-linux-riscv64-gnu@1.1.1': + '@oxc-parser/binding-linux-riscv64-gnu@0.117.0': optional: true - '@napi-rs/nice-linux-s390x-gnu@1.1.1': + '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': optional: true - '@napi-rs/nice-linux-x64-gnu@1.1.1': + '@oxc-parser/binding-linux-riscv64-musl@0.117.0': optional: true - '@napi-rs/nice-linux-x64-musl@1.1.1': + '@oxc-parser/binding-linux-riscv64-musl@0.124.0': optional: true - '@napi-rs/nice-openharmony-arm64@1.1.1': + '@oxc-parser/binding-linux-s390x-gnu@0.117.0': optional: true - '@napi-rs/nice-win32-arm64-msvc@1.1.1': + '@oxc-parser/binding-linux-s390x-gnu@0.124.0': optional: true - '@napi-rs/nice-win32-ia32-msvc@1.1.1': + '@oxc-parser/binding-linux-x64-gnu@0.117.0': optional: true - '@napi-rs/nice-win32-x64-msvc@1.1.1': + '@oxc-parser/binding-linux-x64-gnu@0.124.0': optional: true - '@napi-rs/nice@1.1.1': - optionalDependencies: - '@napi-rs/nice-android-arm-eabi': 1.1.1 - '@napi-rs/nice-android-arm64': 1.1.1 - '@napi-rs/nice-darwin-arm64': 1.1.1 - '@napi-rs/nice-darwin-x64': 1.1.1 - '@napi-rs/nice-freebsd-x64': 1.1.1 - '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1 - '@napi-rs/nice-linux-arm64-gnu': 1.1.1 - '@napi-rs/nice-linux-arm64-musl': 1.1.1 - '@napi-rs/nice-linux-ppc64-gnu': 1.1.1 - '@napi-rs/nice-linux-riscv64-gnu': 1.1.1 - '@napi-rs/nice-linux-s390x-gnu': 1.1.1 - '@napi-rs/nice-linux-x64-gnu': 1.1.1 - '@napi-rs/nice-linux-x64-musl': 1.1.1 - '@napi-rs/nice-openharmony-arm64': 1.1.1 - '@napi-rs/nice-win32-arm64-msvc': 1.1.1 - '@napi-rs/nice-win32-ia32-msvc': 1.1.1 - '@napi-rs/nice-win32-x64-msvc': 1.1.1 + '@oxc-parser/binding-linux-x64-musl@0.117.0': optional: true - '@napi-rs/wasm-runtime@1.1.1': - dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 - '@tybys/wasm-util': 0.10.1 + '@oxc-parser/binding-linux-x64-musl@0.124.0': optional: true - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)': - dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 - '@tybys/wasm-util': 0.10.1 + '@oxc-parser/binding-openharmony-arm64@0.117.0': optional: true - '@ngtools/webpack@21.2.6(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.105.2(esbuild@0.27.3))': - dependencies: - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3) - typescript: 5.9.3 - webpack: 5.105.2(esbuild@0.27.3) + '@oxc-parser/binding-openharmony-arm64@0.124.0': + optional: true - '@ngtools/webpack@21.2.6(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3))': + '@oxc-parser/binding-wasm32-wasi@0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2) - typescript: 6.0.2 - webpack: 5.105.2(esbuild@0.27.3) - - '@noble/hashes@1.4.0': {} + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true - '@npmcli/agent@4.0.0': + '@oxc-parser/binding-wasm32-wasi@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 11.2.7 - socks-proxy-agent: 8.0.5 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - - supports-color + - '@emnapi/core' + - '@emnapi/runtime' + optional: true - '@npmcli/fs@5.0.0': - dependencies: - semver: 7.7.4 + '@oxc-parser/binding-win32-arm64-msvc@0.117.0': + optional: true - '@npmcli/git@7.0.1': - dependencies: - '@npmcli/promise-spawn': 9.0.1 - ini: 6.0.0 - lru-cache: 11.2.7 - npm-pick-manifest: 11.0.3 - proc-log: 6.1.0 - promise-retry: 2.0.1 - semver: 7.7.4 - which: 6.0.0 + '@oxc-parser/binding-win32-arm64-msvc@0.124.0': + optional: true - '@npmcli/installed-package-contents@4.0.0': - dependencies: - npm-bundled: 5.0.0 - npm-normalize-package-bin: 5.0.0 + '@oxc-parser/binding-win32-ia32-msvc@0.117.0': + optional: true - '@npmcli/node-gyp@5.0.0': {} + '@oxc-parser/binding-win32-ia32-msvc@0.124.0': + optional: true - '@npmcli/package-json@7.0.4': - dependencies: - '@npmcli/git': 7.0.1 - glob: 13.0.0 - hosted-git-info: 9.0.2 - json-parse-even-better-errors: 5.0.0 - proc-log: 6.1.0 - semver: 7.7.4 - validate-npm-package-license: 3.0.4 + '@oxc-parser/binding-win32-x64-msvc@0.117.0': + optional: true - '@npmcli/promise-spawn@9.0.1': - dependencies: - which: 6.0.0 + '@oxc-parser/binding-win32-x64-msvc@0.124.0': + optional: true - '@npmcli/redact@4.0.0': {} + '@oxc-project/types@0.113.0': {} - '@npmcli/run-script@10.0.3': - dependencies: - '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.4 - '@npmcli/promise-spawn': 9.0.1 - node-gyp: 12.1.0 - proc-log: 6.1.0 - which: 6.0.0 - transitivePeerDependencies: - - supports-color + '@oxc-project/types@0.117.0': {} - '@ota-meshi/ast-token-store@0.3.0': {} + '@oxc-project/types@0.123.0': {} - '@oxc-parser/binding-android-arm-eabi@0.124.0': + '@oxc-project/types@0.124.0': {} + + '@oxc-transform/binding-android-arm-eabi@0.117.0': optional: true - '@oxc-parser/binding-android-arm64@0.124.0': + '@oxc-transform/binding-android-arm64@0.117.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.124.0': + '@oxc-transform/binding-darwin-arm64@0.117.0': optional: true - '@oxc-parser/binding-darwin-x64@0.124.0': + '@oxc-transform/binding-darwin-x64@0.117.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.124.0': + '@oxc-transform/binding-freebsd-x64@0.117.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': + '@oxc-transform/binding-linux-arm-gnueabihf@0.117.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': + '@oxc-transform/binding-linux-arm-musleabihf@0.117.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.124.0': + '@oxc-transform/binding-linux-arm64-gnu@0.117.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.124.0': + '@oxc-transform/binding-linux-arm64-musl@0.117.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': + '@oxc-transform/binding-linux-ppc64-gnu@0.117.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': + '@oxc-transform/binding-linux-riscv64-gnu@0.117.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.124.0': + '@oxc-transform/binding-linux-riscv64-musl@0.117.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.124.0': + '@oxc-transform/binding-linux-s390x-gnu@0.117.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.124.0': + '@oxc-transform/binding-linux-x64-gnu@0.117.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.124.0': + '@oxc-transform/binding-linux-x64-musl@0.117.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.124.0': + '@oxc-transform/binding-openharmony-arm64@0.117.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)': + '@oxc-transform/binding-wasm32-wasi@0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.124.0': + '@oxc-transform/binding-win32-arm64-msvc@0.117.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.124.0': + '@oxc-transform/binding-win32-ia32-msvc@0.117.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.124.0': + '@oxc-transform/binding-win32-x64-msvc@0.117.0': optional: true - '@oxc-project/types@0.113.0': {} - - '@oxc-project/types@0.122.0': {} - - '@oxc-project/types@0.124.0': {} - - '@parcel/watcher-android-arm64@2.5.1': + '@parcel/watcher-android-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + '@parcel/watcher-darwin-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-x64@2.5.1': + '@parcel/watcher-darwin-x64@2.5.6': optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + '@parcel/watcher-freebsd-x64@2.5.6': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + '@parcel/watcher-linux-arm-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + '@parcel/watcher-linux-arm-musl@2.5.6': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + '@parcel/watcher-linux-arm64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + '@parcel/watcher-linux-arm64-musl@2.5.6': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + '@parcel/watcher-linux-x64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + '@parcel/watcher-linux-x64-musl@2.5.6': optional: true - '@parcel/watcher-win32-arm64@2.5.1': + '@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.1': + '@parcel/watcher-win32-ia32@2.5.6': optional: true - '@parcel/watcher-win32-x64@2.5.1': + '@parcel/watcher-win32-x64@2.5.6': optional: true - '@parcel/watcher@2.5.1': + '@parcel/watcher@2.5.6': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 node-addon-api: 7.1.1 + picomatch: 4.0.4 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 - optional: true + '@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 '@peculiar/asn1-cms@2.6.1': dependencies: @@ -11216,112 +14463,248 @@ snapshots: tslib: 2.8.1 tsyringe: 4.10.0 + '@pkgjs/parseargs@0.11.0': + optional: true + '@pkgr/core@0.2.9': {} '@playwright/test@1.59.1': dependencies: playwright: 1.59.1 + '@pnpm/constants@1001.3.1': {} + + '@pnpm/core-loggers@1001.0.9(@pnpm/logger@1001.0.1)': + dependencies: + '@pnpm/logger': 1001.0.1 + '@pnpm/types': 1001.3.0 + + '@pnpm/error@1000.1.0': + dependencies: + '@pnpm/constants': 1001.3.1 + + '@pnpm/graceful-fs@1000.1.0': + dependencies: + graceful-fs: 4.2.11 + + '@pnpm/logger@1001.0.1': + dependencies: + bole: 5.0.28 + split2: 4.2.0 + + '@pnpm/manifest-utils@1002.0.5(@pnpm/logger@1001.0.1)': + dependencies: + '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) + '@pnpm/error': 1000.1.0 + '@pnpm/logger': 1001.0.1 + '@pnpm/semver.peer-range': 1000.0.0 + '@pnpm/types': 1001.3.0 + semver: 7.7.4 + + '@pnpm/read-project-manifest@1001.2.6(@pnpm/logger@1001.0.1)': + dependencies: + '@gwhitney/detect-indent': 7.0.1 + '@pnpm/error': 1000.1.0 + '@pnpm/graceful-fs': 1000.1.0 + '@pnpm/logger': 1001.0.1 + '@pnpm/manifest-utils': 1002.0.5(@pnpm/logger@1001.0.1) + '@pnpm/text.comments-parser': 1000.0.0 + '@pnpm/types': 1001.3.0 + '@pnpm/write-project-manifest': 1000.0.16 + fast-deep-equal: 3.1.3 + is-windows: 1.0.2 + json5: 2.2.3 + parse-json: 5.2.0 + read-yaml-file: 2.1.0 + strip-bom: 4.0.0 + + '@pnpm/semver.peer-range@1000.0.0': + dependencies: + semver: 7.7.4 + + '@pnpm/text.comments-parser@1000.0.0': + dependencies: + strip-comments-strings: 1.2.0 + + '@pnpm/types@1001.3.0': {} + + '@pnpm/write-project-manifest@1000.0.16': + dependencies: + '@pnpm/text.comments-parser': 1000.0.0 + '@pnpm/types': 1001.3.0 + json5: 2.2.3 + write-file-atomic: 5.0.1 + write-yaml-file: 5.0.0 + '@polka/url@1.0.0-next.29': {} + '@poppinss/colors@4.1.6': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.7.0': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.2.0 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.3': {} + + '@publint/pack@0.1.4': {} + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 - '@rolldown/binding-android-arm64@1.0.0-rc.12': + '@remirror/core-constants@3.0.0': {} + + '@rolldown/binding-android-arm64@1.0.0-rc.13': + optional: true + + '@rolldown/binding-android-arm64@1.0.0-rc.15': optional: true '@rolldown/binding-android-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + '@rolldown/binding-darwin-arm64@1.0.0-rc.13': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.15': optional: true '@rolldown/binding-darwin-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.12': + '@rolldown/binding-darwin-x64@1.0.0-rc.13': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.15': optional: true '@rolldown/binding-darwin-x64@1.0.0-rc.4': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + '@rolldown/binding-freebsd-x64@1.0.0-rc.13': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.15': optional: true '@rolldown/binding-freebsd-x64@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.13': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.13': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.13': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.13': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.13': + dependencies: + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': - dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.13': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': optional: true - '@rolldown/pluginutils@1.0.0-rc.11': {} + '@rolldown/debug@1.0.0-rc.13': {} - '@rolldown/pluginutils@1.0.0-rc.12': {} + '@rolldown/pluginutils@1.0.0-rc.13': {} + + '@rolldown/pluginutils@1.0.0-rc.15': {} '@rolldown/pluginutils@1.0.0-rc.2': {} @@ -11329,66 +14712,76 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.7': {} - '@rollup/plugin-alias@5.1.1(rollup@4.53.5)': + '@rollup/plugin-alias@5.1.1(rollup@4.60.1)': + optionalDependencies: + rollup: 4.60.1 + + '@rollup/plugin-alias@6.0.0(rollup@4.60.1)': + optionalDependencies: + rollup: 4.60.1 + + '@rollup/plugin-commonjs@28.0.9(rollup@4.60.1)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.5.0(picomatch@4.0.4) + is-reference: 1.2.1 + magic-string: 0.30.21 + picomatch: 4.0.4 optionalDependencies: - rollup: 4.53.5 + rollup: 4.60.1 - '@rollup/plugin-commonjs@28.0.9(rollup@4.53.5)': + '@rollup/plugin-commonjs@29.0.2(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: - rollup: 4.53.5 + rollup: 4.60.1 - '@rollup/plugin-json@6.1.0(rollup@4.53.5)': + '@rollup/plugin-inject@5.0.5(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + estree-walker: 2.0.2 + magic-string: 0.30.21 optionalDependencies: - rollup: 4.53.5 + rollup: 4.60.1 - '@rollup/plugin-json@6.1.0(rollup@4.60.0)': + '@rollup/plugin-json@6.1.0(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) optionalDependencies: - rollup: 4.60.0 + rollup: 4.60.1 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.5)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.5 + rollup: 4.60.1 - '@rollup/plugin-replace@6.0.3(rollup@4.53.5)': + '@rollup/plugin-replace@6.0.3(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) magic-string: 0.30.21 optionalDependencies: - rollup: 4.53.5 - - '@rollup/pluginutils@5.3.0(rollup@4.53.5)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.4 - optionalDependencies: - rollup: 4.53.5 + rollup: 4.60.1 - '@rollup/pluginutils@5.3.0(rollup@4.60.0)': + '@rollup/plugin-terser@1.0.0(rollup@4.60.1)': dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.4 + serialize-javascript: 7.0.4 + smob: 1.6.1 + terser: 5.46.0 optionalDependencies: - rollup: 4.60.0 + rollup: 4.60.1 '@rollup/pluginutils@5.3.0(rollup@4.60.1)': dependencies: @@ -11398,348 +14791,583 @@ snapshots: optionalDependencies: rollup: 4.60.1 - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-android-arm-eabi@4.60.1': optional: true - '@rollup/rollup-android-arm-eabi@4.60.0': + '@rollup/rollup-android-arm64@4.60.1': optional: true - '@rollup/rollup-android-arm-eabi@4.60.1': + '@rollup/rollup-darwin-arm64@4.60.1': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-darwin-x64@4.60.1': optional: true - '@rollup/rollup-android-arm64@4.60.0': + '@rollup/rollup-freebsd-arm64@4.60.1': optional: true - '@rollup/rollup-android-arm64@4.60.1': + '@rollup/rollup-freebsd-x64@4.60.1': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': optional: true - '@rollup/rollup-darwin-arm64@4.60.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.1': optional: true - '@rollup/rollup-darwin-arm64@4.60.1': + '@rollup/rollup-linux-arm64-gnu@4.60.1': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.60.1': optional: true - '@rollup/rollup-darwin-x64@4.60.0': + '@rollup/rollup-linux-loong64-gnu@4.60.1': optional: true - '@rollup/rollup-darwin-x64@4.60.1': + '@rollup/rollup-linux-loong64-musl@4.60.1': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.60.1': optional: true - '@rollup/rollup-freebsd-arm64@4.60.0': + '@rollup/rollup-linux-ppc64-musl@4.60.1': optional: true - '@rollup/rollup-freebsd-arm64@4.60.1': + '@rollup/rollup-linux-riscv64-gnu@4.60.1': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.60.1': optional: true - '@rollup/rollup-freebsd-x64@4.60.0': + '@rollup/rollup-linux-s390x-gnu@4.60.1': optional: true - '@rollup/rollup-freebsd-x64@4.60.1': + '@rollup/rollup-linux-x64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-x64-musl@4.60.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.0': + '@rollup/rollup-openbsd-x64@4.60.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + '@rollup/rollup-openharmony-arm64@4.60.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.60.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.0': + '@rollup/rollup-win32-ia32-msvc@4.60.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.1': + '@rollup/rollup-win32-x64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.60.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.60.0': - optional: true + '@rollup/wasm-node@4.53.5': + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + fsevents: 2.3.3 - '@rollup/rollup-linux-arm64-gnu@4.60.1': - optional: true + '@schematics/angular@21.2.7(chokidar@5.0.0)': + dependencies: + '@angular-devkit/core': 21.2.7(chokidar@5.0.0) + '@angular-devkit/schematics': 21.2.7(chokidar@5.0.0) + jsonc-parser: 3.3.1 + transitivePeerDependencies: + - chokidar - '@rollup/rollup-linux-arm64-musl@4.53.5': - optional: true + '@shikijs/core@4.0.2': + dependencies: + '@shikijs/primitive': 4.0.2 + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 - '@rollup/rollup-linux-arm64-musl@4.60.0': - optional: true + '@shikijs/engine-javascript@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.5 - '@rollup/rollup-linux-arm64-musl@4.60.1': - optional: true + '@shikijs/engine-oniguruma@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 - '@rollup/rollup-linux-loong64-gnu@4.53.5': - optional: true + '@shikijs/langs@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 - '@rollup/rollup-linux-loong64-gnu@4.60.0': - optional: true + '@shikijs/primitive@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 - '@rollup/rollup-linux-loong64-gnu@4.60.1': - optional: true + '@shikijs/themes@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 - '@rollup/rollup-linux-loong64-musl@4.60.0': - optional: true + '@shikijs/types@4.0.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 - '@rollup/rollup-linux-loong64-musl@4.60.1': - optional: true + '@shikijs/vscode-textmate@10.0.2': {} - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - optional: true + '@sigstore/bundle@4.0.0': + dependencies: + '@sigstore/protobuf-specs': 0.5.0 - '@rollup/rollup-linux-ppc64-gnu@4.60.0': - optional: true + '@sigstore/core@3.0.0': {} - '@rollup/rollup-linux-ppc64-gnu@4.60.1': - optional: true + '@sigstore/protobuf-specs@0.5.0': {} - '@rollup/rollup-linux-ppc64-musl@4.60.0': - optional: true + '@sigstore/sign@4.0.1': + dependencies: + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.0.0 + '@sigstore/protobuf-specs': 0.5.0 + make-fetch-happen: 15.0.3 + proc-log: 5.0.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color - '@rollup/rollup-linux-ppc64-musl@4.60.1': - optional: true + '@sigstore/tuf@4.0.0': + dependencies: + '@sigstore/protobuf-specs': 0.5.0 + tuf-js: 4.0.0 + transitivePeerDependencies: + - supports-color - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - optional: true + '@sigstore/verify@3.0.0': + dependencies: + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.0.0 + '@sigstore/protobuf-specs': 0.5.0 - '@rollup/rollup-linux-riscv64-gnu@4.60.0': - optional: true + '@simple-git/args-pathspec@1.0.2': {} - '@rollup/rollup-linux-riscv64-gnu@4.60.1': - optional: true + '@simple-git/argv-parser@1.0.3': + dependencies: + '@simple-git/args-pathspec': 1.0.2 - '@rollup/rollup-linux-riscv64-musl@4.53.5': - optional: true + '@sindresorhus/base62@1.0.0': {} - '@rollup/rollup-linux-riscv64-musl@4.60.0': - optional: true + '@sindresorhus/is@4.6.0': {} - '@rollup/rollup-linux-riscv64-musl@4.60.1': - optional: true + '@sindresorhus/is@7.2.0': {} - '@rollup/rollup-linux-s390x-gnu@4.53.5': - optional: true + '@sindresorhus/merge-streams@4.0.0': {} + + '@solidjs/testing-library@0.8.10(solid-js@1.9.12)': + dependencies: + '@testing-library/dom': 10.4.1 + solid-js: 1.9.12 + + '@speed-highlight/core@1.2.15': {} + + '@standard-schema/spec@1.1.0': {} + + '@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1))': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) + '@typescript-eslint/types': 8.58.1 + eslint: 10.2.0(jiti@2.6.1) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.4 + + '@sveltejs/acorn-typescript@1.0.8(acorn@8.16.0)': + dependencies: + acorn: 8.16.0 + + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.8)': + dependencies: + deepmerge: 4.3.1 + magic-string: 0.30.21 + obug: 2.1.1 + svelte: 5.55.2 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vitefu: 1.1.2(vite@8.0.8) + + '@swc/helpers@0.5.21': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.2.2': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.20.0 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.2 - '@rollup/rollup-linux-s390x-gnu@4.60.0': + '@tailwindcss/oxide-android-arm64@4.2.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.60.1': + '@tailwindcss/oxide-darwin-arm64@4.2.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@tailwindcss/oxide-darwin-x64@4.2.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.60.0': + '@tailwindcss/oxide-freebsd-x64@4.2.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.60.1': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@tailwindcss/oxide-linux-arm64-gnu@4.2.2': optional: true - '@rollup/rollup-linux-x64-musl@4.60.0': + '@tailwindcss/oxide-linux-arm64-musl@4.2.2': optional: true - '@rollup/rollup-linux-x64-musl@4.60.1': + '@tailwindcss/oxide-linux-x64-gnu@4.2.2': optional: true - '@rollup/rollup-openbsd-x64@4.60.0': + '@tailwindcss/oxide-linux-x64-musl@4.2.2': optional: true - '@rollup/rollup-openbsd-x64@4.60.1': + '@tailwindcss/oxide-wasm32-wasi@4.2.2': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@tailwindcss/oxide-win32-arm64-msvc@4.2.2': optional: true - '@rollup/rollup-openharmony-arm64@4.60.0': + '@tailwindcss/oxide-win32-x64-msvc@4.2.2': optional: true - '@rollup/rollup-openharmony-arm64@4.60.1': - optional: true + '@tailwindcss/oxide@4.2.2': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.2 + '@tailwindcss/oxide-darwin-arm64': 4.2.2 + '@tailwindcss/oxide-darwin-x64': 4.2.2 + '@tailwindcss/oxide-freebsd-x64': 4.2.2 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.2 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.2 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.2 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.2 + '@tailwindcss/oxide-linux-x64-musl': 4.2.2 + '@tailwindcss/oxide-wasm32-wasi': 4.2.2 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 + + '@tailwindcss/postcss@4.2.2': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.2.2 + '@tailwindcss/oxide': 4.2.2 + postcss: 8.5.9 + tailwindcss: 4.2.2 + + '@tailwindcss/vite@4.2.2(vite@8.0.8)': + dependencies: + '@tailwindcss/node': 4.2.2 + '@tailwindcss/oxide': 4.2.2 + tailwindcss: 4.2.2 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + + '@tanstack/table-core@8.21.3': {} + + '@tanstack/virtual-core@3.13.23': {} + + '@tanstack/vue-table@8.21.3(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@tanstack/table-core': 8.21.3 + vue: 3.5.32(typescript@6.0.2) + + '@tanstack/vue-virtual@3.13.23(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@tanstack/virtual-core': 3.13.23 + vue: 3.5.32(typescript@6.0.2) + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.28.6 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@babel/runtime': 7.28.6 + '@testing-library/dom': 10.4.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@testing-library/svelte-core@1.0.0(svelte@5.55.2)': + dependencies: + svelte: 5.55.2 + + '@testing-library/svelte@5.3.1(svelte@5.55.2)(vite@8.0.8)(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8))': + dependencies: + '@testing-library/dom': 10.4.1 + '@testing-library/svelte-core': 1.0.0(svelte@5.55.2) + svelte: 5.55.2 + optionalDependencies: + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vitest: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8) + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': + dependencies: + '@testing-library/dom': 10.4.1 + + '@tiptap/core@3.22.2(@tiptap/pm@3.22.2)': + dependencies: + '@tiptap/pm': 3.22.2 + + '@tiptap/extension-blockquote@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + + '@tiptap/extension-bold@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + + '@tiptap/extension-bubble-menu@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': + dependencies: + '@floating-ui/dom': 1.7.6 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + + '@tiptap/extension-bullet-list@3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/extension-list': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-arm64-msvc@4.53.5': - optional: true + '@tiptap/extension-code-block@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@rollup/rollup-win32-arm64-msvc@4.60.0': - optional: true + '@tiptap/extension-code@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-arm64-msvc@4.60.1': - optional: true + '@tiptap/extension-collaboration@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + '@tiptap/y-tiptap': 3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + yjs: 13.6.30 - '@rollup/rollup-win32-ia32-msvc@4.53.5': - optional: true + '@tiptap/extension-document@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-ia32-msvc@4.60.0': - optional: true + '@tiptap/extension-drag-handle-vue-3@3.22.2(@tiptap/extension-drag-handle@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/extension-collaboration@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)))(@tiptap/pm@3.22.2)(@tiptap/vue-3@3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@tiptap/extension-drag-handle': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/extension-collaboration@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)) + '@tiptap/pm': 3.22.2 + '@tiptap/vue-3': 3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(vue@3.5.32(typescript@6.0.2)) + vue: 3.5.32(typescript@6.0.2) - '@rollup/rollup-win32-ia32-msvc@4.60.1': - optional: true + '@tiptap/extension-drag-handle@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/extension-collaboration@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30))(@tiptap/extension-node-range@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))': + dependencies: + '@floating-ui/dom': 1.7.6 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/extension-collaboration': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30) + '@tiptap/extension-node-range': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + '@tiptap/y-tiptap': 3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) - '@rollup/rollup-win32-x64-gnu@4.53.5': - optional: true + '@tiptap/extension-dropcursor@3.22.2(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/extensions': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-x64-gnu@4.60.0': - optional: true + '@tiptap/extension-floating-menu@3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': + dependencies: + '@floating-ui/dom': 1.7.6 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@rollup/rollup-win32-x64-gnu@4.60.1': - optional: true + '@tiptap/extension-gapcursor@3.22.2(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/extensions': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-x64-msvc@4.53.5': - optional: true + '@tiptap/extension-hard-break@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-x64-msvc@4.60.0': - optional: true + '@tiptap/extension-heading@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@rollup/rollup-win32-x64-msvc@4.60.1': - optional: true + '@tiptap/extension-horizontal-rule@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@rollup/wasm-node@4.53.5': + '@tiptap/extension-image@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@schematics/angular@21.2.6(chokidar@5.0.0)': + '@tiptap/extension-italic@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': dependencies: - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.6(chokidar@5.0.0) - jsonc-parser: 3.3.1 - transitivePeerDependencies: - - chokidar + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@sigstore/bundle@4.0.0': + '@tiptap/extension-link@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': dependencies: - '@sigstore/protobuf-specs': 0.5.0 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + linkifyjs: 4.3.2 - '@sigstore/core@3.0.0': {} + '@tiptap/extension-list-item@3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/extension-list': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@sigstore/protobuf-specs@0.5.0': {} + '@tiptap/extension-list-keymap@3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/extension-list': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@sigstore/sign@4.0.1': + '@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 - '@sigstore/protobuf-specs': 0.5.0 - make-fetch-happen: 15.0.3 - proc-log: 5.0.0 - promise-retry: 2.0.1 - transitivePeerDependencies: - - supports-color + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@sigstore/tuf@4.0.0': + '@tiptap/extension-mention@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(@tiptap/suggestion@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': dependencies: - '@sigstore/protobuf-specs': 0.5.0 - tuf-js: 4.0.0 - transitivePeerDependencies: - - supports-color + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + '@tiptap/suggestion': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@sigstore/verify@3.0.0': + '@tiptap/extension-node-range@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 - '@sigstore/protobuf-specs': 0.5.0 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@sindresorhus/base62@1.0.0': {} + '@tiptap/extension-ordered-list@3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/extension-list': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@sindresorhus/is@4.6.0': {} + '@tiptap/extension-paragraph@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@solidjs/testing-library@0.8.10(solid-js@1.9.12)': + '@tiptap/extension-placeholder@3.22.2(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2))': dependencies: - '@testing-library/dom': 10.4.1 - solid-js: 1.9.12 + '@tiptap/extensions': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@standard-schema/spec@1.1.0': {} + '@tiptap/extension-strike@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': + dependencies: + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1))': + '@tiptap/extension-text@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) - '@typescript-eslint/types': 8.57.0 - eslint: 10.2.0(jiti@2.6.1) - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.3 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@sveltejs/acorn-typescript@1.0.8(acorn@8.16.0)': + '@tiptap/extension-underline@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))': dependencies: - acorn: 8.16.0 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) - '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.1)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': + '@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': dependencies: - deepmerge: 4.3.1 - magic-string: 0.30.21 - obug: 2.1.1 - svelte: 5.55.1 - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - vitefu: 1.1.2(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@testing-library/dom@10.4.1': + '@tiptap/markdown@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.4 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - picocolors: 1.1.1 - pretty-format: 27.5.1 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + marked: 17.0.6 - '@testing-library/jest-dom@6.9.1': + '@tiptap/pm@3.22.2': dependencies: - '@adobe/css-tools': 4.4.4 - aria-query: 5.3.2 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - picocolors: 1.1.1 - redent: 3.0.0 + prosemirror-changeset: 2.4.0 + prosemirror-collab: 1.3.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.2 + prosemirror-gapcursor: 1.4.1 + prosemirror-history: 1.5.0 + prosemirror-inputrules: 1.5.1 + prosemirror-keymap: 1.2.3 + prosemirror-markdown: 1.13.4 + prosemirror-menu: 1.3.0 + prosemirror-model: 1.25.4 + prosemirror-schema-basic: 1.2.4 + prosemirror-schema-list: 1.5.1 + prosemirror-state: 1.4.4 + prosemirror-tables: 1.8.5 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8) + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tiptap/starter-kit@3.22.2': dependencies: - '@babel/runtime': 7.28.4 - '@testing-library/dom': 10.4.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/extension-blockquote': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-bold': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-bullet-list': 3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-code': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-code-block': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-document': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-dropcursor': 3.22.2(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-gapcursor': 3.22.2(@tiptap/extensions@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-hard-break': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-heading': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-horizontal-rule': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-italic': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-link': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-list': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-list-item': 3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-list-keymap': 3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-ordered-list': 3.22.2(@tiptap/extension-list@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)) + '@tiptap/extension-paragraph': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-strike': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-text': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extension-underline': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2)) + '@tiptap/extensions': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@testing-library/svelte-core@1.0.0(svelte@5.55.1)': + '@tiptap/suggestion@3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)': dependencies: - svelte: 5.55.1 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 - '@testing-library/svelte@5.3.1(svelte@5.55.1)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)))': + '@tiptap/vue-3@3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2)(vue@3.5.32(typescript@6.0.2))': dependencies: - '@testing-library/dom': 10.4.1 - '@testing-library/svelte-core': 1.0.0(svelte@5.55.1) - svelte: 5.55.1 + '@floating-ui/dom': 1.7.6 + '@tiptap/core': 3.22.2(@tiptap/pm@3.22.2) + '@tiptap/pm': 3.22.2 + vue: 3.5.32(typescript@6.0.2) optionalDependencies: - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - vitest: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + '@tiptap/extension-bubble-menu': 3.22.2(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) + '@tiptap/extension-floating-menu': 3.22.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.2(@tiptap/pm@3.22.2))(@tiptap/pm@3.22.2) - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': + '@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': dependencies: - '@testing-library/dom': 10.4.1 + lib0: 0.2.117 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 + y-protocols: 1.0.7(yjs@13.6.30) + yjs: 13.6.30 '@tsconfig/svelte@5.0.8': {} @@ -11759,7 +15387,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -11771,7 +15399,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': @@ -11851,7 +15479,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 24.10.4 + '@types/node': 25.5.2 '@types/hast@3.0.4': dependencies: @@ -11865,7 +15493,7 @@ snapshots: '@types/jsdom@28.0.1': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 undici-types: 7.22.0 @@ -11878,22 +15506,23 @@ snapshots: '@types/katex@0.16.8': {} + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 + '@types/mdurl@2.0.0': {} + '@types/mime@1.3.5': {} '@types/ms@2.1.0': {} - '@types/node@24.10.4': - dependencies: - undici-types: 7.16.0 - - '@types/node@25.5.0': - dependencies: - undici-types: 7.18.2 - '@types/node@25.5.2': dependencies: undici-types: 7.18.2 @@ -11948,18 +15577,22 @@ snapshots: '@types/unist@3.0.3': {} + '@types/web-bluetooth@0.0.20': {} + + '@types/web-bluetooth@0.0.21': {} + '@types/ws@8.18.1': dependencies: '@types/node': 25.5.2 - '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/scope-manager': 8.58.0 - '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/visitor-keys': 8.58.0 + '@typescript-eslint/parser': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/scope-manager': 8.58.1 + '@typescript-eslint/type-utils': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.1 eslint: 10.2.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -11980,12 +15613,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@typescript-eslint/scope-manager': 8.58.0 - '@typescript-eslint/types': 8.58.0 - '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) - '@typescript-eslint/visitor-keys': 8.58.0 + '@typescript-eslint/scope-manager': 8.58.1 + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.1 debug: 4.4.3 eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 @@ -11994,17 +15627,17 @@ snapshots: '@typescript-eslint/project-service@8.57.0(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) - '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@6.0.2) + '@typescript-eslint/types': 8.58.1 debug: 4.4.3 typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.58.0(typescript@6.0.2)': + '@typescript-eslint/project-service@8.58.1(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) - '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@6.0.2) + '@typescript-eslint/types': 8.58.1 debug: 4.4.3 typescript: 6.0.2 transitivePeerDependencies: @@ -12029,24 +15662,24 @@ snapshots: '@typescript-eslint/types': 8.57.0 '@typescript-eslint/visitor-keys': 8.57.0 - '@typescript-eslint/scope-manager@8.58.0': + '@typescript-eslint/scope-manager@8.58.1': dependencies: - '@typescript-eslint/types': 8.58.0 - '@typescript-eslint/visitor-keys': 8.58.0 + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/visitor-keys': 8.58.1 '@typescript-eslint/tsconfig-utils@8.57.0(typescript@6.0.2)': dependencies: typescript: 6.0.2 - '@typescript-eslint/tsconfig-utils@8.58.0(typescript@6.0.2)': + '@typescript-eslint/tsconfig-utils@8.58.1(typescript@6.0.2)': dependencies: typescript: 6.0.2 - '@typescript-eslint/type-utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/type-utils@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@typescript-eslint/types': 8.58.0 - '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) debug: 4.4.3 eslint: 10.2.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@6.0.2) @@ -12058,6 +15691,8 @@ snapshots: '@typescript-eslint/types@8.58.0': {} + '@typescript-eslint/types@8.58.1': {} + '@typescript-eslint/typescript-estree@8.57.0(typescript@6.0.2)': dependencies: '@typescript-eslint/project-service': 8.57.0(typescript@6.0.2) @@ -12067,22 +15702,22 @@ snapshots: debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2)': + '@typescript-eslint/typescript-estree@8.58.1(typescript@6.0.2)': dependencies: - '@typescript-eslint/project-service': 8.58.0(typescript@6.0.2) - '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) - '@typescript-eslint/types': 8.58.0 - '@typescript-eslint/visitor-keys': 8.58.0 + '@typescript-eslint/project-service': 8.58.1(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@6.0.2) + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/visitor-keys': 8.58.1 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 transitivePeerDependencies: @@ -12099,12 +15734,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/utils@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.58.0 - '@typescript-eslint/types': 8.58.0 - '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/scope-manager': 8.58.1 + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.2) eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 transitivePeerDependencies: @@ -12115,103 +15750,388 @@ snapshots: '@typescript-eslint/types': 8.57.0 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.58.0': + '@typescript-eslint/visitor-keys@8.58.1': dependencies: - '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/types': 8.58.1 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': + '@ungap/structured-clone@1.3.0': {} + + '@vercel/nft@1.5.0(encoding@0.1.13)(rollup@4.60.1)': + dependencies: + '@mapbox/node-pre-gyp': 2.0.3(encoding@0.1.13) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + 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 + glob: 13.0.0 + graceful-fs: 4.2.11 + node-gyp-build: 4.8.4 + picomatch: 4.0.4 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + + '@vitejs/devtools-kit@0.1.13(typescript@5.8.3)(vite@8.0.8)(ws@8.20.0)': + dependencies: + '@vitejs/devtools-rpc': 0.1.13(typescript@5.8.3)(ws@8.20.0) + birpc: 4.0.0 + ohash: 2.0.11 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + transitivePeerDependencies: + - typescript + - ws + + '@vitejs/devtools-kit@0.1.13(typescript@6.0.2)(vite@8.0.8)(ws@8.20.0)': + dependencies: + '@vitejs/devtools-rpc': 0.1.13(typescript@6.0.2)(ws@8.20.0) + birpc: 4.0.0 + ohash: 2.0.11 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + transitivePeerDependencies: + - typescript + - ws + + '@vitejs/devtools-rolldown@0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@5.8.3)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@floating-ui/dom': 1.7.6 + '@pnpm/read-project-manifest': 1001.2.6(@pnpm/logger@1001.0.1) + '@rolldown/debug': 1.0.0-rc.13 + '@vitejs/devtools-kit': 0.1.13(typescript@5.8.3)(vite@8.0.8)(ws@8.20.0) + '@vitejs/devtools-rpc': 0.1.13(typescript@5.8.3)(ws@8.20.0) + ansis: 4.2.0 + birpc: 4.0.0 + cac: 7.0.0 + d3-shape: 3.2.0 + diff: 8.0.4 + get-port-please: 3.2.0 + h3: 1.15.11 + mlly: 1.8.2 + mrmime: 2.0.1 + ohash: 2.0.11 + p-limit: 7.3.0 + pathe: 2.0.3 + publint: 0.3.18 + sirv: 3.0.2 + split2: 4.2.0 + structured-clone-es: 2.0.0 + tinyglobby: 0.2.16 + unconfig: 7.5.0 + unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) + vue-virtual-scroller: 2.0.1(vue@3.5.32(typescript@6.0.2)) + ws: 8.20.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@pnpm/logger' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - idb-keyval + - ioredis + - typescript + - uploadthing + - utf-8-validate + - vite + - vue + + '@vitejs/devtools-rolldown@0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@6.0.2)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@floating-ui/dom': 1.7.6 + '@pnpm/read-project-manifest': 1001.2.6(@pnpm/logger@1001.0.1) + '@rolldown/debug': 1.0.0-rc.13 + '@vitejs/devtools-kit': 0.1.13(typescript@6.0.2)(vite@8.0.8)(ws@8.20.0) + '@vitejs/devtools-rpc': 0.1.13(typescript@6.0.2)(ws@8.20.0) + ansis: 4.2.0 + birpc: 4.0.0 + cac: 7.0.0 + d3-shape: 3.2.0 + diff: 8.0.4 + get-port-please: 3.2.0 + h3: 1.15.11 + mlly: 1.8.2 + mrmime: 2.0.1 + ohash: 2.0.11 + p-limit: 7.3.0 + pathe: 2.0.3 + publint: 0.3.18 + sirv: 3.0.2 + split2: 4.2.0 + structured-clone-es: 2.0.0 + tinyglobby: 0.2.16 + unconfig: 7.5.0 + unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) + vue-virtual-scroller: 2.0.1(vue@3.5.32(typescript@6.0.2)) + ws: 8.20.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@pnpm/logger' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - idb-keyval + - ioredis + - typescript + - uploadthing + - utf-8-validate + - vite + - vue + optional: true + + '@vitejs/devtools-rpc@0.1.13(typescript@5.8.3)(ws@8.20.0)': + dependencies: + birpc: 4.0.0 + ohash: 2.0.11 + p-limit: 7.3.0 + structured-clone-es: 2.0.0 + valibot: 1.3.1(typescript@5.8.3) + optionalDependencies: + ws: 8.20.0 + transitivePeerDependencies: + - typescript + + '@vitejs/devtools-rpc@0.1.13(typescript@6.0.2)(ws@8.20.0)': + dependencies: + birpc: 4.0.0 + ohash: 2.0.11 + p-limit: 7.3.0 + structured-clone-es: 2.0.0 + valibot: 1.3.1(typescript@6.0.2) + optionalDependencies: + ws: 8.20.0 + transitivePeerDependencies: + - typescript + + '@vitejs/devtools@0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@5.8.3)(vite@8.0.8)': + dependencies: + '@vitejs/devtools-kit': 0.1.13(typescript@5.8.3)(vite@8.0.8)(ws@8.20.0) + '@vitejs/devtools-rolldown': 0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@5.8.3)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) + '@vitejs/devtools-rpc': 0.1.13(typescript@5.8.3)(ws@8.20.0) + birpc: 4.0.0 + cac: 7.0.0 + h3: 1.15.11 + immer: 11.1.4 + launch-editor: 2.13.2 + mlly: 1.8.2 + obug: 2.1.1 + open: 11.0.0 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + sirv: 3.0.2 + tinyexec: 1.0.4 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.32(typescript@5.8.3) + ws: 8.20.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@pnpm/logger' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - idb-keyval + - ioredis + - typescript + - uploadthing + - utf-8-validate + + '@vitejs/devtools@0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@6.0.2)(vite@8.0.8)': + dependencies: + '@vitejs/devtools-kit': 0.1.13(typescript@6.0.2)(vite@8.0.8)(ws@8.20.0) + '@vitejs/devtools-rolldown': 0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@6.0.2)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) + '@vitejs/devtools-rpc': 0.1.13(typescript@6.0.2)(ws@8.20.0) + birpc: 4.0.0 + cac: 7.0.0 + h3: 1.15.11 + immer: 11.1.4 + launch-editor: 2.13.2 + mlly: 1.8.2 + obug: 2.1.1 + open: 11.0.0 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + sirv: 3.0.2 + tinyexec: 1.0.4 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.32(typescript@6.0.2) + ws: 8.20.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@pnpm/logger' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - idb-keyval + - ioredis + - typescript + - uploadthing + - utf-8-validate + optional: true + + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': dependencies: - vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - '@vitejs/plugin-react@6.0.1(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-react@6.0.1(vite@8.0.8)': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + + '@vitejs/plugin-vue-jsx@5.1.5(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2))': + 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.13 + '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.32(typescript@6.0.2) + transitivePeerDependencies: + - supports-color - '@vitejs/plugin-vue-jsx@5.1.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2))': + '@vitejs/plugin-vue-jsx@5.1.5(vite@8.0.8)(vue@3.5.32(typescript@6.0.2))': 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.11 + '@rolldown/pluginutils': 1.0.0-rc.13 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.32(typescript@6.0.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@5.8.3))': + '@vitejs/plugin-vue@6.0.5(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.32(typescript@6.0.2) + + '@vitejs/plugin-vue@6.0.5(vite@8.0.8)(vue@3.5.32(typescript@5.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.32(typescript@5.8.3) - '@vitejs/plugin-vue@6.0.5(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2))': + '@vitejs/plugin-vue@6.0.5(vite@8.0.8)(vue@3.5.32(typescript@6.0.2))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.32(typescript@6.0.2) - '@vitest/eslint-plugin@1.6.14(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)))': + '@vitest/eslint-plugin@1.6.14(@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)(vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8))': dependencies: - '@typescript-eslint/scope-manager': 8.58.0 - '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/scope-manager': 8.58.1 + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) eslint: 10.2.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/eslint-plugin': 8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) typescript: 6.0.2 - vitest: 4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8) transitivePeerDependencies: - supports-color - '@vitest/expect@4.1.2': + '@vitest/expect@4.1.3': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + '@vitest/spy': 4.1.3 + '@vitest/utils': 4.1.3 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.3(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.1.2 + '@vitest/spy': 4.1.3 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) optional: true - '@vitest/mocker@4.1.2(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.3(vite@8.0.8)': dependencies: - '@vitest/spy': 4.1.2 + '@vitest/spy': 4.1.3 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - '@vitest/pretty-format@4.1.2': + '@vitest/pretty-format@4.1.3': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.2': + '@vitest/runner@4.1.3': dependencies: - '@vitest/utils': 4.1.2 + '@vitest/utils': 4.1.3 pathe: 2.0.3 - '@vitest/snapshot@4.1.2': + '@vitest/snapshot@4.1.3': dependencies: - '@vitest/pretty-format': 4.1.2 - '@vitest/utils': 4.1.2 + '@vitest/pretty-format': 4.1.3 + '@vitest/utils': 4.1.3 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.2': {} + '@vitest/spy@4.1.3': {} - '@vitest/utils@4.1.2': + '@vitest/utils@4.1.3': dependencies: - '@vitest/pretty-format': 4.1.2 + '@vitest/pretty-format': 4.1.3 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -12229,7 +16149,7 @@ snapshots: '@vue-macros/common@3.1.2(vue@3.5.32(typescript@5.8.3))': dependencies: - '@vue/compiler-sfc': 3.5.30 + '@vue/compiler-sfc': 3.5.32 ast-kit: 2.2.0 local-pkg: 1.1.2 magic-string-ast: 1.0.3 @@ -12239,7 +16159,7 @@ snapshots: '@vue-macros/common@3.1.2(vue@3.5.32(typescript@6.0.2))': dependencies: - '@vue/compiler-sfc': 3.5.30 + '@vue/compiler-sfc': 3.5.32 ast-kit: 2.2.0 local-pkg: 1.1.2 magic-string-ast: 1.0.3 @@ -12251,46 +16171,30 @@ snapshots: '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.0)': dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@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.25 + '@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.27.1 - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/parser': 7.28.5 - '@vue/compiler-sfc': 3.5.25 - transitivePeerDependencies: - - supports-color - - '@vue/compiler-core@3.5.25': - dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.25 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-core@3.5.30': - dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.30 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 + 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.2 + '@vue/compiler-sfc': 3.5.32 + transitivePeerDependencies: + - supports-color '@vue/compiler-core@3.5.32': dependencies: @@ -12300,45 +16204,11 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.25': - dependencies: - '@vue/compiler-core': 3.5.25 - '@vue/shared': 3.5.25 - - '@vue/compiler-dom@3.5.30': - dependencies: - '@vue/compiler-core': 3.5.30 - '@vue/shared': 3.5.30 - '@vue/compiler-dom@3.5.32': dependencies: '@vue/compiler-core': 3.5.32 '@vue/shared': 3.5.32 - '@vue/compiler-sfc@3.5.25': - dependencies: - '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.25 - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.6 - source-map-js: 1.2.1 - - '@vue/compiler-sfc@3.5.30': - dependencies: - '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.30 - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-ssr': 3.5.30 - '@vue/shared': 3.5.30 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.8 - source-map-js: 1.2.1 - '@vue/compiler-sfc@3.5.32': dependencies: '@babel/parser': 7.29.2 @@ -12348,19 +16218,9 @@ snapshots: '@vue/shared': 3.5.32 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.8 + postcss: 8.5.9 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.25': - dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/shared': 3.5.25 - - '@vue/compiler-ssr@3.5.30': - dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/shared': 3.5.30 - '@vue/compiler-ssr@3.5.32': dependencies: '@vue/compiler-dom': 3.5.32 @@ -12372,7 +16232,13 @@ snapshots: '@vue/devtools-api@8.0.7': dependencies: - '@vue/devtools-kit': 8.0.7 + '@vue/devtools-kit': 8.1.1 + + '@vue/devtools-core@8.1.1(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@vue/devtools-kit': 8.1.1 + '@vue/devtools-shared': 8.1.1 + vue: 3.5.32(typescript@6.0.2) '@vue/devtools-kit@7.7.9': dependencies: @@ -12384,28 +16250,28 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.6 - '@vue/devtools-kit@8.0.7': + '@vue/devtools-kit@8.1.1': dependencies: - '@vue/devtools-shared': 8.0.7 + '@vue/devtools-shared': 8.1.1 birpc: 2.9.0 hookable: 5.5.3 - perfect-debounce: 2.0.0 + perfect-debounce: 2.1.0 '@vue/devtools-shared@7.7.9': dependencies: rfdc: 1.4.1 - '@vue/devtools-shared@8.0.7': {} + '@vue/devtools-shared@8.1.1': {} '@vue/language-core@3.2.6': dependencies: '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.30 - '@vue/shared': 3.5.30 + '@vue/compiler-dom': 3.5.32 + '@vue/shared': 3.5.32 alien-signals: 3.1.1 muggle-string: 0.4.1 path-browserify: 1.0.1 - picomatch: 4.0.3 + picomatch: 4.0.4 '@vue/reactivity@3.5.32': dependencies: @@ -12423,23 +16289,78 @@ snapshots: '@vue/shared': 3.5.32 csstype: 3.2.3 - '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@5.8.3))': + '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@6.0.2))': dependencies: '@vue/compiler-ssr': 3.5.32 '@vue/shared': 3.5.32 + vue: 3.5.32(typescript@6.0.2) + + '@vue/shared@3.5.32': {} + + '@vueuse/core@10.11.1(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.1 + '@vueuse/shared': 10.11.1(vue@3.5.32(typescript@6.0.2)) + vue-demi: 0.14.10(vue@3.5.32(typescript@6.0.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/core@14.2.1(vue@3.5.32(typescript@5.8.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@5.8.3)) vue: 3.5.32(typescript@5.8.3) + optional: true - '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@6.0.2))': + '@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2))': dependencies: - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@6.0.2)) vue: 3.5.32(typescript@6.0.2) - '@vue/shared@3.5.25': {} + '@vueuse/integrations@14.2.1(change-case@5.4.4)(fuse.js@7.3.0)(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@6.0.2)) + vue: 3.5.32(typescript@6.0.2) + optionalDependencies: + change-case: 5.4.4 + fuse.js: 7.3.0 - '@vue/shared@3.5.30': {} + '@vueuse/metadata@10.11.1': {} - '@vue/shared@3.5.32': {} + '@vueuse/metadata@14.2.1': {} + + '@vueuse/nuxt@14.2.1(magicast@0.5.2)(nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2))(vue@3.5.32(typescript@6.0.2))': + dependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) + '@vueuse/metadata': 14.2.1 + local-pkg: 1.1.2 + nuxt: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2) + vue: 3.5.32(typescript@6.0.2) + transitivePeerDependencies: + - magicast + + '@vueuse/shared@10.11.1(vue@3.5.32(typescript@6.0.2))': + dependencies: + vue-demi: 0.14.10(vue@3.5.32(typescript@6.0.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/shared@14.2.1(vue@3.5.32(typescript@5.8.3))': + dependencies: + vue: 3.5.32(typescript@5.8.3) + optional: true + + '@vueuse/shared@14.2.1(vue@3.5.32(typescript@6.0.2))': + dependencies: + vue: 3.5.32(typescript@6.0.2) '@webassemblyjs/ast@1.14.1': dependencies: @@ -12523,8 +16444,14 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} + abbrev@3.0.1: {} + abbrev@4.0.0: {} + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -12535,6 +16462,10 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 + acorn-import-attributes@1.9.5(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + acorn-import-phases@1.0.4(acorn@8.16.0): dependencies: acorn: 8.16.0 @@ -12543,8 +16474,6 @@ snapshots: dependencies: acorn: 8.16.0 - acorn@8.15.0: {} - acorn@8.16.0: {} adjust-sourcemap-loader@4.0.0: @@ -12629,12 +16558,40 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + archiver-utils@5.0.2: + dependencies: + glob: 10.5.0 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.18.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.7.0 + readdir-glob: 1.1.3 + tar-stream: 3.1.8 + zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + are-docs-informative@0.0.2: {} argparse@2.0.1: {} args-tokenizer@0.3.0: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + aria-query@5.3.0: dependencies: dequal: 2.0.3 @@ -12655,34 +16612,40 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 pathe: 2.0.3 ast-walker-scope@0.8.3: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 ast-kit: 2.2.0 - autoprefixer@10.4.23(postcss@8.5.6): + async-sema@3.1.1: {} + + async@3.2.6: {} + + autoprefixer@10.4.27(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001777 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 - autoprefixer@10.4.27(postcss@8.5.6): + autoprefixer@10.4.27(postcss@8.5.9): dependencies: browserslist: 4.28.1 caniuse-lite: 1.0.30001777 fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 axobject-query@4.1.0: {} + b4a@1.8.0: {} + babel-loader@10.0.0(@babel/core@7.29.0)(webpack@5.105.2(esbuild@0.27.3)): dependencies: '@babel/core': 7.29.0 @@ -12741,6 +16704,40 @@ snapshots: balanced-match@4.0.4: {} + bare-events@2.8.2: {} + + bare-fs@4.6.0: + dependencies: + bare-events: 2.8.2 + bare-path: 3.0.0 + bare-stream: 2.12.0(bare-events@2.8.2) + bare-url: 2.4.0 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + bare-os@3.8.7: {} + + bare-path@3.0.0: + dependencies: + bare-os: 3.8.7 + + bare-stream@2.12.0(bare-events@2.8.2): + dependencies: + streamx: 2.25.0 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - react-native-b4a + + bare-url@2.4.0: + dependencies: + bare-path: 3.0.0 + + base64-js@1.5.1: {} + baseline-browser-mapping@2.9.8: {} batch@0.6.1: {} @@ -12753,9 +16750,9 @@ snapshots: domhandler: 5.0.3 htmlparser2: 10.0.0 picocolors: 1.1.1 - postcss: 8.5.8 + postcss: 8.5.9 postcss-media-query-parser: 0.2.3 - postcss-safe-parser: 7.0.1(postcss@8.5.8) + postcss-safe-parser: 7.0.1(postcss@8.5.9) bidi-js@1.0.3: dependencies: @@ -12765,8 +16762,14 @@ snapshots: binary-extensions@2.3.0: {} + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + birpc@2.9.0: {} + birpc@4.0.0: {} + body-parser@1.20.4: dependencies: bytes: 3.1.2 @@ -12798,6 +16801,11 @@ snapshots: transitivePeerDependencies: - supports-color + bole@5.0.28: + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 + bonjour-service@1.3.0: dependencies: fast-deep-equal: 3.1.3 @@ -12809,10 +16817,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.4: - dependencies: - balanced-match: 4.0.4 - brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -12824,13 +16828,20 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.8 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001777 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) + buffer-crc32@1.0.0: {} + buffer-from@1.1.2: {} + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + builtin-modules@5.0.0: {} bumpp@11.0.1: @@ -12840,8 +16851,8 @@ snapshots: jsonc-parser: 3.3.1 package-manager-detector: 1.6.0 semver: 7.7.4 - tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 unconfig: 7.5.0 yaml: 2.8.2 @@ -12853,6 +16864,25 @@ snapshots: bytestreamjs@2.0.1: {} + c12@3.3.4(magicast@0.5.2): + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.4.1 + exsolve: 1.0.8 + giget: 3.2.0 + jiti: 2.6.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + rc9: 3.0.1 + optionalDependencies: + magicast: 0.5.2 + + cac@6.7.14: {} + cac@7.0.0: {} cacache@20.0.3: @@ -12860,7 +16890,7 @@ snapshots: '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 glob: 13.0.0 - lru-cache: 11.2.7 + lru-cache: 11.3.2 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -12884,12 +16914,10 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001777 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001760: {} - caniuse-lite@1.0.30001777: {} ccount@2.0.1: {} @@ -12907,6 +16935,10 @@ snapshots: char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + character-entities@2.0.2: {} chardet@2.1.1: {} @@ -12941,6 +16973,8 @@ snapshots: dependencies: consola: 3.4.2 + citty@0.2.2: {} + cjs-module-lexer@1.4.3: {} clean-regexp@1.0.0: @@ -12995,16 +17029,20 @@ snapshots: clsx@2.1.1: {} + cluster-key-slot@1.1.2: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} - colord@2.9.3: {} - colorette@2.0.20: {} + colortranslator@5.0.0: {} + + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} commander@11.1.0: {} @@ -13023,6 +17061,16 @@ snapshots: commondir@1.0.1: {} + compatx@0.2.0: {} + + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -13041,7 +17089,7 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.2: {} + confbox@0.2.4: {} connect-history-api-fallback@2.0.0: {} @@ -13059,6 +17107,12 @@ snapshots: convert-source-map@2.0.0: {} + cookie-es@1.2.3: {} + + cookie-es@2.0.1: {} + + cookie-es@3.1.1: {} + cookie-signature@1.0.7: {} cookie-signature@1.2.2: {} @@ -13081,7 +17135,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 7.0.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 webpack: 5.105.2(esbuild@0.27.3) core-js-compat@3.49.0: @@ -13095,15 +17149,6 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.9.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@6.0.2): dependencies: env-paths: 2.2.1 @@ -13113,6 +17158,17 @@ snapshots: optionalDependencies: typescript: 6.0.2 + crc-32@1.2.2: {} + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.7.0 + + crelt@1.0.6: {} + + croner@10.0.1: {} + cross-env@10.1.0: dependencies: '@epic-web/invariant': 1.0.0 @@ -13124,18 +17180,26 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-declaration-sorter@7.3.0(postcss@8.5.6): + crossws@0.3.5: dependencies: - postcss: 8.5.6 + uncrypto: 0.1.3 + + crossws@0.4.4(srvx@0.11.15): + optionalDependencies: + srvx: 0.11.15 + + css-declaration-sorter@7.3.0(postcss@8.5.9): + dependencies: + postcss: 8.5.9 css-loader@7.1.3(webpack@5.105.2(esbuild@0.27.3)): dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.8) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.8) - postcss-modules-scope: 3.2.1(postcss@8.5.8) - postcss-modules-values: 4.0.0(postcss@8.5.8) + icss-utils: 5.1.0(postcss@8.5.9) + postcss: 8.5.9 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.9) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.9) + postcss-modules-scope: 3.2.1(postcss@8.5.9) + postcss-modules-values: 4.0.0(postcss@8.5.9) postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: @@ -13162,11 +17226,6 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - css-tree@3.2.1: dependencies: mdn-data: 2.27.1 @@ -13180,49 +17239,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.10(postcss@8.5.6): + cssnano-preset-default@7.0.12(postcss@8.5.9): dependencies: browserslist: 4.28.1 - css-declaration-sorter: 7.3.0(postcss@8.5.6) - cssnano-utils: 5.0.1(postcss@8.5.6) - postcss: 8.5.6 - postcss-calc: 10.1.1(postcss@8.5.6) - postcss-colormin: 7.0.5(postcss@8.5.6) - postcss-convert-values: 7.0.8(postcss@8.5.6) - postcss-discard-comments: 7.0.5(postcss@8.5.6) - postcss-discard-duplicates: 7.0.2(postcss@8.5.6) - postcss-discard-empty: 7.0.1(postcss@8.5.6) - postcss-discard-overridden: 7.0.1(postcss@8.5.6) - postcss-merge-longhand: 7.0.5(postcss@8.5.6) - postcss-merge-rules: 7.0.7(postcss@8.5.6) - postcss-minify-font-values: 7.0.1(postcss@8.5.6) - postcss-minify-gradients: 7.0.1(postcss@8.5.6) - postcss-minify-params: 7.0.5(postcss@8.5.6) - postcss-minify-selectors: 7.0.5(postcss@8.5.6) - postcss-normalize-charset: 7.0.1(postcss@8.5.6) - postcss-normalize-display-values: 7.0.1(postcss@8.5.6) - postcss-normalize-positions: 7.0.1(postcss@8.5.6) - postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) - postcss-normalize-string: 7.0.1(postcss@8.5.6) - postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) - postcss-normalize-unicode: 7.0.5(postcss@8.5.6) - postcss-normalize-url: 7.0.1(postcss@8.5.6) - postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) - postcss-ordered-values: 7.0.2(postcss@8.5.6) - postcss-reduce-initial: 7.0.5(postcss@8.5.6) - postcss-reduce-transforms: 7.0.1(postcss@8.5.6) - postcss-svgo: 7.1.0(postcss@8.5.6) - postcss-unique-selectors: 7.0.4(postcss@8.5.6) - - cssnano-utils@5.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - cssnano@7.1.2(postcss@8.5.6): - dependencies: - cssnano-preset-default: 7.0.10(postcss@8.5.6) + css-declaration-sorter: 7.3.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.6 + postcss: 8.5.9 csso@5.0.5: dependencies: @@ -13230,6 +17289,12 @@ snapshots: csstype@3.2.3: {} + d3-path@3.1.0: {} + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + data-urls@7.0.0: dependencies: whatwg-mimetype: 5.0.0 @@ -13237,6 +17302,8 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' + db0@0.3.4: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -13264,7 +17331,9 @@ snapshots: define-lazy-prop@3.0.0: {} - defu@6.1.4: {} + defu@6.1.7: {} + + denque@2.1.0: {} depd@1.1.2: {} @@ -13274,25 +17343,26 @@ snapshots: dequal@2.0.3: {} - destroy@1.2.0: {} + destr@2.0.5: {} - detect-libc@1.0.3: - optional: true + destroy@1.2.0: {} detect-libc@2.1.2: {} detect-node@2.1.0: {} - devalue@5.6.4: {} - devalue@5.7.0: {} + devalue@5.7.1: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 diff-sequences@29.6.3: {} + diff@8.0.4: {} + dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 @@ -13319,20 +17389,69 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + dot-prop@10.1.0: + dependencies: + type-fest: 5.5.0 + + dotenv@17.4.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + ee-first@1.1.1: {} electron-to-chromium@1.5.267: {} + embla-carousel-auto-height@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-auto-scroll@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-autoplay@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-class-names@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-fade@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-vue@8.6.0(vue@3.5.32(typescript@6.0.2)): + dependencies: + embla-carousel: 8.6.0 + embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) + vue: 3.5.32(typescript@6.0.2) + + embla-carousel-wheel-gestures@8.1.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + wheel-gestures: 2.2.48 + + embla-carousel@8.6.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + emojilib@2.4.0: {} emojis-list@3.0.0: {} @@ -13374,6 +17493,8 @@ snapshots: error-stack-parser-es@1.0.5: {} + errx@0.1.0: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -13444,6 +17565,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -13466,7 +17616,7 @@ snapshots: eslint-flat-config-utils@3.1.0: dependencies: - '@eslint/config-helpers': 0.5.3 + '@eslint/config-helpers': 0.5.4 pathe: 2.0.3 eslint-json-compat-utils@0.2.3(eslint@10.2.0(jiti@2.6.1))(jsonc-eslint-parser@3.1.0): @@ -13483,12 +17633,12 @@ snapshots: dependencies: eslint: 10.2.0(jiti@2.6.1) - eslint-plugin-command@3.5.2(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2))(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)): + eslint-plugin-command@3.5.2(@typescript-eslint/rule-tester@8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/typescript-estree@8.58.1(typescript@6.0.2))(@typescript-eslint/utils@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)): dependencies: '@es-joy/jsdoccomment': 0.84.0 '@typescript-eslint/rule-tester': 8.57.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) eslint: 10.2.0(jiti@2.6.1) eslint-plugin-depend@1.5.0(eslint@10.2.0(jiti@2.6.1)): @@ -13537,7 +17687,7 @@ snapshots: eslint-plugin-jsonc@3.1.2(eslint@10.2.0(jiti@2.6.1)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 '@ota-meshi/ast-token-store': 0.3.0 diff-sequences: 29.6.3 @@ -13568,7 +17718,7 @@ snapshots: eslint-plugin-perfectionist@5.8.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2): dependencies: - '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) eslint: 10.2.0(jiti@2.6.1) natural-orderby: 5.0.0 transitivePeerDependencies: @@ -13582,7 +17732,7 @@ snapshots: jsonc-eslint-parser: 3.1.0 pathe: 2.0.3 pnpm-workspace-yaml: 1.6.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 yaml: 2.8.2 yaml-eslint-parser: 2.0.0 @@ -13590,16 +17740,16 @@ snapshots: dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - comment-parser: 1.4.5 + comment-parser: 1.4.6 eslint: 10.2.0(jiti@2.6.1) - jsdoc-type-pratt-parser: 7.1.1 + jsdoc-type-pratt-parser: 7.2.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 eslint-plugin-toml@1.3.1(eslint@10.2.0(jiti@2.6.1)): dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3 @@ -13628,13 +17778,13 @@ snapshots: semver: 7.7.4 strip-indent: 4.1.1 - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)): dependencies: eslint: 10.2.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/eslint-plugin': 8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) - eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1)))(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.2.0(jiti@2.6.1))): + eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1)))(@typescript-eslint/parser@8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.2.0(jiti@2.6.1))): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) eslint: 10.2.0(jiti@2.6.1) @@ -13646,11 +17796,11 @@ snapshots: xml-name-validator: 4.0.0 optionalDependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@10.2.0(jiti@2.6.1)) - '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) eslint-plugin-yml@3.3.1(eslint@10.2.0(jiti@2.6.1)): dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 '@eslint/plugin-kit': 0.6.1 '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3 @@ -13714,7 +17864,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.4 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -13763,10 +17913,18 @@ snapshots: etag@1.8.1: {} + event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} + events-universal@1.0.1: + dependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + events@3.3.0: {} eventsource-parser@3.0.6: {} @@ -13775,6 +17933,18 @@ snapshots: dependencies: eventsource-parser: 3.0.6 + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + expect-type@1.3.0: {} exponential-backoff@3.1.3: {} @@ -13861,10 +18031,24 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} + fast-npm-meta@1.4.2: {} + + fast-safe-stringify@2.1.1: {} + fast-string-truncated-width@1.2.1: {} fast-string-width@1.1.0: @@ -13877,6 +18061,10 @@ snapshots: dependencies: fast-string-width: 1.1.0 + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + fault@2.0.1: dependencies: format: 0.2.2 @@ -13885,10 +18073,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -13899,6 +18083,8 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-uri-to-path@1.0.0: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -13941,7 +18127,7 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 - mlly: 1.8.0 + mlly: 1.8.2 rollup: 4.60.1 flat-cache@4.0.1: @@ -13951,11 +18137,68 @@ snapshots: flat@5.0.2: {} - flatted@3.3.3: {} + flatted@3.3.3: {} + + follow-redirects@1.15.11(debug@4.4.3): + optionalDependencies: + debug: 4.4.3 + + fontaine@0.8.0: + dependencies: + '@capsizecss/unpack': 4.0.0 + css-tree: 3.2.1 + magic-regexp: 0.10.0 + magic-string: 0.30.21 + pathe: 2.0.3 + ufo: 1.6.3 + unplugin: 2.3.11 + + fontkitten@1.0.3: + dependencies: + tiny-inflate: 1.0.3 - follow-redirects@1.15.11(debug@4.4.3): + fontless@0.2.1(db0@0.3.4)(ioredis@5.10.1)(vite@8.0.8): + dependencies: + consola: 3.4.2 + css-tree: 3.2.1 + defu: 6.1.7 + esbuild: 0.27.7 + fontaine: 0.8.0 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + ohash: 2.0.11 + pathe: 2.0.3 + ufo: 1.6.3 + unifont: 0.7.4 + unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) optionalDependencies: - debug: 4.4.3 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - uploadthing + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 format@0.2.2: {} @@ -13963,6 +18206,15 @@ snapshots: fraction.js@5.3.4: {} + framer-motion@12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + motion-dom: 12.38.0 + motion-utils: 12.36.0 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + fresh@0.5.2: {} fresh@2.0.0: {} @@ -13985,6 +18237,10 @@ snapshots: function-bind@1.1.2: {} + fuse.js@7.3.0: {} + + fzf@0.5.2: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -14004,15 +18260,21 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-port-please@3.2.0: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@8.0.1: {} + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 + giget@3.2.0: {} + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -14029,22 +18291,60 @@ snapshots: glob-to-regexp@0.4.1: {} + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@13.0.0: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 minipass: 7.1.2 path-scurry: 2.0.1 + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + globals@15.15.0: {} globals@17.4.0: {} + globby@16.2.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + globrex@0.1.2: {} gopd@1.2.0: {} graceful-fs@4.2.11: {} + gzip-size@7.0.0: + 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 + handle-thing@2.0.1: {} has-flag@4.0.0: {} @@ -14055,6 +18355,26 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hey-listen@1.0.8: {} + highlight.js@10.7.3: {} hono@4.12.6: {} @@ -14065,7 +18385,7 @@ snapshots: hosted-git-info@9.0.2: dependencies: - lru-cache: 11.2.7 + lru-cache: 11.3.2 hpack.js@2.1.6: dependencies: @@ -14084,6 +18404,8 @@ snapshots: html-entities@2.6.0: {} + html-void-elements@3.0.0: {} + htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 @@ -14150,6 +18472,8 @@ snapshots: transitivePeerDependencies: - debug + http-shutdown@1.2.2: {} + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -14157,6 +18481,10 @@ snapshots: transitivePeerDependencies: - supports-color + httpxy@0.5.0: {} + + human-signals@5.0.0: {} + hyperdyperid@1.2.0: {} iconv-lite@0.4.24: @@ -14171,21 +18499,27 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.8): + icss-utils@5.1.0(postcss@8.5.9): dependencies: - postcss: 8.5.8 + postcss: 8.5.9 + + ieee754@1.2.1: {} ignore-walk@8.0.0: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 ignore@5.3.2: {} ignore@7.0.5: {} + image-meta@0.2.2: {} + image-size@0.5.5: optional: true + immer@11.1.4: {} + immutable@5.1.4: {} import-fresh@3.3.1: @@ -14193,28 +18527,56 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + 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: {} indent-string@4.0.0: {} indent-string@5.0.0: {} + individual@3.0.0: {} + inherits@2.0.3: {} inherits@2.0.4: {} + ini@4.1.1: {} + ini@6.0.0: {} injection-js@2.6.1: dependencies: tslib: 2.8.1 + ioredis@5.10.1: + dependencies: + '@ioredis/commands': 1.5.1 + cluster-key-slot: 1.1.2 + debug: 4.4.3 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + ip-address@10.1.0: {} ipaddr.js@1.9.1: {} ipaddr.js@2.3.0: {} + iron-webcrypto@1.2.1: {} + is-arrayish@0.2.1: {} is-binary-path@2.1.0: @@ -14249,6 +18611,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-module@1.0.0: {} @@ -14257,6 +18624,8 @@ snapshots: is-number@7.0.0: {} + is-path-inside@4.0.0: {} + is-plain-obj@3.0.0: {} is-plain-object@2.0.4: @@ -14277,6 +18646,10 @@ snapshots: dependencies: '@types/estree': 1.0.8 + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + is-unicode-supported@2.1.0: {} is-what@3.14.1: {} @@ -14285,6 +18658,8 @@ snapshots: is-what@5.5.0: {} + is-windows@1.0.2: {} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -14293,22 +18668,30 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.1: {} + isexe@4.0.0: {} isobject@3.0.1: {} + isomorphic.js@0.2.5: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.4 transitivePeerDependencies: - supports-color + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jest-worker@27.5.1: dependencies: '@types/node': 25.5.2 @@ -14407,13 +18790,21 @@ snapshots: kind-of@6.0.3: {} + kleur@4.1.5: {} + + klona@2.0.6: {} + knitwork@1.3.0: {} - launch-editor@2.12.0: + launch-editor@2.13.2: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + less-loader@12.3.1(less@4.4.2)(webpack@5.105.2(esbuild@0.27.3)): dependencies: less: 4.4.2 @@ -14453,6 +18844,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lib0@0.2.117: + dependencies: + isomorphic.js: 0.2.5 + license-webpack-plugin@4.0.2(webpack@5.105.2(esbuild@0.27.3)): dependencies: webpack-sources: 3.3.3 @@ -14512,6 +18907,35 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + linkifyjs@4.3.2: {} + + listhen@1.9.1(srvx@0.11.15): + dependencies: + '@parcel/watcher': 2.5.6 + '@parcel/watcher-wasm': 2.5.6 + citty: 0.2.2 + consola: 3.4.2 + crossws: 0.4.4(srvx@0.11.15) + defu: 6.1.7 + get-port-please: 3.2.0 + h3: 1.15.11 + http-shutdown: 1.2.2 + jiti: 2.6.1 + mlly: 1.8.2 + node-forge: 1.4.0 + pathe: 2.0.3 + std-env: 4.0.0 + tinyclip: 0.1.12 + ufo: 1.6.3 + untun: 0.1.3 + uqr: 0.1.3 + transitivePeerDependencies: + - srvx + listr2@9.0.5: dependencies: cli-truncate: 5.1.1 @@ -14563,12 +18987,18 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.defaults@4.2.0: {} + + lodash.isarguments@3.1.0: {} + lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} lodash.uniq@4.5.0: {} + lodash@4.18.1: {} + log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 @@ -14584,9 +19014,7 @@ snapshots: longest-streak@3.1.0: {} - lru-cache@11.2.4: {} - - lru-cache@11.2.7: {} + lru-cache@10.4.3: {} lru-cache@11.3.2: {} @@ -14600,7 +19028,7 @@ snapshots: dependencies: estree-walker: 3.0.3 magic-string: 0.30.21 - mlly: 1.8.0 + mlly: 1.8.2 regexp-tree: 0.1.27 type-level-regexp: 0.1.17 ufo: 1.6.3 @@ -14614,6 +19042,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magicast@0.5.2: + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + source-map-js: 1.2.1 + make-dir@2.1.0: dependencies: pify: 4.0.1 @@ -14636,6 +19070,15 @@ snapshots: transitivePeerDependencies: - supports-color + markdown-it@14.1.1: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + markdown-table@3.0.4: {} marked-terminal@7.3.0(marked@9.1.6): @@ -14649,6 +19092,8 @@ snapshots: node-emoji: 2.2.0 supports-hyperlinks: 3.2.0 + marked@17.0.6: {} + marked@9.1.6: {} math-intrinsics@1.1.0: {} @@ -14762,6 +19207,18 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -14780,10 +19237,10 @@ snapshots: mdn-data@2.0.28: {} - mdn-data@2.12.2: {} - mdn-data@2.27.1: {} + mdurl@2.0.0: {} + media-typer@0.3.0: {} media-typer@1.1.0: {} @@ -14807,6 +19264,8 @@ snapshots: merge-stream@2.0.0: {} + merge2@1.4.1: {} + methods@1.1.2: {} micromark-core-commonmark@2.0.3: @@ -15036,6 +19495,10 @@ snapshots: mime@1.6.0: {} + mime@4.1.0: {} + + mimic-fn@4.0.0: {} + mimic-function@5.0.1: {} min-indent@1.0.1: {} @@ -15048,14 +19511,14 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.2.4: - dependencies: - brace-expansion: 5.0.4 - minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -15094,36 +19557,31 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@2.1.0: {} + mitt@3.0.1: {} mkdist@2.4.1(sass@1.97.3)(typescript@6.0.2)(vue-tsc@3.2.6(typescript@6.0.2))(vue@3.5.32(typescript@6.0.2)): dependencies: - autoprefixer: 10.4.23(postcss@8.5.6) + autoprefixer: 10.4.27(postcss@8.5.9) citty: 0.1.6 - cssnano: 7.1.2(postcss@8.5.6) - defu: 6.1.4 + cssnano: 7.1.4(postcss@8.5.9) + defu: 6.1.7 esbuild: 0.25.12 jiti: 1.21.7 - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 pkg-types: 2.3.0 - postcss: 8.5.6 - postcss-nested: 7.0.2(postcss@8.5.6) - semver: 7.7.3 - tinyglobby: 0.2.15 + postcss: 8.5.9 + postcss-nested: 7.0.2(postcss@8.5.9) + semver: 7.7.4 + tinyglobby: 0.2.16 optionalDependencies: sass: 1.97.3 typescript: 6.0.2 vue: 3.5.32(typescript@6.0.2) vue-tsc: 3.2.6(typescript@6.0.2) - mlly@1.8.0: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - mlly@1.8.2: dependencies: acorn: 8.16.0 @@ -15131,8 +19589,29 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.3 + mocked-exports@0.1.1: {} + module-replacements@2.11.0: {} + motion-dom@12.38.0: + dependencies: + motion-utils: 12.36.0 + + motion-utils@12.36.0: {} + + motion-v@2.2.0(@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vue@3.5.32(typescript@6.0.2)): + dependencies: + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) + framer-motion: 12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + hey-listen: 1.0.8 + motion-dom: 12.38.0 + motion-utils: 12.36.0 + vue: 3.5.32(typescript@6.0.2) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - react + - react-dom + mri@1.2.0: {} mrmime@2.0.1: {} @@ -15175,6 +19654,8 @@ snapshots: nanoid@3.3.11: {} + nanotar@0.3.0: {} + natural-compare@1.4.0: {} natural-orderby@5.0.0: {} @@ -15182,7 +19663,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.3 + sax: 1.6.0 optional: true negotiator@0.6.3: {} @@ -15193,40 +19674,11 @@ snapshots: neo-async@2.6.2: {} - ng-packagr@21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.60.0) - '@rollup/wasm-node': 4.53.5 - ajv: 8.18.0 - ansi-colors: 4.1.3 - browserslist: 4.28.1 - chokidar: 5.0.0 - commander: 14.0.2 - dependency-graph: 1.0.0 - esbuild: 0.27.3 - find-cache-directory: 6.0.0 - injection-js: 2.6.1 - jsonc-parser: 3.3.1 - less: 4.5.1 - ora: 9.3.0 - piscina: 5.1.4 - postcss: 8.5.8 - rollup-plugin-dts: 6.4.1(rollup@4.60.0)(typescript@5.9.3) - rxjs: 7.8.2 - sass: 1.97.3 - tinyglobby: 0.2.15 - tslib: 2.8.1 - typescript: 5.9.3 - optionalDependencies: - rollup: 4.60.0 - - ng-packagr@21.2.2(@angular/compiler-cli@21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2))(tslib@2.8.1)(typescript@6.0.2): + ng-packagr@21.2.2(@angular/compiler-cli@21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.2.7(@angular/compiler@21.2.7)(typescript@6.0.2) - '@rollup/plugin-json': 6.1.0(rollup@4.60.0) + '@angular/compiler-cli': 21.2.8(@angular/compiler@21.2.8)(typescript@6.0.2) + '@rollup/plugin-json': 6.1.0(rollup@4.60.1) '@rollup/wasm-node': 4.53.5 ajv: 8.18.0 ansi-colors: 4.1.3 @@ -15234,29 +19686,132 @@ snapshots: chokidar: 5.0.0 commander: 14.0.2 dependency-graph: 1.0.0 - esbuild: 0.27.3 + esbuild: 0.27.7 find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 less: 4.5.1 ora: 9.3.0 piscina: 5.1.4 - postcss: 8.5.8 - rollup-plugin-dts: 6.4.1(rollup@4.60.0)(typescript@6.0.2) + postcss: 8.5.9 + rollup-plugin-dts: 6.4.1(rollup@4.60.1)(typescript@6.0.2) rxjs: 7.8.2 sass: 1.97.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tslib: 2.8.1 typescript: 6.0.2 optionalDependencies: - rollup: 4.60.0 - optional: true + rollup: 4.60.1 + tailwindcss: 4.2.2 + + nitropack@2.13.3(encoding@0.1.13)(rolldown@1.0.0-rc.15)(srvx@0.11.15): + dependencies: + '@cloudflare/kv-asset-handler': 0.4.2 + '@rollup/plugin-alias': 6.0.0(rollup@4.60.1) + '@rollup/plugin-commonjs': 29.0.2(rollup@4.60.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.60.1) + '@rollup/plugin-json': 6.1.0(rollup@4.60.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.60.1) + '@rollup/plugin-terser': 1.0.0(rollup@4.60.1) + '@vercel/nft': 1.5.0(encoding@0.1.13)(rollup@4.60.1) + archiver: 7.0.1 + c12: 3.3.4(magicast@0.5.2) + chokidar: 5.0.0 + citty: 0.2.2 + compatx: 0.2.0 + confbox: 0.2.4 + consola: 3.4.2 + cookie-es: 2.0.1 + croner: 10.0.1 + crossws: 0.3.5 + db0: 0.3.4 + defu: 6.1.7 + destr: 2.0.5 + dot-prop: 10.1.0 + esbuild: 0.27.7 + escape-string-regexp: 5.0.0 + etag: 1.8.1 + exsolve: 1.0.8 + globby: 16.2.0 + gzip-size: 7.0.0 + h3: 1.15.11 + hookable: 5.5.3 + httpxy: 0.5.0 + ioredis: 5.10.1 + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + listhen: 1.9.1(srvx@0.11.15) + magic-string: 0.30.21 + magicast: 0.5.2 + mime: 4.1.0 + mlly: 1.8.2 + 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.60.1 + rollup-plugin-visualizer: 7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1) + 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: 4.0.0 + ufo: 1.6.3 + ultrahtml: 1.6.0 + uncrypto: 0.1.3 + unctx: 2.5.0 + unenv: 2.0.0-rc.24 + unimport: 6.0.2 + unplugin-utils: 0.3.1 + unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) + untyped: 2.0.0 + unwasm: 0.5.3 + youch: 4.1.1 + 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 + - srvx + - supports-color + - uploadthing node-addon-api@6.1.0: optional: true - node-addon-api@7.1.1: - optional: true + node-addon-api@7.1.1: {} node-emoji@2.2.0: dependencies: @@ -15265,11 +19820,23 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-forge@1.4.0: {} + node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.1.2 optional: true + node-gyp-build@4.8.4: {} + node-gyp@12.1.0: dependencies: env-paths: 2.2.1 @@ -15280,13 +19847,19 @@ snapshots: proc-log: 6.1.0 semver: 7.7.4 tar: 7.5.2 - tinyglobby: 0.2.15 - which: 6.0.0 + tinyglobby: 0.2.16 + which: 6.0.1 transitivePeerDependencies: - supports-color + node-mock-http@1.0.4: {} + node-releases@2.0.27: {} + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + nopt@9.0.0: dependencies: abbrev: 4.0.0 @@ -15335,9 +19908,157 @@ snapshots: transitivePeerDependencies: - supports-color - nth-check@2.1.1: + npm-run-path@5.3.0: + 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.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2): + dependencies: + '@dxup/nuxt': 0.4.0(magicast@0.5.2)(typescript@6.0.2) + '@nuxt/cli': 3.34.0(@nuxt/schema@4.4.2)(cac@6.7.14)(magicast@0.5.2) + '@nuxt/devtools': 3.2.4(@vitejs/devtools@0.1.13)(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)) + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@nuxt/nitro-server': 4.4.2(@babel/core@7.29.0)(db0@0.3.4)(encoding@0.1.13)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0))(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@parcel/watcher@2.5.6)(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(@vue/compiler-sfc@3.5.32)(cac@6.7.14)(db0@0.3.4)(encoding@0.1.13)(eslint@10.2.0(jiti@2.6.1))(ioredis@5.10.1)(less@4.5.1)(lightningcss@1.32.0)(magicast@0.5.2)(optionator@0.9.4)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(rolldown@1.0.0-rc.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1))(rollup@4.60.1)(sass@1.97.3)(srvx@0.11.15)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.8)(vue-tsc@3.2.6(typescript@6.0.2))(yaml@2.8.2))(rolldown@1.0.0-rc.15)(srvx@0.11.15)(typescript@6.0.2) + '@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(041258faa70147792a1a09054f226794) + '@unhead/vue': link:packages/vue + '@vue/shared': 3.5.32 + c12: 3.3.4(magicast@0.5.2) + chokidar: 5.0.0 + compatx: 0.2.0 + consola: 3.4.2 + cookie-es: 2.0.1 + defu: 6.1.7 + devalue: 5.7.0 + 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.2 + 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.9.2)(@emnapi/runtime@1.9.2) + oxc-parser: 0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + oxc-transform: 0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + oxc-walker: 0.7.0(oxc-parser@0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) + 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.16 + 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@6.0.2) + vue-router: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@6.0.2)(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) + optionalDependencies: + '@parcel/watcher': 2.5.6 + '@types/node': 25.5.2 + 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 + - srvx + - stylelint + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - utf-8-validate + - vite + - vls + - vti + - vue-tsc + - xml2js + - yaml + + nypm@0.6.5: dependencies: - boolbase: 1.0.0 + citty: 0.2.2 + pathe: 2.0.3 + tinyexec: 1.0.4 object-assign@4.1.1: {} @@ -15349,6 +20070,18 @@ snapshots: obug@2.1.1: {} + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.3 + + ofetch@2.0.0-alpha.3: {} + + ohash@2.0.11: {} + + on-change@6.0.2: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -15359,10 +20092,22 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + onetime@7.0.0: dependencies: mimic-function: 5.0.1 + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.5: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 + regex-recursion: 6.0.2 + open@10.2.0: dependencies: default-browser: 5.4.0 @@ -15402,7 +20147,63 @@ snapshots: ordered-binary@1.6.0: optional: true - oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1): + orderedmap@2.1.1: {} + + oxc-minify@0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + 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.9.2)(@emnapi/runtime@1.9.2) + '@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.9.2)(@emnapi/runtime@1.9.2): + 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.9.2)(@emnapi/runtime@1.9.2) + '@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-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: '@oxc-project/types': 0.124.0 optionalDependencies: @@ -15422,7 +20223,7 @@ snapshots: '@oxc-parser/binding-linux-x64-gnu': 0.124.0 '@oxc-parser/binding-linux-x64-musl': 0.124.0 '@oxc-parser/binding-openharmony-arm64': 0.124.0 - '@oxc-parser/binding-wasm32-wasi': 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + '@oxc-parser/binding-wasm32-wasi': 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@oxc-parser/binding-win32-arm64-msvc': 0.124.0 '@oxc-parser/binding-win32-ia32-msvc': 0.124.0 '@oxc-parser/binding-win32-x64-msvc': 0.124.0 @@ -15430,15 +20231,50 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - oxc-walker@0.7.0(oxc-parser@0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)): + oxc-transform@0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + 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.9.2)(@emnapi/runtime@1.9.2) + '@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.9.2)(@emnapi/runtime@1.9.2)): + dependencies: + magic-regexp: 0.10.0 + oxc-parser: 0.117.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + + oxc-walker@0.7.0(oxc-parser@0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)): dependencies: magic-regexp: 0.10.0 - oxc-parser: 0.124.0(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + oxc-parser: 0.124.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-limit@7.3.0: + dependencies: + yocto-queue: 1.2.2 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -15451,6 +20287,8 @@ snapshots: is-network-error: 1.3.0 retry: 0.13.1 + package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} pacote@21.3.1: @@ -15530,29 +20368,36 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-scurry@2.0.1: dependencies: - lru-cache: 11.2.7 + lru-cache: 11.3.2 minipass: 7.1.2 path-to-regexp@0.1.12: {} path-to-regexp@8.3.0: {} + pathe@1.1.2: {} + pathe@2.0.3: {} perfect-debounce@1.0.0: {} - perfect-debounce@2.0.0: {} + perfect-debounce@2.1.0: {} picocolors@1.1.1: {} picomatch@2.3.1: {} - picomatch@4.0.3: {} - picomatch@4.0.4: {} pify@4.0.1: @@ -15586,12 +20431,12 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 pkg-types@2.3.0: dependencies: - confbox: 0.2.2 + confbox: 0.2.4 exsolve: 1.0.8 pathe: 2.0.3 @@ -15618,53 +20463,42 @@ snapshots: dependencies: yaml: 2.8.2 - postcss-calc@10.1.1(postcss@8.5.6): + postcss-calc@10.1.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.5(postcss@8.5.6): + postcss-colormin@7.0.7(postcss@8.5.9): dependencies: + '@colordx/core': 5.0.3 browserslist: 4.28.1 caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.8(postcss@8.5.6): + postcss-convert-values@7.0.9(postcss@8.5.9): dependencies: browserslist: 4.28.1 - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.5(postcss@8.5.6): + postcss-discard-comments@7.0.6(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 - postcss-discard-duplicates@7.0.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-empty@7.0.1(postcss@8.5.6): + postcss-discard-duplicates@7.0.2(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 - postcss-discard-overridden@7.0.1(postcss@8.5.6): + postcss-discard-empty@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.105.2(esbuild@0.27.3)): + postcss-discard-overridden@7.0.1(postcss@8.5.9): dependencies: - cosmiconfig: 9.0.0(typescript@5.9.3) - jiti: 2.6.1 - postcss: 8.5.6 - semver: 7.7.4 - optionalDependencies: - webpack: 5.105.2(esbuild@0.27.3) - transitivePeerDependencies: - - typescript + postcss: 8.5.9 postcss-loader@8.2.0(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(esbuild@0.27.3)): dependencies: @@ -15679,151 +20513,151 @@ snapshots: postcss-media-query-parser@0.2.3: {} - postcss-merge-longhand@7.0.5(postcss@8.5.6): + postcss-merge-longhand@7.0.5(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - stylehacks: 7.0.7(postcss@8.5.6) + stylehacks: 7.0.7(postcss@8.5.9) - postcss-merge-rules@7.0.7(postcss@8.5.6): + 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.6) - postcss: 8.5.6 + 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.6): + postcss-minify-font-values@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.1(postcss@8.5.6): + postcss-minify-gradients@7.0.2(postcss@8.5.9): dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.1(postcss@8.5.6) - postcss: 8.5.6 + '@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.5(postcss@8.5.6): + postcss-minify-params@7.0.6(postcss@8.5.9): dependencies: browserslist: 4.28.1 - cssnano-utils: 5.0.1(postcss@8.5.6) - postcss: 8.5.6 + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.5(postcss@8.5.6): + postcss-minify-selectors@7.0.6(postcss@8.5.9): dependencies: cssesc: 3.0.0 - postcss: 8.5.6 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 - postcss-modules-extract-imports@3.1.0(postcss@8.5.8): + postcss-modules-extract-imports@3.1.0(postcss@8.5.9): dependencies: - postcss: 8.5.8 + postcss: 8.5.9 - postcss-modules-local-by-default@4.2.0(postcss@8.5.8): + postcss-modules-local-by-default@4.2.0(postcss@8.5.9): dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 + icss-utils: 5.1.0(postcss@8.5.9) + postcss: 8.5.9 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.8): + postcss-modules-scope@3.2.1(postcss@8.5.9): dependencies: - postcss: 8.5.8 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 - postcss-modules-values@4.0.0(postcss@8.5.8): + postcss-modules-values@4.0.0(postcss@8.5.9): dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 + icss-utils: 5.1.0(postcss@8.5.9) + postcss: 8.5.9 - postcss-nested@7.0.2(postcss@8.5.6): + postcss-nested@7.0.2(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 - postcss-normalize-charset@7.0.1(postcss@8.5.6): + postcss-normalize-charset@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 - postcss-normalize-display-values@7.0.1(postcss@8.5.6): + postcss-normalize-display-values@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.1(postcss@8.5.6): + postcss-normalize-positions@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): + postcss-normalize-repeat-style@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.1(postcss@8.5.6): + postcss-normalize-string@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): + postcss-normalize-timing-functions@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.5(postcss@8.5.6): + postcss-normalize-unicode@7.0.6(postcss@8.5.9): dependencies: browserslist: 4.28.1 - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.1(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 - postcss-normalize-whitespace@7.0.1(postcss@8.5.6): + postcss-normalize-whitespace@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.2(postcss@8.5.6): + postcss-ordered-values@7.0.2(postcss@8.5.9): dependencies: - cssnano-utils: 5.0.1(postcss@8.5.6) - postcss: 8.5.6 + cssnano-utils: 5.0.1(postcss@8.5.9) + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.5(postcss@8.5.6): + postcss-reduce-initial@7.0.6(postcss@8.5.9): dependencies: browserslist: 4.28.1 caniuse-api: 3.0.0 - postcss: 8.5.6 + postcss: 8.5.9 - postcss-reduce-transforms@7.0.1(postcss@8.5.6): + postcss-reduce-transforms@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - postcss-safe-parser@7.0.1(postcss@8.5.8): + postcss-safe-parser@7.0.1(postcss@8.5.9): dependencies: - postcss: 8.5.8 + postcss: 8.5.9 postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.1.0(postcss@8.5.6): + postcss-svgo@7.1.1(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-value-parser: 4.2.0 - svgo: 4.0.0 + svgo: 4.0.1 - postcss-unique-selectors@7.0.4(postcss@8.5.6): + postcss-unique-selectors@7.0.5(postcss@8.5.9): dependencies: - postcss: 8.5.6 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 postcss-value-parser@4.2.0: {} @@ -15834,7 +20668,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.8: + postcss@8.5.9: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -15858,11 +20692,118 @@ snapshots: process-nextick-args@2.0.1: {} + process@0.11.10: {} + promise-retry@2.0.1: dependencies: err-code: 2.0.3 retry: 0.12.0 + property-information@7.1.0: {} + + prosemirror-changeset@2.4.0: + dependencies: + prosemirror-transform: 1.12.0 + + prosemirror-collab@1.3.1: + dependencies: + prosemirror-state: 1.4.4 + + prosemirror-commands@1.7.1: + dependencies: + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-dropcursor@1.8.2: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 + + prosemirror-gapcursor@1.4.1: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 + + prosemirror-history@1.5.0: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 + rope-sequence: 1.3.4 + + prosemirror-inputrules@1.5.1: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-keymap@1.2.3: + dependencies: + prosemirror-state: 1.4.4 + w3c-keyname: 2.2.8 + + prosemirror-markdown@1.13.4: + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 14.1.1 + prosemirror-model: 1.25.4 + + prosemirror-menu@1.3.0: + dependencies: + crelt: 1.0.6 + prosemirror-commands: 1.7.1 + prosemirror-history: 1.5.0 + prosemirror-state: 1.4.4 + + prosemirror-model@1.25.4: + dependencies: + orderedmap: 2.1.1 + + prosemirror-schema-basic@1.2.4: + dependencies: + prosemirror-model: 1.25.4 + + prosemirror-schema-list@1.5.1: + dependencies: + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-state@1.4.4: + dependencies: + prosemirror-model: 1.25.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 + + prosemirror-tables@1.8.5: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 + + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8): + dependencies: + '@remirror/core-constants': 3.0.0 + escape-string-regexp: 4.0.0 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 + + prosemirror-transform@1.12.0: + dependencies: + prosemirror-model: 1.25.4 + + prosemirror-view@1.41.8: + dependencies: + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -15871,6 +20812,15 @@ snapshots: prr@1.0.1: optional: true + publint@0.3.18: + dependencies: + '@publint/pack': 0.1.4 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + sade: 1.8.1 + + punycode.js@2.3.1: {} + punycode@2.3.1: {} pure-rand@7.0.1: {} @@ -15889,6 +20839,10 @@ snapshots: quansync@1.0.0: {} + queue-microtask@1.2.3: {} + + radix3@1.1.2: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -15909,28 +20863,38 @@ snapshots: iconv-lite: 0.7.1 unpipe: 1.0.0 - react-dom@19.2.4(react@19.2.4): + rc9@3.0.1: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + + react-dom@19.2.5(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 scheduler: 0.27.0 react-is@17.0.2: {} - react-router-dom@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router-dom@7.14.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-router: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-router: 7.14.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router@7.14.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: cookie: 1.1.1 - react: 19.2.4 + react: 19.2.5 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.2.4(react@19.2.4) + react-dom: 19.2.5(react@19.2.5) + + react@19.2.5: {} - react@19.2.4: {} + read-yaml-file@2.1.0: + dependencies: + js-yaml: 4.1.1 + strip-bom: 4.0.0 readable-stream@2.3.8: dependencies: @@ -15948,6 +20912,18 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.9 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -15961,6 +20937,12 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + refa@0.12.1: dependencies: '@eslint-community/regexpp': 4.12.2 @@ -15975,6 +20957,16 @@ snapshots: regex-parser@2.3.1: {} + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + regexp-ast-analysis@0.7.1: dependencies: '@eslint-community/regexpp': 4.12.2 @@ -15997,6 +20989,22 @@ snapshots: dependencies: jsesc: 3.1.0 + reka-ui@2.9.3(vue@3.5.32(typescript@6.0.2)): + dependencies: + '@floating-ui/dom': 1.7.6 + '@floating-ui/vue': 1.1.11(vue@3.5.32(typescript@6.0.2)) + '@internationalized/date': 3.12.0 + '@internationalized/number': 3.6.5 + '@tanstack/vue-virtual': 3.13.23(vue@3.5.32(typescript@6.0.2)) + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@6.0.2)) + aria-hidden: 1.2.6 + defu: 6.1.7 + ohash: 2.0.11 + vue: 3.5.32(typescript@6.0.2) + transitivePeerDependencies: + - '@vue/composition-api' + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -16007,6 +21015,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve-url-loader@5.0.0: @@ -16014,7 +21024,7 @@ snapshots: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 2.0.4 - postcss: 8.5.8 + postcss: 8.5.9 source-map: 0.6.1 resolve@1.22.11: @@ -16032,33 +21042,53 @@ snapshots: retry@0.13.1: {} + reusify@1.1.0: {} + rfdc@1.4.1: {} - rolldown@1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1): + rolldown@1.0.0-rc.13: dependencies: - '@oxc-project/types': 0.122.0 - '@rolldown/pluginutils': 1.0.0-rc.12 + '@oxc-project/types': 0.123.0 + '@rolldown/pluginutils': 1.0.0-rc.13 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.12 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 - '@rolldown/binding-darwin-x64': 1.0.0-rc.12 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - rolldown@1.0.0-rc.4: + '@rolldown/binding-android-arm64': 1.0.0-rc.13 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.13 + '@rolldown/binding-darwin-x64': 1.0.0-rc.13 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.13 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.13 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.13 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.13 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.13 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.13 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.13 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.13 + + rolldown@1.0.0-rc.15: + dependencies: + '@oxc-project/types': 0.124.0 + '@rolldown/pluginutils': 1.0.0-rc.15 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.15 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 + '@rolldown/binding-darwin-x64': 1.0.0-rc.15 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 + + rolldown@1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: '@oxc-project/types': 0.113.0 '@rolldown/pluginutils': 1.0.0-rc.4 @@ -16073,122 +21103,36 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' rollup-plugin-analyzer@4.0.0: {} - rollup-plugin-dts@6.3.0(rollup@4.53.5)(typescript@6.0.2): - dependencies: - magic-string: 0.30.21 - rollup: 4.53.5 - typescript: 6.0.2 - optionalDependencies: - '@babel/code-frame': 7.27.1 - - rollup-plugin-dts@6.4.1(rollup@4.60.0)(typescript@5.9.3): - dependencies: - '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 - convert-source-map: 2.0.0 - magic-string: 0.30.21 - rollup: 4.60.0 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.29.0 - - rollup-plugin-dts@6.4.1(rollup@4.60.0)(typescript@6.0.2): + rollup-plugin-dts@6.4.1(rollup@4.60.1)(typescript@6.0.2): dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 convert-source-map: 2.0.0 magic-string: 0.30.21 - rollup: 4.60.0 + rollup: 4.60.1 typescript: 6.0.2 optionalDependencies: '@babel/code-frame': 7.29.0 - optional: true - - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1))(rollup@4.53.5): - dependencies: - open: 11.0.0 - picomatch: 4.0.3 - source-map: 0.7.6 - yargs: 18.0.0 - optionalDependencies: - rolldown: 1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) - rollup: 4.53.5 - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1))(rollup@4.60.1): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.15)(rollup@4.60.1): dependencies: open: 11.0.0 - picomatch: 4.0.3 + picomatch: 4.0.4 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) + rolldown: 1.0.0-rc.15 rollup: 4.60.1 - rollup@4.53.5: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 - fsevents: 2.3.3 - - rollup@4.60.0: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.0 - '@rollup/rollup-android-arm64': 4.60.0 - '@rollup/rollup-darwin-arm64': 4.60.0 - '@rollup/rollup-darwin-x64': 4.60.0 - '@rollup/rollup-freebsd-arm64': 4.60.0 - '@rollup/rollup-freebsd-x64': 4.60.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.0 - '@rollup/rollup-linux-arm-musleabihf': 4.60.0 - '@rollup/rollup-linux-arm64-gnu': 4.60.0 - '@rollup/rollup-linux-arm64-musl': 4.60.0 - '@rollup/rollup-linux-loong64-gnu': 4.60.0 - '@rollup/rollup-linux-loong64-musl': 4.60.0 - '@rollup/rollup-linux-ppc64-gnu': 4.60.0 - '@rollup/rollup-linux-ppc64-musl': 4.60.0 - '@rollup/rollup-linux-riscv64-gnu': 4.60.0 - '@rollup/rollup-linux-riscv64-musl': 4.60.0 - '@rollup/rollup-linux-s390x-gnu': 4.60.0 - '@rollup/rollup-linux-x64-gnu': 4.60.0 - '@rollup/rollup-linux-x64-musl': 4.60.0 - '@rollup/rollup-openbsd-x64': 4.60.0 - '@rollup/rollup-openharmony-arm64': 4.60.0 - '@rollup/rollup-win32-arm64-msvc': 4.60.0 - '@rollup/rollup-win32-ia32-msvc': 4.60.0 - '@rollup/rollup-win32-x64-gnu': 4.60.0 - '@rollup/rollup-win32-x64-msvc': 4.60.0 - fsevents: 2.3.3 - rollup@4.60.1: dependencies: '@types/estree': 1.0.8 @@ -16220,6 +21164,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.1 fsevents: 2.3.3 + rope-sequence@1.3.4: {} + + rou3@0.8.1: {} + router@2.2.0: dependencies: debug: 4.4.3 @@ -16232,6 +21180,10 @@ snapshots: run-applescript@7.1.0: {} + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -16259,9 +21211,9 @@ snapshots: immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.5.6 - sax@1.4.3: {} + sax@1.6.0: {} saxes@6.0.0: dependencies: @@ -16296,8 +21248,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} - semver@7.7.4: {} send@0.19.2: @@ -16358,6 +21308,10 @@ snapshots: transitivePeerDependencies: - supports-color + serve-placeholder@2.0.2: + dependencies: + defu: 6.1.7 + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 @@ -16394,6 +21348,17 @@ snapshots: shell-quote@1.8.3: {} + shiki@4.0.2: + dependencies: + '@shikijs/core': 4.0.2 + '@shikijs/engine-javascript': 4.0.2 + '@shikijs/engine-oniguruma': 4.0.2 + '@shikijs/langs': 4.0.2 + '@shikijs/themes': 4.0.2 + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -16437,6 +21402,16 @@ snapshots: transitivePeerDependencies: - supports-color + simple-git@3.35.2: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + '@simple-git/args-pathspec': 1.0.2 + '@simple-git/argv-parser': 1.0.3 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 @@ -16449,6 +21424,8 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 + slash@5.1.0: {} + slice-ansi@7.1.2: dependencies: ansi-styles: 6.2.3 @@ -16456,6 +21433,8 @@ snapshots: smart-buffer@4.2.0: {} + smob@1.6.1: {} + sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -16507,6 +21486,8 @@ snapshots: source-map@0.7.6: {} + space-separated-tokens@2.0.2: {} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -16549,26 +21530,49 @@ snapshots: speakingurl@14.0.1: {} + split2@4.2.0: {} + + srvx@0.11.15: {} + ssri@13.0.0: dependencies: minipass: 7.1.2 stackback@0.0.2: {} + standard-as-callback@2.1.0: {} + statuses@1.5.0: {} statuses@2.0.2: {} + std-env@3.10.0: {} + std-env@4.0.0: {} stdin-discarder@0.3.1: {} + streamx@2.25.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.7 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + string-width@7.2.0: dependencies: emoji-regex: 10.6.0 @@ -16588,6 +21592,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -16596,6 +21605,12 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-bom@4.0.0: {} + + strip-comments-strings@1.2.0: {} + + strip-final-newline@3.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -16606,16 +21621,20 @@ snapshots: dependencies: js-tokens: 9.0.1 - stylehacks@7.0.7(postcss@8.5.6): + structured-clone-es@2.0.0: {} + + stylehacks@7.0.7(postcss@8.5.9): dependencies: browserslist: 4.28.1 - postcss: 8.5.6 + postcss: 8.5.9 postcss-selector-parser: 7.1.1 superjson@2.2.6: dependencies: copy-anything: 4.0.5 + supports-color@10.2.2: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -16631,19 +21650,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.4.6(picomatch@4.0.4)(svelte@5.55.1)(typescript@5.8.3): + svelte-check@4.4.6(picomatch@4.0.4)(svelte@5.55.2)(typescript@5.8.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 chokidar: 4.0.3 fdir: 6.5.0(picomatch@4.0.4) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.55.1 + svelte: 5.55.2 typescript: 5.8.3 transitivePeerDependencies: - picomatch - svelte@5.55.1: + svelte@5.55.2: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -16654,7 +21673,7 @@ snapshots: aria-query: 5.3.1 axobject-query: 4.1.0 clsx: 2.1.1 - devalue: 5.6.4 + devalue: 5.7.0 esm-env: 1.2.2 esrap: 2.2.4 is-reference: 3.0.3 @@ -16662,24 +21681,47 @@ snapshots: magic-string: 0.30.21 zimmerframe: 1.1.4 - svgo@4.0.0: + svgo@4.0.1: dependencies: commander: 11.1.0 css-select: 5.2.2 - css-tree: 3.1.0 + css-tree: 3.2.1 css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.4.3 + sax: 1.6.0 + + symbol-tree@3.2.4: {} + + synckit@0.11.12: + dependencies: + '@pkgr/core': 0.2.9 + + tagged-tag@1.0.0: {} - symbol-tree@3.2.4: {} + tailwind-merge@3.5.0: {} - synckit@0.11.12: + tailwind-variants@3.2.2(tailwind-merge@3.5.0)(tailwindcss@4.2.2): dependencies: - '@pkgr/core': 0.2.9 + tailwindcss: 4.2.2 + optionalDependencies: + tailwind-merge: 3.5.0 + + tailwindcss@4.2.2: {} tapable@2.3.0: {} + tar-stream@3.1.8: + dependencies: + b4a: 1.8.0 + bare-fs: 4.6.0 + fast-fifo: 1.3.2 + streamx: 2.25.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + tar@7.5.2: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -16688,7 +21730,14 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - terser-webpack-plugin@5.3.16(esbuild@0.27.3)(webpack@5.105.2(esbuild@0.27.3)): + teex@1.0.1: + dependencies: + streamx: 2.25.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + terser-webpack-plugin@5.3.16(esbuild@0.27.3)(webpack@5.105.2(esbuild@0.27.7)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 @@ -16706,6 +21755,12 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + text-decoder@1.2.7: + dependencies: + b4a: 1.8.0 + transitivePeerDependencies: + - react-native-b4a + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -16720,14 +21775,27 @@ snapshots: thunky@1.1.0: {} + tiny-inflate@1.0.3: {} + + tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} + tinyclip@0.1.12: {} + tinyexec@1.0.4: {} + tinyexec@1.1.1: {} + tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyrainbow@3.1.0: {} @@ -16758,6 +21826,8 @@ snapshots: dependencies: tldts: 7.0.28 + tr46@0.0.3: {} + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -16768,13 +21838,15 @@ snapshots: tree-kill@1.2.2: {} + trim-lines@3.0.1: {} + ts-api-utils@2.5.0(typescript@6.0.2): dependencies: typescript: 6.0.2 ts-declaration-location@1.0.7(typescript@6.0.2): dependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 typescript: 6.0.2 tslib@1.14.1: {} @@ -16797,6 +21869,10 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@5.5.0: + dependencies: + tagged-tag: 1.0.0 + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -16816,37 +21892,39 @@ snapshots: typescript@5.8.3: {} - typescript@5.9.3: {} - typescript@6.0.2: {} + uc.micro@2.1.0: {} + ufo@1.6.3: {} + ultrahtml@1.6.0: {} + unbuild@3.6.1(sass@1.97.3)(typescript@6.0.2)(vue-tsc@3.2.6(typescript@6.0.2))(vue@3.5.32(typescript@6.0.2)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.53.5) - '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.5) - '@rollup/plugin-json': 6.1.0(rollup@4.53.5) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.5) - '@rollup/plugin-replace': 6.0.3(rollup@4.53.5) - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/plugin-alias': 5.1.1(rollup@4.60.1) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.60.1) + '@rollup/plugin-json': 6.1.0(rollup@4.60.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.60.1) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) citty: 0.1.6 consola: 3.4.2 - defu: 6.1.4 + defu: 6.1.7 esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.6.1 magic-string: 0.30.21 mkdist: 2.4.1(sass@1.97.3)(typescript@6.0.2)(vue-tsc@3.2.6(typescript@6.0.2))(vue@3.5.32(typescript@6.0.2)) - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 pkg-types: 2.3.0 pretty-bytes: 7.1.0 - rollup: 4.53.5 - rollup-plugin-dts: 6.3.0(rollup@4.53.5)(typescript@6.0.2) + rollup: 4.60.1 + rollup-plugin-dts: 6.4.1(rollup@4.60.1)(typescript@6.0.2) scule: 1.3.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 untyped: 2.0.0 optionalDependencies: typescript: 6.0.2 @@ -16864,12 +21942,19 @@ snapshots: unconfig@7.5.0: dependencies: '@quansync/fs': 1.0.0 - defu: 6.1.4 + defu: 6.1.7 jiti: 2.6.1 quansync: 1.0.0 unconfig-core: 7.5.0 - undici-types@7.16.0: {} + uncrypto@0.1.3: {} + + unctx@2.5.0: + dependencies: + acorn: 8.16.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + unplugin: 2.3.11 undici-types@7.18.2: {} @@ -16879,6 +21964,10 @@ snapshots: undici@7.24.7: {} + unenv@2.0.0-rc.24: + dependencies: + pathe: 2.0.3 + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-emoji-modifier-base@1.0.0: {} @@ -16892,23 +21981,50 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} + unicorn-magic@0.3.0: {} + + unicorn-magic@0.4.0: {} + + unifont@0.7.4: + dependencies: + css-tree: 3.2.1 + ofetch: 1.5.1 + ohash: 2.0.11 + unimport@5.6.0: dependencies: - acorn: 8.15.0 + 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.0 + mlly: 1.8.2 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 pkg-types: 2.3.0 scule: 1.3.0 strip-literal: 3.1.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 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.2 + 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.16 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + unique-filename@5.0.0: dependencies: unique-slug: 6.0.0 @@ -16921,6 +22037,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.3 @@ -16945,38 +22065,55 @@ snapshots: unpipe@1.0.0: {} - unplugin-auto-import@21.0.0: + unplugin-auto-import@21.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.8.3))): + dependencies: + local-pkg: 1.1.2 + magic-string: 0.30.21 + picomatch: 4.0.4 + unimport: 5.6.0 + unplugin: 2.3.11 + unplugin-utils: 0.3.1 + optionalDependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@5.8.3)) + + unplugin-auto-import@21.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2))): dependencies: local-pkg: 1.1.2 magic-string: 0.30.21 - picomatch: 4.0.3 + picomatch: 4.0.4 unimport: 5.6.0 unplugin: 2.3.11 unplugin-utils: 0.3.1 + optionalDependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 - unplugin-vue-components@32.0.0(vue@3.5.32(typescript@6.0.2)): + unplugin-vue-components@32.0.0(@nuxt/kit@4.4.2(magicast@0.5.2))(vue@3.5.32(typescript@6.0.2)): dependencies: chokidar: 5.0.0 local-pkg: 1.1.2 magic-string: 0.30.21 mlly: 1.8.2 obug: 2.1.1 - picomatch: 4.0.3 - tinyglobby: 0.2.15 + picomatch: 4.0.4 + tinyglobby: 0.2.16 unplugin: 3.0.0 unplugin-utils: 0.3.1 vue: 3.5.32(typescript@6.0.2) + optionalDependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 - picomatch: 4.0.3 + acorn: 8.16.0 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unplugin@3.0.0: @@ -16985,20 +22122,56 @@ snapshots: 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 + + unstorage@1.17.5(db0@0.3.4)(ioredis@5.10.1): + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.3.2 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.3 + optionalDependencies: + db0: 0.3.4 + ioredis: 5.10.1 + + untun@0.1.3: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 1.1.2 + untyped@2.0.0: dependencies: citty: 0.1.6 - defu: 6.1.4 + defu: 6.1.7 jiti: 2.6.1 knitwork: 1.3.0 scule: 1.3.0 + unwasm@0.5.3: + dependencies: + exsolve: 1.0.8 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 + uqr@0.1.3: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -17011,6 +22184,14 @@ snapshots: uuid@8.3.2: {} + valibot@1.3.1(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + + valibot@1.3.1(typescript@6.0.2): + optionalDependencies: + typescript: 6.0.2 + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -17022,20 +22203,104 @@ snapshots: vary@1.1.2: {} + vaul-vue@0.4.1(reka-ui@2.9.3(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)): + dependencies: + '@vueuse/core': 10.11.1(vue@3.5.32(typescript@6.0.2)) + reka-ui: 2.9.3(vue@3.5.32(typescript@6.0.2)) + vue: 3.5.32(typescript@6.0.2) + transitivePeerDependencies: + - '@vue/composition-api' + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + vite-bundle-analyzer@1.3.7: {} - vite-plugin-inspect@10.1.0(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)): + vite-dev-rpc@1.1.0(vite@8.0.8): + dependencies: + birpc: 2.9.0 + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite-hot-client: 2.1.0(vite@8.0.8) + + vite-hot-client@2.1.0(vite@8.0.8): + dependencies: + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + + vite-node@5.3.0(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2): + dependencies: + cac: 6.7.14 + es-module-lexer: 2.0.0 + obug: 2.1.1 + pathe: 2.0.3 + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + vite-plugin-checker@0.12.0(eslint@10.2.0(jiti@2.6.1))(optionator@0.9.4)(typescript@6.0.2)(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))(vue-tsc@3.2.6(typescript@6.0.2)): + 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.16 + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vscode-uri: 3.1.0 + optionalDependencies: + eslint: 10.2.0(jiti@2.6.1) + optionator: 0.9.4 + typescript: 6.0.2 + vue-tsc: 3.2.6(typescript@6.0.2) + + vite-plugin-inspect@10.1.0(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@8.0.8): dependencies: debug: 4.4.3 error-stack-parser-es: 1.0.5 open: 10.2.0 picocolors: 1.1.1 sirv: 3.0.2 - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + optionalDependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) + transitivePeerDependencies: + - supports-color + + vite-plugin-inspect@11.3.3(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@8.0.8): + 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: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite-dev-rpc: 1.1.0(vite@8.0.8) + optionalDependencies: + '@nuxt/kit': 4.4.2(magicast@0.5.2) transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.12)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)): + vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.12)(vite@8.0.8): dependencies: '@babel/core': 7.29.0 '@types/babel__core': 7.20.5 @@ -17043,21 +22308,49 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.12 solid-refresh: 0.6.3(solid-js@1.9.12) - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) - vitefu: 1.1.2(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vitefu: 1.1.2(vite@8.0.8) optionalDependencies: '@testing-library/jest-dom': 6.9.1 transitivePeerDependencies: - supports-color - vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2): + vite-plugin-vue-tracer@1.3.0(vite@8.0.8)(vue@3.5.32(typescript@6.0.2)): dependencies: - esbuild: 0.27.3 + 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: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.32(typescript@6.0.2) + + vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2): + dependencies: + esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.8 + postcss: 8.5.9 rollup: 4.60.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 25.5.2 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.5.1 + lightningcss: 1.32.0 + sass: 1.97.3 + terser: 5.46.0 + yaml: 2.8.2 + + vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.9 + rollup: 4.60.1 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.5.2 fsevents: 2.3.3 @@ -17068,56 +22361,54 @@ snapshots: terser: 5.46.0 yaml: 2.8.2 - vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2): + vite@8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1) - tinyglobby: 0.2.15 + postcss: 8.5.9 + rolldown: 1.0.0-rc.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.5.2 - esbuild: 0.27.3 + '@vitejs/devtools': 0.1.13(@pnpm/logger@1001.0.1)(db0@0.3.4)(ioredis@5.10.1)(typescript@6.0.2)(vite@8.0.8) + esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.6.1 less: 4.5.1 sass: 1.97.3 terser: 5.46.0 yaml: 2.8.2 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - vitefu@1.1.2(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)): + vitefu@1.1.2(vite@8.0.8): optionalDependencies: - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) vitest-package-exports@1.2.0: dependencies: find-up-simple: 1.0.1 pathe: 2.0.3 - vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)): + vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)): dependencies: - '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.1.2 - '@vitest/runner': 4.1.2 - '@vitest/snapshot': 4.1.2 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + '@vitest/expect': 4.1.3 + '@vitest/mocker': 4.1.3(vite@7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.3 + '@vitest/runner': 4.1.3 + '@vitest/snapshot': 4.1.3 + '@vitest/spy': 4.1.3 + '@vitest/utils': 4.1.3 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.5.2 @@ -17126,27 +22417,27 @@ snapshots: - msw optional: true - vitest@4.1.2(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)): + vitest@4.1.3(@types/node@25.5.2)(jsdom@29.0.2)(vite@8.0.8): dependencies: - '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.1.2 - '@vitest/runner': 4.1.2 - '@vitest/snapshot': 4.1.2 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + '@vitest/expect': 4.1.3 + '@vitest/mocker': 4.1.3(vite@8.0.8) + '@vitest/pretty-format': 4.1.3 + '@vitest/runner': 4.1.3 + '@vitest/snapshot': 4.1.3 + '@vitest/spy': 4.1.3 + '@vitest/utils': 4.1.3 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.5(@emnapi/core@1.7.1)(@emnapi/runtime@1.7.1)(@types/node@25.5.2)(esbuild@0.27.3)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.8(@types/node@25.5.2)(@vitejs/devtools@0.1.13)(esbuild@0.27.7)(jiti@2.6.1)(less@4.5.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.5.2 @@ -17156,6 +22447,18 @@ snapshots: vscode-uri@3.1.0: {} + vue-bundle-renderer@2.2.0: + dependencies: + ufo: 1.6.3 + + vue-component-type-helpers@3.2.6: {} + + vue-demi@0.14.10(vue@3.5.32(typescript@6.0.2)): + dependencies: + vue: 3.5.32(typescript@6.0.2) + + vue-devtools-stub@0.1.0: {} + vue-eslint-parser@10.4.0(eslint@10.2.0(jiti@2.6.1)): dependencies: debug: 4.4.3 @@ -17178,12 +22481,12 @@ snapshots: json5: 2.2.3 local-pkg: 1.1.2 magic-string: 0.30.21 - mlly: 1.8.0 + mlly: 1.8.2 muggle-string: 0.4.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 scule: 1.3.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unplugin: 3.0.0 unplugin-utils: 0.3.1 vue: 3.5.32(typescript@5.8.3) @@ -17202,12 +22505,12 @@ snapshots: json5: 2.2.3 local-pkg: 1.1.2 magic-string: 0.30.21 - mlly: 1.8.0 + mlly: 1.8.2 muggle-string: 0.4.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 scule: 1.3.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unplugin: 3.0.0 unplugin-utils: 0.3.1 vue: 3.5.32(typescript@6.0.2) @@ -17228,12 +22531,17 @@ snapshots: '@vue/language-core': 3.2.6 typescript: 6.0.2 + vue-virtual-scroller@2.0.1(vue@3.5.32(typescript@6.0.2)): + dependencies: + mitt: 2.1.0 + vue: 3.5.32(typescript@6.0.2) + vue@3.5.32(typescript@5.8.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.8.3)) + '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@6.0.2)) '@vue/shared': 3.5.32 optionalDependencies: typescript: 5.8.3 @@ -17248,6 +22556,8 @@ snapshots: optionalDependencies: typescript: 6.0.2 + w3c-keyname@2.2.8: {} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -17264,9 +22574,11 @@ snapshots: weak-lru-cache@1.2.2: optional: true + webidl-conversions@3.0.1: {} + webidl-conversions@8.0.1: {} - webpack-dev-middleware@7.4.5(webpack@5.105.2(esbuild@0.27.3)): + webpack-dev-middleware@7.4.5(webpack@5.105.2(esbuild@0.27.7)): dependencies: colorette: 2.0.20 memfs: 4.51.1 @@ -17277,7 +22589,7 @@ snapshots: optionalDependencies: webpack: 5.105.2(esbuild@0.27.3) - webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.3)): + webpack-dev-server@5.2.3(webpack@5.105.2(esbuild@0.27.7)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -17297,7 +22609,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.3.0 - launch-editor: 2.12.0 + launch-editor: 2.13.2 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 @@ -17305,8 +22617,8 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.105.2(esbuild@0.27.3)) - ws: 8.18.3 + webpack-dev-middleware: 7.4.5(webpack@5.105.2(esbuild@0.27.7)) + ws: 8.20.0 optionalDependencies: webpack: 5.105.2(esbuild@0.27.3) transitivePeerDependencies: @@ -17354,7 +22666,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(esbuild@0.27.3)(webpack@5.105.2(esbuild@0.27.3)) + terser-webpack-plugin: 5.3.16(esbuild@0.27.3)(webpack@5.105.2(esbuild@0.27.7)) watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -17380,13 +22692,20 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + wheel-gestures@2.2.48: {} + which@2.0.2: dependencies: isexe: 2.0.0 - which@6.0.0: + which@6.0.1: dependencies: - isexe: 3.1.1 + isexe: 4.0.0 why-is-node-running@2.3.0: dependencies: @@ -17409,6 +22728,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -17417,7 +22742,17 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.3: {} + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + write-yaml-file@5.0.0: + dependencies: + js-yaml: 4.1.1 + write-file-atomic: 5.0.1 + + ws@8.20.0: {} wsl-utils@0.1.0: dependencies: @@ -17436,6 +22771,11 @@ snapshots: xmlchars@2.2.0: {} + y-protocols@1.0.7(yjs@13.6.30): + dependencies: + lib0: 0.2.117 + yjs: 13.6.30 + y18n@5.0.8: {} yallist@3.1.1: {} @@ -17474,14 +22814,39 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 + yjs@13.6.30: + dependencies: + lib0: 0.2.117 + yocto-queue@0.1.0: {} + yocto-queue@1.2.2: {} + yoctocolors-cjs@2.1.3: {} yoctocolors@2.1.2: {} + youch-core@0.3.3: + dependencies: + '@poppinss/exception': 1.2.3 + error-stack-parser-es: 1.0.5 + + youch@4.1.1: + dependencies: + '@poppinss/colors': 4.1.6 + '@poppinss/dumper': 0.7.0 + '@speed-highlight/core': 1.2.15 + cookie-es: 3.1.1 + youch-core: 0.3.3 + zimmerframe@1.1.4: {} + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.7.0 + zod-to-json-schema@3.25.1(zod@4.3.6): dependencies: zod: 4.3.6 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 79040a97f..752d429e1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,19 +15,22 @@ overrides: chokidar: 4.0.1 catalog: - '@angular-devkit/build-angular': ^21.2.6 - '@angular/cli': ^21.2.6 - '@angular/common': ^21.2.7 - '@angular/compiler': ^21.2.7 - '@angular/compiler-cli': ^21.2.7 - '@angular/core': ^21.2.7 - '@angular/platform-browser': ^21.2.7 - '@angular/platform-browser-dynamic': ^21.2.7 - '@angular/platform-server': ^21.2.7 - '@antfu/eslint-config': ^8.0.0 + '@angular-devkit/build-angular': ^21.2.7 + '@angular/cli': ^21.2.7 + '@angular/common': ^21.2.8 + '@angular/compiler': ^21.2.8 + '@angular/compiler-cli': ^21.2.8 + '@angular/core': ^21.2.8 + '@angular/platform-browser': ^21.2.8 + '@angular/platform-browser-dynamic': ^21.2.8 + '@angular/platform-server': ^21.2.8 + '@antfu/eslint-config': ^8.1.1 '@arethetypeswrong/cli': ^0.18.2 '@fast-check/vitest': ^0.4.0 + '@nuxt/ui': ^4.6.1 '@rollup/pluginutils': ^5.3.0 + '@shikijs/langs': ^4.0.2 + '@shikijs/themes': ^4.0.2 '@solidjs/testing-library': ^0.8.10 '@sveltejs/vite-plugin-svelte': ^7.0.0 '@testing-library/jest-dom': ^6.9.1 @@ -38,9 +41,11 @@ catalog: '@types/jsdom': ^28.0.1 '@types/react': ^19.2.14 '@types/react-dom': ^19.2.3 + '@vitejs/devtools-kit': ^0.1.13 '@vue/server-renderer': ^3.5.32 + '@vueuse/nuxt': ^14.2.1 bumpp: ^11.0.1 - devalue: ^5.7.0 + devalue: ^5.7.1 eslint: ^10.2.0 eslint-plugin-harlanzw: ^0.12.0 fs-extra: ^11.3.4 @@ -48,17 +53,21 @@ catalog: js-yaml: ^4.1.1 jsdom: ^29.0.2 magic-string: ^0.30.21 + nuxt: ^4.4.2 oxc-parser: ^0.124.0 oxc-walker: ^0.7.0 - react: ^19.2.4 - react-dom: ^19.2.4 + pathe: ^2.0.3 + react: ^19.2.5 + react-dom: ^19.2.5 rollup: ^4.60.1 rollup-plugin-analyzer: ^4.0.0 rollup-plugin-visualizer: ^7.0.1 + shiki: ^4.0.2 solid-js: ^1.9.12 - svelte: ^5.55.1 - tinyexec: ^1.0.4 + svelte: ^5.55.2 + tailwindcss: ^4.2.2 + tinyexec: ^1.1.1 tslib: ^2.8.1 typescript: 6.0.2 ufo: ^1.6.3 @@ -66,9 +75,9 @@ catalog: unplugin: ^3.0.0 unplugin-vue-components: ^32.0.0 utility-types: ^3.11.0 - vite: ^8.0.5 + vite: ^8.0.8 vite-plugin-solid: ^2.11.12 - vitest: ^4.1.2 + vitest: ^4.1.3 vitest-package-exports: ^1.2.0 vue: ^3.5.32 vue-tsc: ^3.2.6 diff --git a/tsconfig.json b/tsconfig.json index e23a9367a..48a6579fd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -43,6 +43,7 @@ "exclude": [ "examples", "bench", - "packages/angular" + "packages/angular", + "packages/devtools-app" ] }