diff --git a/.env.example b/.env.example index a4b2638b5..a401e9f51 100644 --- a/.env.example +++ b/.env.example @@ -9,11 +9,6 @@ PUBLIC_COMMIT_HASH="" ADDRESS_HEADER="CF-Connecting-IP" -# Sentry.io -PUBLIC_SENTRY_DSN="" -PUBLIC_SENTRY_HOST="" -PUBLIC_SENTRY_PROJECT_ID="" - # GO API PUBLIC_API_URL="http://localhost:8080/api/" PUBLIC_SERVER_API_URL="http://localhost:8080/api/" # If you're using docker, set this to the name of the backend container, e.g. http://skycrypt-backend-1:8080/api/ @@ -39,16 +34,36 @@ MC_ID_CLIENT_SECRET="" # https://www.patreon.com/portal/registration/register-clients PATREON_CLIENT_ID="" PATREON_CLIENT_SECRET="" +# Numeric campaign ID from the Patreon campaign URL/API response +PATREON_CAMPAIGN_ID="" +PATREON_CREATOR_ACCESS_TOKEN="" +PATREON_CREATOR_REFRESH_TOKEN="" +PUBLIC_PATREON_COLORED_HEART_CENTS="500" +PUBLIC_PATREON_ANY_EMOJI_CENTS="6000" + +# Newsroom uploads (Cloudflare R2) +# Create an R2 API token with Object Read & Write on the bucket. The bucket needs a CORS rule allowing PUT with the +# content-type header from your ORIGIN, because browsers upload straight to R2. +R2_ACCOUNT_ID="" +R2_ACCESS_KEY_ID="" +R2_SECRET_ACCESS_KEY="" +R2_BUCKET="" +PUBLIC_MEDIA_URL="" # Public URL of the bucket, e.g. an R2 custom domain like https://media.shiiyu.moe -# Payload CMS -PUBLIC_CMS_URL="https://cms.shiiyu.moe" -SERVER_CMS_API_URL="https://cms.shiiyu.moe" # If you're using docker, set this to the name of the CMS container -CMS_API_TOKEN="" # Users API Key generated in CMS admin (Users → API Key tab) -CMS_PREVIEW_TOKEN="" # Must match CMS_PREVIEW_TOKEN in SkyCrypt-CMS .env +# Logging (evlog) - leave empty to log to stdout only +# Base URL of the HyperDX OTLP HTTP intake, e.g. http://skycrypt-hyperdx:4318 (on the Dokploy network) +HYPERDX_OTLP_ENDPOINT="" +# Ingestion key from HyperDX: Team Settings -> API Keys +HYPERDX_API_KEY="" # Umami Analytics PUBLIC_UMAMI_WEBSITE_ID="" PUBLIC_UMAMI_SCRIPT_URL="" PUBLIC_UMAMI_RECORDER_URL="" PUBLIC_UMAMI_HOST_URL="" -PUBLIC_UMAMI_ENABLE_HEATMAPS="false" \ No newline at end of file +PUBLIC_UMAMI_ENABLE_HEATMAPS="false" + +# Cloudflare Turnstile +# https://developers.cloudflare.com/turnstile/troubleshooting/testing/#test-sitekeys +PUBLIC_TURNSTILE_SITE_KEY="1x00000000000000000000AA" +TURNSTILE_SECRET_KEY="1x0000000000000000000000000000000AA" \ No newline at end of file diff --git a/.github/actions/pnpm-install/action.yml b/.github/actions/pnpm-install/action.yml index cc2c0b6d4..2b2a1ba4c 100644 --- a/.github/actions/pnpm-install/action.yml +++ b/.github/actions/pnpm-install/action.yml @@ -39,10 +39,9 @@ runs: uses: actions/checkout@v7 - name: Setup pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/setup@v3 with: - version: 11.11.0 - run_install: false + version: 12 - name: Setup Node.js uses: actions/setup-node@v7 diff --git a/.github/agents/svelte-file-editor.agent.md b/.github/agents/svelte-file-editor.agent.md new file mode 100644 index 000000000..7085c8147 --- /dev/null +++ b/.github/agents/svelte-file-editor.agent.md @@ -0,0 +1,67 @@ +--- +name: svelte-file-editor +description: Specialized Svelte 5 code editor. MUST BE USED PROACTIVELY when creating, editing, or reviewing any .svelte file or .svelte.ts/.svelte.js module and MUST use the tools from the MCP server or the `svelte-file-editor` skill if they are available. Fetches relevant documentation and validates code using the Svelte MCP server tools. +--- + +You are a Svelte 5 expert responsible for writing, editing, and validating Svelte components and modules. You have access to the Svelte MCP server which provides documentation and code analysis tools. Always use the tools from the Svelte MCP server to fetch documentation with `get_documentation` and validate the code with `svelte_autofixer`. If the autofixer returns any issue or suggestions try to solve them. + +If the MCP tools are not available you can use the `svelte-code-writer` skill to learn how to use the `@sveltejs/mcp` cli to access the same tools. + +If the skill is not available you can run `npx @sveltejs/mcp@latest -y --help` to learn how to use it. + +## Available MCP tools + +### 1. list-sections + +Lists all available Svelte 5 and SvelteKit documentation sections with titles and paths. Use this first to discover what documentation is available. + +### 2. get-documentation + +Retrieves full documentation for specified sections. Accepts a single section name or an array of section names. Use after `list-sections` to fetch relevant docs for the task at hand. + +**Example sections:** `$state`, `$derived`, `$effect`, `$props`, `$bindable`, `snippets`, `routing`, `load functions` + +### 3. svelte-autofixer + +Analyzes Svelte code and returns suggestions to fix issues. Pass the component code directly to this tool. It will detect common mistakes like: + +- Using `$effect` instead of `$derived` for computations +- Missing cleanup in effects +- Svelte 4 syntax (`on:click`, `export let`, ``) +- Missing keys in `{#each}` blocks +- And more + +## Workflow + +When invoked to work on a Svelte file: + +### 1. Gather context (if needed) + +If you're uncertain about Svelte 5 syntax or patterns, use the MCP tools: + +1. Call `list-sections` to see available documentation +2. Call `get-documentation` with relevant section names + +### 2. Read the target file + +Read the file to understand the current implementation. + +### 3. Make changes + +Apply edits following Svelte 5 best practices: + +### 4. Validate changes + +After editing, ALWAYS call `svelte-autofixer` with the updated code to check for issues. + +### 5. Fix any issues + +If the autofixer reports problems, fix them and re-validate until no issues remain. + +## Output format + +After completing your work, provide: + +1. Summary of changes made +2. Any issues found and fixed by the autofixer +3. Recommendations for further improvements (if any) diff --git a/.github/skills/svelte-code-writer/SKILL.md b/.github/skills/svelte-code-writer/SKILL.md new file mode 100644 index 000000000..56d938370 --- /dev/null +++ b/.github/skills/svelte-code-writer/SKILL.md @@ -0,0 +1,64 @@ +--- +name: svelte-code-writer +description: CLI tools for Svelte 5 documentation lookup and code analysis. MUST be used whenever creating, editing or analyzing any Svelte component (.svelte) or Svelte module (.svelte.ts/.svelte.js). If possible, this skill should be executed within the svelte-file-editor agent for optimal results. +--- + +## CLI tools + +You have access to `@sveltejs/mcp` CLI for Svelte-specific assistance. Use these commands via `npx`: + +### List documentation sections + +```bash +npx @sveltejs/mcp list-sections +``` + +Lists all available Svelte 5 and SvelteKit documentation sections with titles and paths. + +### Get documentation + +```bash +npx @sveltejs/mcp get-documentation ",,..." +``` + +Retrieves full documentation for specified sections. Use after `list-sections` to fetch relevant docs. + +**Example:** + +```bash +npx @sveltejs/mcp get-documentation "$state,$derived,$effect" +``` + +### Svelte autofixer + +```bash +npx @sveltejs/mcp svelte-autofixer "" [options] +``` + +Analyzes Svelte code and suggests fixes for common issues. + +**Options:** + +- `--async` - Enable async Svelte mode (default: false) +- `--svelte-version` - Target version: 4 or 5 (default: 5) + +**Examples:** + +```bash +# Analyze inline code (escape $ as \$) +npx @sveltejs/mcp svelte-autofixer '' + +# Analyze a file +npx @sveltejs/mcp svelte-autofixer ./src/lib/Component.svelte + +# Target Svelte 4 +npx @sveltejs/mcp svelte-autofixer ./Component.svelte --svelte-version 4 +``` + +**Important:** When passing code with runes (`$state`, `$derived`, etc.) via the terminal, escape the `$` character as `\$` to prevent shell variable substitution. + +## Workflow + +1. **Uncertain about syntax?** Run `list-sections` then `get-documentation` for relevant topics +2. **Reviewing/debugging?** Run `svelte-autofixer` on the code to detect issues +3. **Always validate** - Run `svelte-autofixer` before finalizing any Svelte component diff --git a/.github/skills/svelte-core-bestpractices/SKILL.md b/.github/skills/svelte-core-bestpractices/SKILL.md new file mode 100644 index 000000000..be855ce34 --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/SKILL.md @@ -0,0 +1,176 @@ +--- +name: svelte-core-bestpractices +description: Guidance on writing fast, robust, modern Svelte code. Load this skill whenever in a Svelte project and asked to write/edit or analyze a Svelte component or module. Covers reactivity, event handling, styling, integration with libraries and more. +--- + +## `$state` + +Only use the `$state` rune for variables that should be _reactive_ — in other words, variables that cause an `$effect`, `$derived` or template expression to update. Everything else can be a normal variable. + +Objects and arrays (`$state({...})` or `$state([...])`) are made deeply reactive, meaning mutation will trigger updates. This has a trade-off: in exchange for fine-grained reactivity, the objects must be proxied, which has performance overhead. In cases where you're dealing with large objects that are only ever reassigned (rather than mutated), use `$state.raw` instead. This is often the case with API responses, for example. + +## `$derived` + +To compute something from state, use `$derived` rather than `$effect`: + +```js +// do this +let square = $derived(num * num); + +// don't do this +let square; + +$effect(() => { + square = num * num; +}); +``` + +> [!NOTE] `$derived` is given an expression, _not_ a function. If you need to use a function (because the expression is complex, for example) use `$derived.by`. + +Deriveds are writable — you can assign to them, just like `$state`, except that they will re-evaluate when their expression changes. + +If the derived expression is an object or array, it will be returned as-is — it is _not_ made deeply reactive. You can, however, use `$state` inside `$derived.by` in the rare cases that you need this. + +## `$effect` + +Effects are an escape hatch and should mostly be avoided. In particular, avoid updating state inside effects. + +- If you need to sync state to an external library such as D3, it is often neater to use [`{@attach ...}`](references/attach.md) +- If you need to run some code in response to user interaction, put the code directly in an event handler or use a [function binding](references/bind.md) as appropriate +- If you need to log values for debugging purposes, use [`$inspect`](references/inspect.md) +- If you need to observe something external to Svelte, use [`createSubscriber`](references/svelte-reactivity.md) + +Never wrap the contents of an effect in `if (browser) {...}` or similar — effects do not run on the server. + +## `$props` + +Treat props as though they will change. For example, values that depend on props should usually use `$derived`: + +```js +// @errors: 2451 +let { type } = $props(); + +// do this +let color = $derived(type === 'danger' ? 'red' : 'green'); + +// don't do this — `color` will not update if `type` changes +let color = type === 'danger' ? 'red' : 'green'; +``` + +## `$inspect.trace` + +`$inspect.trace` is a debugging tool for reactivity. If something is not updating properly or running more than it should you can add `$inspect.trace(label)` as the first line of an `$effect` or `$derived.by` (or any function they call) to trace their dependencies and discover which one triggered an update. + +## Events + +Any element attribute starting with `on` is treated as an event listener: + +```svelte + + + + + + + +``` + +If you need to attach listeners to `window` or `document` you can use `` and ``: + +```svelte + + +``` + +Avoid using `onMount` or `$effect` for this. + +## Snippets + +[Snippets](references/snippet.md) are a way to define reusable chunks of markup that can be instantiated with the [`{@render ...}`](references/render.md) tag, or passed to components as props. They must be declared within the template. + +```svelte +{#snippet greeting(name)} +

hello {name}!

+{/snippet} + +{@render greeting('world')} +``` + +> [!NOTE] Snippets declared at the top level of a component (i.e. not inside elements or blocks) can be referenced inside ` + +
...
+``` + +An element can have any number of attachments. + +## Attachment factories + +A useful pattern is for a function, such as `tooltip` in this example, to _return_ an attachment (demo: + +```svelte + + + + + + +``` + +Since the `tooltip(content)` expression runs inside an [effect](https://svelte.dev/docs/svelte/$effect/llms.txt), the attachment will be destroyed and recreated whenever `content` changes. The same thing would happen for any state read _inside_ the attachment function when it first runs. (If this isn't what you want, see [Controlling when attachments re-run](#Controlling-when-attachments-re-run).) + +## Inline attachments + +Attachments can also be created inline (demo: + +```svelte + + { + const context = canvas.getContext('2d'); + + $effect(() => { + context.fillStyle = color; + context.fillRect(0, 0, canvas.width, canvas.height); + }); + }} +> +``` + +> [!NOTE] +> The nested effect runs whenever `color` changes, while the outer effect (where `canvas.getContext(...)` is called) only runs once, since it doesn't read any reactive state. + +## Conditional attachments + +Falsy values like `false` or `undefined` are treated as no attachment, enabling conditional usage: + +```svelte +
...
+``` + +## Passing attachments to components + +When used on a component, `{@attach ...}` will create a prop whose key is a [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol). If the component then [spreads](https://svelte.dev/tutorial/svelte/spread-props/llms.txt) props onto an element, the element will receive those attachments. + +This allows you to create _wrapper components_ that augment elements (demo: + +```svelte + + + + + +``` + +```svelte + + + + + + +``` + +## Controlling when attachments re-run + +Attachments, unlike [actions](https://svelte.dev/docs/svelte/use/llms.txt), are fully reactive: `{@attach foo(bar)}` will re-run on changes to `foo` _or_ `bar` (or any state read inside `foo`): + +```js +// @errors: 7006 2304 2552 +function foo(bar) { + return (node) => { + veryExpensiveSetupWork(node); + update(node, bar); + }; +} +``` + +In the rare case that this is a problem (for example, if `foo` does expensive and unavoidable setup work) consider passing the data inside a function and reading it in a child effect: + +```js +// @errors: 7006 2304 2552 +function foo(+++getBar+++) { + return (node) => { + veryExpensiveSetupWork(node); + ++++ $effect(() => { + update(node, getBar()); + });+++ + } +} +``` + +## Creating attachments programmatically + +To add attachments to an object that will be spread onto a component or element, use [`createAttachmentKey`](https://svelte.dev/docs/svelte/svelte-attachments/llms.txt#createAttachmentKey). + +## Converting actions to attachments + +If you're using a library that only provides actions, you can convert them to attachments with [`fromAction`](https://svelte.dev/docs/svelte/svelte-attachments/llms.txt#fromAction), allowing you to (for example) use them with components. diff --git a/.github/skills/svelte-core-bestpractices/references/await-expressions.md b/.github/skills/svelte-core-bestpractices/references/await-expressions.md new file mode 100644 index 000000000..dd7d8c6e7 --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/await-expressions.md @@ -0,0 +1,187 @@ +As of Svelte 5.36, you can use the `await` keyword inside your components in three places where it was previously unavailable: + +- at the top level of your component's ` + + + + +

{a} + {b} = {await add(a, b)}

+``` + + + +...if you increment `a`, the contents of the `

` will _not_ immediately update to read this — + +```html +

2 + 2 = 3

+``` + +— instead, the text will update to `2 + 2 = 4` when `add(a, b)` resolves. + +Updates can overlap — a fast update will be reflected in the UI while an earlier slow update is still ongoing. + +## Concurrency + +Svelte will do as much asynchronous work as it can in parallel. For example if you have two `await` expressions in your markup... + +```svelte +

{await one(x)}

+

{await two(y)}

+``` + +...both functions will run at the same time, as they are independent expressions, even though they are _visually_ sequential. + +This does not apply to sequential `await` expressions inside your ` + + + +{#if open} + + open = false} /> +{/if} +``` + +## Caveats + +As an experimental feature, the details of how `await` is handled (and related APIs like `$effect.pending()`) are subject to breaking changes outside of a semver major release, though we intend to keep such changes to a bare minimum. + +## Breaking changes + +Effects run in a slightly different order when the `experimental.async` option is `true`. Specifically, _block_ effects like `{#if ...}` and `{#each ...}` now run before an `$effect.pre` or `beforeUpdate` in the same component, which means that in very rare situations. diff --git a/.github/skills/svelte-core-bestpractices/references/bind.md b/.github/skills/svelte-core-bestpractices/references/bind.md new file mode 100644 index 000000000..f847cdc2d --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/bind.md @@ -0,0 +1,22 @@ +## Function bindings + +You can also use `bind:property={get, set}`, where `get` and `set` are functions, allowing you to perform validation and transformation: + +```svelte + value, + (v) => value = v.toLowerCase()} +/> +``` + +In the case of readonly bindings like [dimension bindings](#Dimensions), the `get` value should be `null`: + +```svelte +
...
+``` + +> [!NOTE] +> Function bindings are available in Svelte 5.9.0 and newer. diff --git a/.github/skills/svelte-core-bestpractices/references/each.md b/.github/skills/svelte-core-bestpractices/references/each.md new file mode 100644 index 000000000..283b754f1 --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/each.md @@ -0,0 +1,42 @@ +## Keyed each blocks + +```svelte + +{#each expression as name (key)}...{/each} +``` + +```svelte + +{#each expression as name, index (key)}...{/each} +``` + +If a _key_ expression is provided — which must uniquely identify each list item — Svelte will use it to intelligently update the list when data changes by inserting, moving and deleting items, rather than adding or removing items at the end and updating the state in the middle. + +The key can be any object, but strings and numbers are recommended since they allow identity to persist when the objects themselves change. + +```svelte +{#each items as item (item.id)} +
  • {item.name} x {item.qty}
  • +{/each} + + +{#each items as item, i (item.id)} +
  • {i + 1}: {item.name} x {item.qty}
  • +{/each} +``` + +You can freely use destructuring and rest patterns in each blocks. + +```svelte +{#each items as { id, name, qty }, i (id)} +
  • {i + 1}: {name} x {qty}
  • +{/each} + +{#each objects as { id, ...rest }} +
  • {id}
  • +{/each} + +{#each items as [id, ...rest]} +
  • {id}
  • +{/each} +``` diff --git a/.github/skills/svelte-core-bestpractices/references/hydratable.md b/.github/skills/svelte-core-bestpractices/references/hydratable.md new file mode 100644 index 000000000..acc665eae --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/hydratable.md @@ -0,0 +1,103 @@ +In Svelte, when you want to render asynchronous content data on the server, you can simply `await` it. This is great! However, it comes with a pitfall: when hydrating that content on the client, Svelte has to redo the asynchronous work, which blocks hydration for however long it takes: + +```svelte + + +

    {user.name}

    +``` + +That's silly, though. If we've already done the hard work of getting the data on the server, we don't want to get it again during hydration on the client. `hydratable` is a low-level API built to solve this problem. You probably won't need this very often — it will be used behind the scenes by whatever datafetching library you use. For example, it powers [remote functions in SvelteKit](https://svelte.dev/docs/kit/remote-functions/llms.txt). + +To fix the example above: + +```svelte + + +

    {user.name}

    +``` + +This API can also be used to provide access to random or time-based values that are stable between server rendering and hydration. For example, to get a random number that doesn't update on hydration: + +```ts +import { hydratable } from 'svelte'; +const rand = hydratable('random', () => Math.random()); +``` + +If you're a library author, be sure to prefix the keys of your `hydratable` values with the name of your library so that your keys don't conflict with other libraries. + +## Serialization + +All data returned from a `hydratable` function must be serializable. But this doesn't mean you're limited to JSON — Svelte uses [`devalue`](https://npmjs.com/package/devalue), which can serialize all sorts of things including `Map`, `Set`, `URL`, and `BigInt`. Check the documentation page for a full list. In addition to these, thanks to some Svelte magic, you can also fearlessly use promises: + +```svelte + + +{await promises.one} +{await promises.two} +``` + +## CSP + +`hydratable` adds an inline ` + + + +``` + + + +On updates, a stack trace will be printed, making it easy to find the origin of a state change (unless you're in the playground, due to technical limitations). + +## $inspect(...).with + +`$inspect(...)` returns an object with a `with` method, which you can invoke with a callback that will then be invoked instead of `console.log`. The first argument to the callback is either `"init"` or `"update"`; subsequent arguments are the values passed to `$inspect`: + + + +```svelte + + + + +``` + + + +## $inspect.trace(...) + +This rune, added in 5.14, causes the surrounding function to be _traced_ in development. Any time the function re-runs as part of an [effect](https://svelte.dev/docs/svelte/$effect/llms.txt) or a [derived](https://svelte.dev/docs/svelte/$derived/llms.txt), information will be printed to the console about which pieces of reactive state caused the effect to fire. + +```svelte + +``` + +`$inspect.trace` takes an optional first argument which will be used as the label. diff --git a/.github/skills/svelte-core-bestpractices/references/render.md b/.github/skills/svelte-core-bestpractices/references/render.md new file mode 100644 index 000000000..f8290e953 --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/render.md @@ -0,0 +1,35 @@ +To render a [snippet](https://svelte.dev/docs/svelte/snippet/llms.txt), use a `{@render ...}` tag. + +```svelte +{#snippet sum(a, b)} +

    {a} + {b} = {a + b}

    +{/snippet} + +{@render sum(1, 2)} +{@render sum(3, 4)} +{@render sum(5, 6)} +``` + +The expression can be an identifier like `sum`, or an arbitrary JavaScript expression: + +```svelte +{@render (cool ? coolSnippet : lameSnippet)()} +``` + +## Optional snippets + +If the snippet is potentially undefined — for example, because it's an incoming prop — then you can use optional chaining to only render it when it _is_ defined: + +```svelte +{@render children?.()} +``` + +Alternatively, use an [`{#if ...}`](https://svelte.dev/docs/svelte/if/llms.txt) block with an `:else` clause to render fallback content: + +```svelte +{#if children} + {@render children()} +{:else} +

    fallback content

    +{/if} +``` diff --git a/.github/skills/svelte-core-bestpractices/references/snippet.md b/.github/skills/svelte-core-bestpractices/references/snippet.md new file mode 100644 index 000000000..4cdece32e --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/snippet.md @@ -0,0 +1,400 @@ +```svelte + +{#snippet name()}...{/snippet} +``` + +```svelte + +{#snippet name(param1, param2, paramN)}...{/snippet} +``` + +Snippets, and [render tags](https://svelte.dev/docs/svelte/@render/llms.txt), are a way to create reusable chunks of markup inside your components. Instead of writing duplicative code like this... + +```svelte +{#each images as image} + {#if image.href} + +
    + {image.caption} +
    {image.caption}
    +
    +
    + {:else} +
    + {image.caption} +
    {image.caption}
    +
    + {/if} +{/each} +``` + +...you can write this: + +```svelte +{#snippet figure(image)} +
    + {image.caption} +
    {image.caption}
    +
    +{/snippet} + +{#each images as image} + {#if image.href} + + {@render figure(image)} + + {:else} + {@render figure(image)} + {/if} +{/each} +``` + +Like function declarations, snippets can have an arbitrary number of parameters, which can have default values, and you can destructure each parameter. You cannot use rest parameters, however. + +## Snippet scope + +Snippets can be declared anywhere inside your component. They can reference values declared outside themselves, for example in the ` + +{#snippet hello(name)} +

    hello {name}! {message}!

    +{/snippet} + +{@render hello('alice')} +{@render hello('bob')} +``` + + + +...and they are 'visible' to everything in the same lexical scope (i.e. siblings, and children of those siblings): + +```svelte +
    + {#snippet x()} + {#snippet y()}...{/snippet} + + + {@render y()} + {/snippet} + + + {@render y()} +
    + + +{@render x()} +``` + +Snippets can reference themselves and each other: + + + +```svelte + +{#snippet blastoff()} + 🚀 +{/snippet} + +{#snippet countdown(n)} + {#if n > 0} + {n}... + {@render countdown(n - 1)} + {:else} + {@render blastoff()} + {/if} +{/snippet} + +{@render countdown(10)} +``` + + + +## Passing snippets to components + +### Explicit props + +Within the template, snippets are values just like any other. As such, they can be passed to components as props: + + + +```svelte + + + +{#snippet header()} + fruit + qty + price + total +{/snippet} + +{#snippet row(d)} + {d.name} + {d.qty} + {d.price} + {d.qty * d.price} +{/snippet} + + +``` + +```svelte + + + +
    + {#if header} + + {@render header()} + + {/if} + + + {#each data as d} + {@render row(d)} + {/each} + +
    + + +``` + + + +Think about it like passing content instead of data to a component. The concept is similar to slots in web components. + +### Implicit props + +As an authoring convenience, snippets declared directly _inside_ a component implicitly become props _on_ the component: + + + +```svelte + + + + + {#snippet header()} + + + + + {/snippet} + + {#snippet row(d)} + + + + + {/snippet} +
    fruitqtypricetotal{d.name}{d.qty}{d.price}{d.qty * d.price}
    +``` + +```svelte + + + + + {#if header} + + {@render header()} + + {/if} + + + {#each data as d} + {@render row(d)} + {/each} + +
    + + +``` + + + +### Implicit `children` snippet + +Any content inside the component tags that is _not_ a snippet declaration implicitly becomes part of the `children` snippet: + + + +```svelte + + + + +``` + +```svelte + + + + + +``` + + + +> [!NOTE] Note that you cannot have a prop called `children` if you also have content inside the component — for this reason, you should avoid having props with that name + +### Optional snippet props + +You can declare snippet props as being optional. You can either use optional chaining to not render anything if the snippet isn't set... + +```svelte + + +{@render children?.()} +``` + +...or use an `#if` block to render fallback content: + +```svelte + + +{#if children} + {@render children()} +{:else} + fallback content +{/if} +``` + +## Typing snippets + +Snippets implement the `Snippet` interface imported from `'svelte'`: + +```svelte + +``` + +With this change, red squigglies will appear if you try and use the component without providing a `data` prop and a `row` snippet. Notice that the type argument provided to `Snippet` is a tuple, since snippets can have multiple parameters. + +We can tighten things up further by declaring a generic, so that `data` and `row` refer to the same type: + +```svelte + +``` + +## Exporting snippets + +Snippets declared at the top level of a `.svelte` file can be exported from a ` + +{@render add(1, 2)} + +``` + +```svelte + + + +{#snippet add(a, b)} + {a} + {b} = {a + b} +{/snippet} +``` + + + +> [!NOTE] +> This requires Svelte 5.5.0 or newer + +## Programmatic snippets + +Snippets can be created programmatically with the [`createRawSnippet`](https://svelte.dev/docs/svelte/svelte/llms.txt#createRawSnippet) API. This is intended for advanced use cases. + +## Snippets and slots + +In Svelte 4, content can be passed to components using [slots](https://svelte.dev/docs/svelte/legacy-slots/llms.txt). Snippets are more powerful and flexible, and so slots have been deprecated in Svelte 5. diff --git a/.github/skills/svelte-core-bestpractices/references/svelte-reactivity.md b/.github/skills/svelte-core-bestpractices/references/svelte-reactivity.md new file mode 100644 index 000000000..7f2cd5a05 --- /dev/null +++ b/.github/skills/svelte-core-bestpractices/references/svelte-reactivity.md @@ -0,0 +1,61 @@ +## createSubscriber + +
    + +Available since 5.7.0 + +
    + +Returns a `subscribe` function that integrates external event-based systems with Svelte's reactivity. +It's particularly useful for integrating with web APIs like `MediaQuery`, `IntersectionObserver`, or `WebSocket`. + +If `subscribe` is called inside an effect (including indirectly, for example inside a getter), +the `start` callback will be called with an `update` function. Whenever `update` is called, the effect re-runs. + +If `start` returns a cleanup function, it will be called when the effect is destroyed. + +If `subscribe` is called in multiple effects, `start` will only be called once as long as the effects +are active, and the returned teardown function will only be called when all effects are destroyed. + +It's best understood with an example. Here's an implementation of [`MediaQuery`](https://svelte.dev/docs/svelte/svelte-reactivity/llms.txt#MediaQuery): + +```js +// @errors: 7031 +import { createSubscriber } from 'svelte/reactivity'; +import { on } from 'svelte/events'; + +export class MediaQuery { + #query; + #subscribe; + + constructor(query) { + this.#query = window.matchMedia(`(${query})`); + + this.#subscribe = createSubscriber((update) => { + // when the `change` event occurs, re-run any effects that read `this.current` + const off = on(this.#query, 'change', update); + + // stop listening when all the effects are destroyed + return () => off(); + }); + } + + get current() { + // This makes the getter reactive, if read in an effect + this.#subscribe(); + + // Return the current state of the query, whether or not we're in an effect + return this.#query.matches; + } +} +``` + +
    + +```dts +function createSubscriber( + start: (update: () => void) => (() => void) | void +): () => void; +``` + +
    diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f8f262ec6..8f8da02fa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,7 @@ on: description: "Server API URL (without protocol or /api/ suffix)" required: false type: string - default: "sky.shiiyu.moe" + default: "api.shiiyu.moe" secrets: server-api-token: description: "Server API Token" diff --git a/.github/workflows/deploy-workers.yml b/.github/workflows/deploy-workers.yml index 6716b4ef0..3cd1f660b 100644 --- a/.github/workflows/deploy-workers.yml +++ b/.github/workflows/deploy-workers.yml @@ -38,8 +38,7 @@ jobs: run: pnpm build env: PUBLIC_COMMIT_HASH: ${{ github.sha }} - PUBLIC_SERVER_API_URL: https://sky.shiiyu.moe/api/ - PUBLIC_API_URL: https://sky.shiiyu.moe/api/ + PUBLIC_SERVER_API_URL: https://api.shiiyu.moe/api/ SERVER_API_TOKEN: ${{ secrets.SERVER_API_TOKEN }} - name: Get preview alias diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d457012dd..b9387d45c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,10 +24,9 @@ jobs: fetch-depth: 0 - name: Setup pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/setup@v3 with: - version: 11.11.0 - run_install: false + version: 12 - name: Setup Node.js uses: actions/setup-node@v7 @@ -62,10 +61,9 @@ jobs: fetch-depth: 0 - name: Setup pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/setup@v3 with: - version: 11.11.0 - run_install: false + version: 12 - name: Setup Node.js uses: actions/setup-node@v7 @@ -105,10 +103,9 @@ jobs: fetch-depth: 0 - name: Setup pnpm - uses: pnpm/action-setup@v6 + uses: pnpm/setup@v3 with: - version: 11.11.0 - run_install: false + version: 12 - name: Setup Node.js uses: actions/setup-node@v7 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 661405c25..08701394c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,6 +7,8 @@ jobs: vitest: name: Vitest (Server + Browser) runs-on: ubuntu-latest + env: + BETTER_AUTH_SECRET: ci-only-test-secret steps: - name: Checkout diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 49739894b..6d58e28d4 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -2,7 +2,7 @@ name: Website on: push: - paths: ["src/**", "Dockerfile", "package.json", ".changeset/**", ".github/workflows/website.yml"] + paths: ["src/**", "Dockerfile", "package.json", "vite.config.ts", ".changeset/**", ".github/workflows/website.yml"] workflow_dispatch: env: @@ -20,7 +20,6 @@ jobs: && github.event_name != 'pull_request' outputs: should_deploy: ${{ steps.decision.outputs.should_deploy }} - server_api_url: ${{ steps.decision.outputs.server_api_url }} steps: - name: Checkout repository uses: actions/checkout@v7 @@ -29,22 +28,16 @@ jobs: id: decision run: | VERSION=$(node -p "require('./package.json').version") - SERVER_API_URL=cupcake.shiiyu.moe SHOULD_DEPLOY=false if [ "$GITHUB_REF" = "refs/heads/dev" ]; then SHOULD_DEPLOY=true - else - SERVER_API_URL=sky.shiiyu.moe - - if [[ "$VERSION" != *beta* ]]; then - SHOULD_DEPLOY=true - fi + elif [[ "$VERSION" != *beta* ]]; then + SHOULD_DEPLOY=true fi echo "Detected version: $VERSION" echo "should_deploy=$SHOULD_DEPLOY" >> "$GITHUB_OUTPUT" - echo "server_api_url=$SERVER_API_URL" >> "$GITHUB_OUTPUT" checks: needs: prepare @@ -73,20 +66,13 @@ jobs: - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 - build: - needs: prepare - if: needs.prepare.outputs.should_deploy == 'true' - uses: ./.github/workflows/build.yml - with: - server-api-url: ${{ needs.prepare.outputs.server_api_url }} - secrets: - server-api-token: ${{ secrets.SERVER_API_TOKEN }} - package: name: Package into Container runs-on: ubuntu-latest - needs: [prepare, checks, analyze, build] + needs: [prepare, checks, analyze] if: needs.prepare.outputs.should_deploy == 'true' + environment: + name: ${{ github.ref_name == 'prod' && 'production' || 'development' }} permissions: packages: write @@ -123,7 +109,11 @@ jobs: push: true build-args: | PUBLIC_COMMIT_HASH=${{ env.SHORT_SHA }} - PUBLIC_SERVER_API_URL=https://${{ needs.prepare.outputs.server_api_url }}/api/ + PUBLIC_RELEASE_CHANNEL=${{ github.ref_name == 'prod' && 'stable' || 'beta' }} + PUBLIC_SERVER_API_URL=https://${{ github.ref_name == 'prod' && 'api' || 'beta-api' }}.shiiyu.moe/api/ + ORIGIN=https://sky.shiiyu.moe + secrets: | + maintenance_bypass=${{ secrets.MAINTENANCE_BYPASS_TOKEN }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitignore b/.gitignore index 7e3793d27..bb79b30e1 100644 --- a/.gitignore +++ b/.gitignore @@ -113,13 +113,11 @@ vite.config.ts.timestamp-* .env .env.* !.env.example -# Sentry Config File -.env.sentry-build-plugin # Playwright test-results coverage/ playwright-report/ test-results/ -# Sisyphus planning artifacts -.sisyphus/ +# Eslint cache +.eslintcache \ No newline at end of file diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 00775d613..05c548309 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -5,6 +5,7 @@ "singleQuote": false, "trailingComma": "none", "bracketSameLine": true, + "sortPackageJson": true, "printWidth": 120, "sortImports": { "newlinesBetween": false @@ -12,7 +13,7 @@ "jsdoc": true, "sortTailwindcss": { "stylesheet": "src/routes/layout.css", - "functions": ["cn", "clsx", "payload"], + "functions": ["cn", "payload"], "attributes": ["class", "class:*", "class:name", "payload", "/.*Classes/"], "preserveWhitespace": false }, @@ -26,6 +27,7 @@ "/static/", ".changeset/", "/drizzle/", - "/src/routes/typeset.css" + "/src/routes/typeset.css", + ".github/{agents,skills}/**" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 96189181e..70a3f817f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,7 +21,7 @@ "typescript": "typescript", "svelte": "html" }, - "tailwindCSS.classFunctions": ["cn", "clsx", "payload"], + "tailwindCSS.classFunctions": ["cn", "payload"], "tailwindCSS.classAttributes": ["class", "className", "ngClass", "class:list", "payload"], "tailwindCSS.experimental.classRegex": [ ["\\b\\w*Classes\\s*=\\s*[\"']([^\"']*)[\"']", "([^\\s]+)"], @@ -29,5 +29,6 @@ ], "js/ts.updateImportsOnFileMove.enabled": "prompt", "eslint.validate": ["javascript", "typescript", "svelte"], - "oxc.fmt.configPath": ".oxfmtrc.json" + "oxc.fmt.configPath": ".oxfmtrc.json", + "js/ts.tsdk.path": "node_modules/typescript/lib" } diff --git a/AGENTS.md b/AGENTS.md index 41daf1725..22ce75107 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,37 +1,108 @@ -# Repository Guidelines +# AGENTS.md -## Project Structure & Module Organization +Follow these instructions when working on SkyCrypt Frontend. Nested `AGENTS.md` files may add instructions for their directories. See `CONTRIBUTING.md` for setup and release policy. -SkyCrypt is a SvelteKit 2 application built with TypeScript and Svelte 5. Application code lives in `src/`: reusable UI belongs in `lib/components`, structural composition in `lib/layouts`, domain features in `lib/sections`, utilities and API clients in `lib/shared`, server-only code in `lib/server`, and reactive contexts in `context`. Routes live in `src/routes`, while static assets belong in `static/`. Colocate tests with implementation files; place shared test helpers in `src/test-utils`. +## Working in this repository -Follow the `components -> layouts -> sections` layering. Initialize global contexts in `src/routes/+layout.svelte`. Do not edit Orval-generated API files manually; regenerate them with the configured generator. +- Read the code, configuration, and tests relevant to the task before editing. Preserve unrelated staged and unstaged work. +- Reuse existing helpers and components before introducing dependencies or abstractions. +- Update this file when project practices change, or when the user states a preference or corrects your approach in a way that should apply to future work. Add or update the rule without being asked and mention it in your report. Check instructions against the repository and link to existing documentation instead of repeating it. Keep machine-specific paths out of this file. -## Build, Test, and Development Commands +## Stack and setup -Use Node 24 and pnpm 11; other package managers are unsupported. +- SkyCrypt is a Hypixel SkyBlock profile viewer built with SvelteKit 2, Svelte 5, strict TypeScript, and Tailwind CSS 4. Production uses the Node adapter. +- Use Node 24 and pnpm 12, as required by `package.json` and CI. Other runtimes and package managers are unsupported. Keep `pnpm-lock.yaml` in sync with dependency changes. +- Install with `pnpm install`. Copy `.env.example` to `.env` without overwriting an existing file. Never commit secrets or local environment files. +- Profile data and end-to-end tests require the Go backend from the separate SkyCrypt-Backend repository. Newsroom uploads go to Cloudflare R2. See `.env.example` for service URLs. +- Database and authentication code use PostgreSQL, Drizzle, and Better Auth. `pnpm db:start` starts local PostgreSQL. Server startup applies migrations from `drizzle/` through `src/hooks.server.ts`; builds skip migration execution. -- `pnpm dev`: start the Vite development server. -- `pnpm build`: create a production build. -- `pnpm preview`: serve the production build locally. -- `pnpm check`: run Svelte and TypeScript diagnostics. -- `pnpm lint`: run oxfmt, ESLint, and correctness checks. -- `pnpm test`: run Vitest once. -- `pnpm test:coverage`: run tests with V8 coverage. -- `pnpm test:e2e`: run Playwright end-to-end tests. -- `pnpm format`: apply repository formatting. +## Structure and boundaries -## Coding Style & Naming Conventions +| Location | Purpose | +| --------------------- | ---------------------------------------------------------------------- | +| `src/lib/components/` | Reusable UI and feature components; shared UI primitives live in `ui/` | +| `src/lib/layouts/` | Structural composition of components | +| `src/lib/sections/` | Domain sections composed from layouts and components | +| `src/lib/shared/` | Shared utilities, themes, API clients, and remote functions | +| `src/lib/server/` | Server-only authentication, integrations, and database code | +| `src/lib/hooks/` | Reusable Svelte hooks | +| `src/lib/types/` | Shared TypeScript types | +| `src/context/` | Reactive contexts and preferences | +| `src/routes/` | SvelteKit routes and route-specific remote functions | +| `src/test-utils/` | Shared test wrappers and helpers | +| `e2e/` | Playwright user-flow tests | +| `drizzle/` | SQL migrations and migration metadata | +| `static/` | Public assets | +| `scripts/` | Release and maintenance scripts | -oxfmt enforces two-space indentation, double quotes, no trailing commas, and ordered Tailwind classes. Keep TypeScript strict and prefer aliases such as `$lib`, `$ctx`, and `$types`. Use Svelte 5 runes (`$state`, `$derived`, `$props`) and snippets instead of legacy reactive declarations, `export let`, or slots. Name Svelte components in PascalCase, utilities in camelCase, and route files using SvelteKit conventions. Prefer Tailwind v4 utilities and the shared `cn()` helper. +- Compose components into layouts, then layouts into sections. Components must not depend on sections. +- Initialize global contexts in `src/routes/+layout.svelte`. Keep request-specific user and session state out of shared server globals. +- Use configured aliases such as `#lib`, `$ctx`, `$types`, `$ui`, and `$utils`. Alias and SvelteKit configuration live in `vite.config.ts`. +- Write local and alias imports without `.js`/`.ts` extensions or a trailing `/index` (`#lib/server/db`, `./format`). Keep the extension on `.svelte.ts` modules so they aren't read as components. shadcn-managed files in `src/lib/components/ui/` and Orval output keep their generated style. `#lib` resolves through the Vite alias and the `#lib/*` TypeScript path, not only the `package.json` import map, which needs exact file names. +- Keep credentials and database access in server-only code. Treat every `PUBLIC_*` environment variable as exposed to the browser. +- `src/routes/api/internal/` holds routes only the Go backend calls (API key verification and usage reporting), guarded by `SERVER_API_TOKEN` through `requireBackendToken`. nginx must never route `/api/internal` publicly. The backend enforces API key rate limits, so Better Auth's own API key rate limiter stays disabled. +- Log with evlog, never `console.*` in server code (ESLint enforces this). Configure it in `evlog.config.ts`; `src/hooks.server.ts` wires the hooks, Better Auth identity and drains. In a request, add context to the single wide event with `locals.log.set({ ... })` instead of extra log lines. Outside a request use `log` from `evlog`: `log.info("tag", "message")`, or `log.error({ action: "domain.event", error })` so HyperDX can filter on `action`. Output is plain text in the Dokploy Logs tab and ships to HyperDX when `HYPERDX_OTLP_ENDPOINT` is set (dev writes NDJSON to `.evlog/logs`, readable with `pnpm exec evlog logs`). Browser code logs with `log` from `evlog/client` (set up in `src/hooks.client.ts`); warnings and errors post to `/api/client-logs`, an unauthenticated endpoint that sanitizes and rate limits input, so never trust or extend its payload without updating `src/lib/server/client-logs.ts`. -## Testing Guidelines +## Implementation conventions -Write focused Vitest tests beside the code. Use `*.spec.ts` for Node tests and `*.svelte.spec.ts` for browser/component tests. Add regression coverage for behavior changes and use Playwright for complete user flows. Run `pnpm lint` and relevant tests before submitting changes. +- Use Svelte 5 runes (`$state`, `$derived`, `$props`) and snippets. Avoid legacy reactive declarations, `export let`, and slots in new code. +- Use the Svelte MCP to get the latest svelte documentation and conventions. Use the async flag to get the latest SvelteKit documentation and conventions for async svelte and remote functions, as that is the default for this project (instead of +page.server.ts way of loading data). +- The project enables async Svelte compilation and SvelteKit remote functions. Use `--async` when validating with Svelte MCP/CLI tooling. +- Check official documentation before implementing: the Svelte MCP for Svelte and SvelteKit, the library's own docs (for example takumi, Better Auth, Cloudflare) and the Node 24 docs for server code. Prefer SvelteKit features, then Node 24 built-ins, then library features, then hand-written code. Context7 can lag behind official docs. Say which docs you checked when reporting. +- Use SvelteKit remote functions in `*.remote.ts` for new data loading and mutations instead of adding `+page.server.ts`. Migrate existing server route files only when the task calls for it. +- Validate remote-function inputs and check authentication and authorization on the server. Follow nearby implementations, and check permissions in each protected mutation even when route guards or hidden controls restrict access. +- Use Tailwind utilities, the shared `cn()` helper, and existing theme tokens and UI primitives. UI changes must work with a keyboard, show focus, adapt to screen size, and support existing themes. +- Name reusable Svelte components in PascalCase and utilities in camelCase; follow SvelteKit route naming and nearby feature-file conventions. +- Follow `.oxfmtrc.json`: two spaces, double quotes, no trailing commas, sorted imports, and ordered Tailwind classes. Format only changed files. +- Comment only what the code cannot say: a non-obvious reason, a gotcha, a security constraint. Don't restate what the code does. +- Never nest ternaries (ESLint enforces `no-nested-ternary`). Use `if`/`else`, an early-returning helper, or a lookup object instead. +- Use braces on `if`/`else` blocks. Skip them only for a short single-statement guard such as `if (!user) return;`. -## Commit & Pull Request Guidelines +## Newsroom and rich text -Use Conventional Commits, for example `feat(newsroom): add post filters` or `fix(theme): preserve contrast`. Keep commits scoped and intentional. Pull requests should explain the problem and solution, link relevant issues, list verification commands, and include before/after screenshots for visible UI changes. Add a changeset for user-facing release changes when appropriate. +- Posts and banners live in `src/lib/server/db/schema/content.schema.ts` and are managed under `admin-dashboard/posts` and `admin-dashboard/banners`, gated by the `content: ["manage"]` permission. A published post keeps its live columns while edits autosave to `draft`; every publish writes a `post_revision`. +- The editor is Edra, vendored in `src/lib/components/edra/` (Tiptap v3). We own that code: edit it directly. `getContentExtensions()` is the server-safe schema and must stay free of `.svelte` imports; node names and attributes must match the editor's. +- Store editor JSON and render it on the server with `renderContent` in `src/lib/server/rich-text.ts`. Call `assertValidContent` before every save; it checks the schema and allows only safe links and embed hosts. Never render user content with the editor on public pages. +- Show users with `UserChip` (`src/lib/components/misc/`) and `getPublicProfiles` (`src/lib/server/public-profile.ts`): the primary Minecraft account, with the Discord profile on hover or tap. Keep private fields out of `PublicProfile`. +- Live data uses `query.live` with `watch()` from `src/lib/server/live.ts`; call `publish()` after changing posts or banners so open pages update. -## Configuration & Security +## Generated code and database changes -Copy `.env.example` for local configuration and never commit secrets. Keep credentials in server-only modules; expose client values only when intentionally configured as public. +- Do not manually edit Orval-generated API clients or schemas in `src/lib/shared/api/`. Change `orval.config.ts`, custom mutators, or the upstream API definition, then regenerate the relevant target. +- Run `pnpm exec orval --project ` for `skycrypt`, `skycryptZod`, or `patreon`. SkyCrypt targets read `http://localhost:8080/api/openapi/doc.json`; Patreon reads its configured upstream spec. Required services must be available. +- Edit database schemas in `src/lib/server/db/schema/`, then run `pnpm db:generate` and review the SQL and metadata in `drizzle/`. Do not rewrite applied migrations. +- `pnpm auth:schema` regenerates the Better Auth schema from `src/lib/server/auth.ts`. Review the generated changes and generate any required database migration separately. +- `pnpm db:push` directly changes the configured database; use it only for local schema work. Commit migrations for schema changes. Drizzle CLI commands require `DATABASE_URL` in the process environment. + +## Commands and verification + +| Command | Purpose | +| ---------------------------------------------- | ----------------------------------------------------------------- | +| `pnpm dev` | Start Vite at `http://localhost:5173` | +| `pnpm check` | Synchronize SvelteKit types and run Svelte/TypeScript diagnostics | +| `pnpm lint` | Check formatting, run ESLint, and run `pnpm check` | +| `pnpm exec oxfmt --write ` | Format selected files | +| `pnpm format` | Format the repository | +| `pnpm test` | Run both Vitest projects once | +| `pnpm exec vitest run --project server ` | Run a focused Node test | +| `pnpm exec vitest run --project client ` | Run a focused browser/component test | +| `pnpm test:coverage` | Run Vitest with V8 coverage | +| `pnpm test:e2e` | Run Playwright tests; starts or reuses the local dev server | +| `pnpm build` | Create the production build | +| `pnpm preview` | Serve the build locally at `http://localhost:4173` | +| `pnpm runbuild` | Start the built Node server | + +- Add regression tests beside the code when behavior changes. Use `*.spec.ts` for Node tests and `*.svelte.spec.ts` for browser/component tests. Reuse helpers from `src/test-utils/`. +- Only write tests that would catch a real bug: logic, parsing, edge cases, security checks, persistence and migrations, and user flows that broke before. Don't test that something renders, that a prop or class is applied, that a constant or lookup table has its current values, or how a library behaves. A test that has to change whenever the UI changes on purpose, without ever catching a regression, costs more than it saves. Delete such tests when you find them. +- Vitest has `server` and `client` projects in `vite.config.ts`. The client project uses headless Chromium and requires `pnpm exec playwright install chromium`. Tests must make assertions; `expect.requireAssertions` is enabled. +- Run `pnpm lint`, relevant tests, and `pnpm build` for code changes before submitting. For documentation-only changes, check formatting and the accuracy of referenced paths and commands. +- End-to-end tests run locally with the backend and its required API credentials; they are currently disabled in CI. A production build can also require backend access for prerendered data. +- Report which checks you ran, their results, and anything you could not run. Never report a skipped check as passing. + +## Commits, pull requests, and releases + +- Use Conventional Commits, for example `fix(theme): preserve contrast`. The commit-message hook runs commitlint. +- Follow `.github/PULL_REQUEST_TEMPLATE.md`: explain the problem and resulting behavior, link relevant issues, list verification, and include before/after screenshots for visible UI changes. Note migration or environment requirements. +- Add a changeset with `pnpm changeset` when the change belongs in the release changelog. Documentation-only agent guidance does not need one. +- Changesets target `dev`. Automation creates beta releases on `dev` and stable releases on `prod`. Follow `CONTRIBUTING.md` for promotion and changeset cleanup. Run release scripts only for an explicit release task. +- Preserve applicable license notices. New contributions default to AGPLv3; brand assets explicitly listed in `NOTICE` and `static/BRAND_ASSETS_LICENSE` retain their MIT exception. diff --git a/CHANGELOG.md b/CHANGELOG.md index fb9706398..309d24b45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,191 @@ # Changelog +## 4.4.0 + +### Minor Changes + +- API keys now work against the backend API, which moved to api.shiiyu.moe. The API docs links point to its new home. _[`#367`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/367) [`5a52f6d`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/5a52f6de32e7100c66e011f90086a3d9683b223a) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.4.0-beta.0 + +### Minor Changes + +- API keys now work against the backend API, which moved to api.shiiyu.moe. The API docs links point to its new home. _[`#367`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/367) [`5a52f6d`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/5a52f6de32e7100c66e011f90086a3d9683b223a) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0 + +### Minor Changes + +- Add a staff admin dashboard with trial moderator, moderator, head moderator and admin roles, review queues for API access and rate limit requests, API key and user management, and an audit log of staff actions _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`a2a581d`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a2a581d688a286dab8296c0ddf0f366e7084c5e8) [@DarthGigi](https://github.com/DarthGigi)_ +- Admin dashboard: API key detail pages with editable name, scopes and metadata, key deletion, a developer mode toggle for users, and automatic bans for accounts that link a banned user's Minecraft account. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`843685f`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/843685f074bc03373f2214159789502fb7d5396d) [@DarthGigi](https://github.com/DarthGigi)_ +- Add a Beta Version switch to the settings. The beta now runs on sky.shiiyu.moe for visitors who turn it on, and cupcake.shiiyu.moe redirects to sky.shiiyu.moe. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`648ab0e`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/648ab0e061f085a2f8a82d9e734a6f9f2318d064) [@DarthGigi](https://github.com/DarthGigi)_ +- Replace Payload CMS with a built-in newsroom: admins write, schedule and publish posts in the admin dashboard with a rich text editor, keep a publish history, and manage site-wide banners that reach open pages live. Post authors show their Minecraft account, with their Discord profile on hover or tap _[`#359`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/359) [`a3ae439`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a3ae4395144bae7a95b8e6830cf8bbfa581a80ee) [@DarthGigi](https://github.com/DarthGigi)_ +- Feat: migrate to sveltekit v3 _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`17d5428`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/17d542800a6fde71b91fb0e11655df2c0262d95b) [@DarthGigi](https://github.com/DarthGigi)_ +- Add developer mode with a dashboard developer section where users can request API access, generate or regenerate an API key after admin approval, request rate limit increases and open the API docs _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`036494e`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/036494ef24303116751872e75759b2ace71eedb4) [@DarthGigi](https://github.com/DarthGigi)_ +- Store Discord username, primary guild, and avatar, banner, and avatar decoration hashes in an application-owned table, refresh them after successful Discord sign-in, and expose them through the custom session. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Add structured logging with evlog: one wide event per request (with the signed-in user), readable text output in the container logs, and optional shipping to Grafana Loki via `LOKI_ENDPOINT`. Server `console.*` calls now use evlog. _[`#357`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/357) [`dbc47c6`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/dbc47c656ce1a3a8b3e64403ad73c9336ba50ced) [@DarthGigi](https://github.com/DarthGigi)_ +- Complete the dashboard with account linking, profile and session settings, and Patreon membership details. Move dashboard loading and membership verification to authenticated remote functions. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + + Refine dashboard navigation, account connections, donator benefit previews, and mobile session settings. + +- Store Minecraft accounts returned by MC-ID separately from authentication accounts. Sync UUIDs, usernames, and primary-account status after linking, and add a dashboard sync action with token refresh and reconnect support. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Anyone can now create a SkyCrypt account with Discord; the sign-up whitelist is gone. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`ab32c3b`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/ab32c3b21e51145a71470071990042bab9091593) [@DarthGigi](https://github.com/DarthGigi)_ +- Let verified Minecraft accounts choose and save permanent profile emojis from Patreon support or existing UUID grants. Add colored heart selection, a searchable emoji picker with skin tones, custom emoji validation, profile previews, and emoji display on stats pages. Refresh the donator perks page, correct donation amounts to USD, automatically check support after linking Patreon, and store the verification countdown in localStorage while enforcing the rate limit in server memory. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Remove profile editing from settings, improve the active sessions list, and add personal data export and account deletion. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Add an avatar and account menu to the dashboard sidebar footer with account settings and sign-out actions. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + +### Patch Changes + +- Speed up stats pages and cards: the profile and embed load in parallel, card renders skip the username lookup and are capped under bursts, and banners and latest posts are shared across open pages instead of queried per visitor. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`00a26eb`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/00a26eb55dd07c7ddb43971178314b17f9aa483a) [@DarthGigi](https://github.com/DarthGigi)_ +- Feat: migrate to sentry v11 _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`79e390c`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/79e390ceb1d9adb9b73e4367cac961fc24879c2e) [@DarthGigi](https://github.com/DarthGigi)_ +- Render emojis progressively and cache search terms to reduce emoji picker opening and search work while preserving substring search and allowed emoji restrictions. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + + Initialize the profile emoji picker inside its popover so the first emoji is highlighted and its footer preview appears when opening. + +- Validate profile emoji inputs in the server save helper and check stored entitlement levels before displaying emojis. Reject unsupported entitlement levels. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Ship logs to HyperDX instead of Grafana Loki (`HYPERDX_OTLP_ENDPOINT` and `HYPERDX_API_KEY` replace `LOKI_*`). _[`#358`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/358) [`858e64b`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/858e64bc93ca2c841aaea83d44083ad49b6112c1) [@DarthGigi](https://github.com/DarthGigi)_ +- Make stats pages much lighter: the icon font drops from 2 MB to 69 KB, the enchanted glint is a 31 KB animated AVIF instead of a 730 KB GIF, and the 3D skin viewer, settings panes, theme editor and card builder load only when used. Signed-in requests no longer run extra database queries for the session, and card renders queue under load instead of failing. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`941a56c`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/941a56cff14198e12468091c917e3477f486f617) [@DarthGigi](https://github.com/DarthGigi)_ +- Harden the theme image proxy against requests to internal addresses, including via DNS and redirects, and cap image size while streaming. Load the card builder only when it is opened, and drop unpublished posts from the sitemap without a restart. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`65bacc5`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/65bacc5a248d49ed7e92a52f5824db6545b62515) [@DarthGigi](https://github.com/DarthGigi)_ +- Feat: remove Sentry _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`6b255d1`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/6b255d172e7f142fe341fcef62c4cee04f2ff2cc) [@DarthGigi](https://github.com/DarthGigi)_ +- Stop player and profile names from reaching other backend routes: invalid names on stats pages now return 404, and backend request paths are escaped so `.` and `..` can no longer be normalized away. Client-side navigation between profiles no longer waits for the Discord embed data. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`a5e2966`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a5e2966a49e43da15efd95db8fc2e19040643e27) [@DarthGigi](https://github.com/DarthGigi)_ +- Load max-level enchantments from the backend constants API. _[`#345`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/345) [`22b69c9`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/22b69c9714324955032928be83287ba66390a3bc) [@cataladev](https://github.com/cataladev)_ +- Preload the main Montserrat font so body text renders sooner, and cache in-site card previews for five minutes. _[`#361`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/361) [`3fa9bd5`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/3fa9bd5c3799f4cb6911a0d88a99d5c7d191e4d9) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.10 + +### Minor Changes + +- Add a Beta Version switch to the settings. The beta now runs on sky.shiiyu.moe for visitors who turn it on, and cupcake.shiiyu.moe redirects to sky.shiiyu.moe. _[`648ab0e`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/648ab0e061f085a2f8a82d9e734a6f9f2318d064) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.9 + +### Patch Changes + +- Speed up stats pages and cards: the profile and embed load in parallel, card renders skip the username lookup and are capped under bursts, and banners and latest posts are shared across open pages instead of queried per visitor. _[`00a26eb`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/00a26eb55dd07c7ddb43971178314b17f9aa483a) [@DarthGigi](https://github.com/DarthGigi)_ +- Make stats pages much lighter: the icon font drops from 2 MB to 69 KB, the enchanted glint is a 31 KB animated AVIF instead of a 730 KB GIF, and the 3D skin viewer, settings panes, theme editor and card builder load only when used. Signed-in requests no longer run extra database queries for the session, and card renders queue under load instead of failing. _[`941a56c`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/941a56cff14198e12468091c917e3477f486f617) [@DarthGigi](https://github.com/DarthGigi)_ +- Harden the theme image proxy against requests to internal addresses, including via DNS and redirects, and cap image size while streaming. Load the card builder only when it is opened, and drop unpublished posts from the sitemap without a restart. _[`65bacc5`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/65bacc5a248d49ed7e92a52f5824db6545b62515) [@DarthGigi](https://github.com/DarthGigi)_ +- Stop player and profile names from reaching other backend routes: invalid names on stats pages now return 404, and backend request paths are escaped so `.` and `..` can no longer be normalized away. Client-side navigation between profiles no longer waits for the Discord embed data. _[`a5e2966`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a5e2966a49e43da15efd95db8fc2e19040643e27) [@DarthGigi](https://github.com/DarthGigi)_ +- Preload the main Montserrat font so body text renders sooner, and cache in-site card previews for five minutes. _[`3fa9bd5`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/3fa9bd5c3799f4cb6911a0d88a99d5c7d191e4d9) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.8 + +### Minor Changes + +- Anyone can now create a SkyCrypt account with Discord; the sign-up whitelist is gone. _[`ab32c3b`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/ab32c3b21e51145a71470071990042bab9091593) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.7 + +### Minor Changes + +- Admin dashboard: API key detail pages with editable name, scopes and metadata, key deletion, a developer mode toggle for users, and automatic bans for accounts that link a banned user's Minecraft account. _[`843685f`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/843685f074bc03373f2214159789502fb7d5396d) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.6 + +### Minor Changes + +- Replace Payload CMS with a built-in newsroom: admins write, schedule and publish posts in the admin dashboard with a rich text editor, keep a publish history, and manage site-wide banners that reach open pages live. Post authors show their Minecraft account, with their Discord profile on hover or tap _[`#359`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/359) [`a3ae439`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a3ae4395144bae7a95b8e6830cf8bbfa581a80ee) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.5 + +### Minor Changes + +- Add a staff admin dashboard with trial moderator, moderator, head moderator and admin roles, review queues for API access and rate limit requests, API key and user management, and an audit log of staff actions _[`a2a581d`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a2a581d688a286dab8296c0ddf0f366e7084c5e8) [@DarthGigi](https://github.com/DarthGigi)_ +- Add developer mode with a dashboard developer section where users can request API access, generate or regenerate an API key after admin approval, request rate limit increases and open the API docs _[`036494e`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/036494ef24303116751872e75759b2ace71eedb4) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.4 + +### Patch Changes + +- Ship logs to HyperDX instead of Grafana Loki (`HYPERDX_OTLP_ENDPOINT` and `HYPERDX_API_KEY` replace `LOKI_*`). _[`#358`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/358) [`858e64b`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/858e64bc93ca2c841aaea83d44083ad49b6112c1) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.3 + +### Minor Changes + +- Add structured logging with evlog: one wide event per request (with the signed-in user), readable text output in the container logs, and optional shipping to Grafana Loki via `LOKI_ENDPOINT`. Server `console.*` calls now use evlog. _[`#357`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/357) [`dbc47c6`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/dbc47c656ce1a3a8b3e64403ad73c9336ba50ced) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.2 + +### Patch Changes + +- Load max-level enchantments from the backend constants API. _[`#345`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/345) [`22b69c9`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/22b69c9714324955032928be83287ba66390a3bc) [@cataladev](https://github.com/cataladev)_ + +## 4.3.0-beta.1 + +### Patch Changes + +- Feat: remove Sentry _[`6b255d1`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/6b255d172e7f142fe341fcef62c4cee04f2ff2cc) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.3.0-beta.0 + +### Minor Changes + +- Feat: migrate to sveltekit v3 _[`17d5428`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/17d542800a6fde71b91fb0e11655df2c0262d95b) [@DarthGigi](https://github.com/DarthGigi)_ +- Store Discord username, primary guild, and avatar, banner, and avatar decoration hashes in an application-owned table, refresh them after successful Discord sign-in, and expose them through the custom session. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Complete the dashboard with account linking, profile and session settings, and Patreon membership details. Move dashboard loading and membership verification to authenticated remote functions. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + + Refine dashboard navigation, account connections, donator benefit previews, and mobile session settings. + +- Store Minecraft accounts returned by MC-ID separately from authentication accounts. Sync UUIDs, usernames, and primary-account status after linking, and add a dashboard sync action with token refresh and reconnect support. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Let verified Minecraft accounts choose and save permanent profile emojis from Patreon support or existing UUID grants. Add colored heart selection, a searchable emoji picker with skin tones, custom emoji validation, profile previews, and emoji display on stats pages. Refresh the donator perks page, correct donation amounts to USD, automatically check support after linking Patreon, and store the verification countdown in localStorage while enforcing the rate limit in server memory. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Remove profile editing from settings, improve the active sessions list, and add personal data export and account deletion. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ +- Add an avatar and account menu to the dashboard sidebar footer with account settings and sign-out actions. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + +### Patch Changes + +- Feat: migrate to sentry v11 _[`79e390c`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/79e390ceb1d9adb9b73e4367cac961fc24879c2e) [@DarthGigi](https://github.com/DarthGigi)_ +- Render emojis progressively and cache search terms to reduce emoji picker opening and search work while preserving substring search and allowed emoji restrictions. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + + Initialize the profile emoji picker inside its popover so the first emoji is highlighted and its footer preview appears when opening. + +- Validate profile emoji inputs in the server save helper and check stored entitlement levels before displaying emojis. Reject unsupported entitlement levels. _[`4468767`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/4468767b8434af2c7737b8d18d1883640db05d1b) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.2.0 + +### Minor Changes + +- Feat: redesign discord embeds _[`#352`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/352) [`9fdabac`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/9fdabace1d71cfdc3dbab5f2cf7a1c685ceec8e3) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.2.0-beta.0 + +### Minor Changes + +- Feat: redesign discord embeds _[`9fdabac`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/9fdabace1d71cfdc3dbab5f2cf7a1c685ceec8e3) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.1.1 + +### Patch Changes + +- Use the player's rank color for Discord component embeds, preferring the plus color and falling back to the default preview color when no valid rank color is available. _[`#349`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/349) [`c027c31`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/c027c31cc48c2f260004d4d0f7dc032063c3af25) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.1.1-beta.0 + +### Patch Changes + +- Use the player's rank color for Discord component embeds, preferring the plus color and falling back to the default preview color when no valid rank color is available. _[`c027c31`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/c027c31cc48c2f260004d4d0f7dc032063c3af25) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.1.0 + +### Minor Changes + +- Use the new component embeds for discord embeds _[`#347`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/347) [`6ff47f5`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/6ff47f5bf899bfacf9e4a384ac1038c83022fd0d) [@DarthGigi](https://github.com/DarthGigi)_ + +### Patch Changes + +- Version prerendered endpoint URLs per build so updated resource packs and other static data appear without clearing browser caches. Preserve saved pack preferences and the commit-based app version, and show the separate prerender version in About. _[`#347`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/347) [`93f5414`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/93f541482372b322ceb5246b29842068fc14ec3c) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.1.0-beta.1 + +### Patch Changes + +- Version prerendered endpoint URLs per build so updated resource packs and other static data appear without clearing browser caches. Preserve saved pack preferences and the commit-based app version, and show the separate prerender version in About. _[`93f5414`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/93f541482372b322ceb5246b29842068fc14ec3c) [@DarthGigi](https://github.com/DarthGigi)_ + +## 4.1.0-beta.0 + +### Minor Changes + +- Use the new component embeds for discord embeds _[`6ff47f5`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/6ff47f5bf899bfacf9e4a384ac1038c83022fd0d) [@DarthGigi](https://github.com/DarthGigi)_ + ## 4.0.0 ### Major Changes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ada29a29b..301d69894 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -87,7 +87,7 @@ The scope is optional but recommended for better categorization. Releases are created automatically based on the branch: -- **dev branch** → Creates prereleases (e.g., `v1.1.0-beta.1`) and deploys to [cupcake.shiiyu.moe](https://cupcake.shiiyu.moe) +- **dev branch** → Creates prereleases (e.g., `v1.1.0-beta.1`) and deploys the beta build of [sky.shiiyu.moe](https://sky.shiiyu.moe), served to visitors who enable **Beta Version** in the settings (a `beta=true` cookie) - **prod branch** → Creates stable releases (e.g., `v1.1.0`) and deploys to [sky.shiiyu.moe](https://sky.shiiyu.moe) Release behavior details: diff --git a/Dockerfile b/Dockerfile index 0e4618b82..4ec55c1b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,5 @@ +# syntax=docker/dockerfile:1 + FROM node:24-alpine AS builder RUN apk add git @@ -8,10 +10,15 @@ RUN corepack enable WORKDIR /app ARG PUBLIC_COMMIT_HASH=0000000 +ARG PUBLIC_RELEASE_CHANNEL=stable ARG PUBLIC_SERVER_API_URL=http://localhost:8080/api/ +ARG ORIGIN=http://localhost:5173 ENV PUBLIC_COMMIT_HASH=$PUBLIC_COMMIT_HASH +ENV PUBLIC_RELEASE_CHANNEL=$PUBLIC_RELEASE_CHANNEL ENV PUBLIC_SERVER_API_URL=$PUBLIC_SERVER_API_URL +ENV ORIGIN=$ORIGIN +ENV PUBLIC_ORIGIN=$ORIGIN COPY package*.json . COPY pnpm-lock.yaml . @@ -24,17 +31,21 @@ COPY .env.example .env COPY . . RUN pnpm run prepare -RUN pnpm run build +RUN --mount=type=secret,id=maintenance_bypass,env=MAINTENANCE_BYPASS_TOKEN pnpm run build RUN pnpm prune --production FROM node:24-alpine ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable pnpm && corepack install -g pnpm@latest-11 +RUN corepack enable pnpm && corepack install -g pnpm@latest-12 WORKDIR /app +ARG ORIGIN=http://localhost:5173 +ENV ORIGIN=$ORIGIN +ENV PUBLIC_ORIGIN=$ORIGIN + COPY --from=builder /app/build build/ COPY --from=builder /app/node_modules node_modules/ COPY --from=builder /app/static static/ diff --git a/README.md b/README.md index f4a44cb53..c39fbac5e 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ `.github/workflows/deploy-workers.yml` runs the existing lint, Svelte/TypeScript, and test checks before building and deploying this fork. `dev` selects the `cloudflare-production` GitHub environment; other branches select `cloudflare-development` and upload a preview version with a branch alias. A missing development Worker is initialized before its first preview upload. -Each GitHub environment must supply the `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` secrets and the `CLOUDFLARE_ENV` variable (`production` or `development`). Restrict `cloudflare-production` to the `dev` branch. Account IDs come from those secrets, not Wrangler files. Both accounts use the Worker name `skycrypt-embed`; production owns `skycrypt-embed.lunarclient.com`, while development has no custom domain. Both environments retain the existing SkyCrypt API URLs. +Each GitHub environment must supply the `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` secrets and the `CLOUDFLARE_ENV` variable (`production` or `development`). Restrict `cloudflare-production` to the `dev` branch. Account IDs come from those secrets, not Wrangler files. Both accounts use the Worker name `skycrypt-embed`; production owns `skycrypt-embed.lunarclient.com`, while development has no custom domain. Both environments call the SkyCrypt API at `https://api.shiiyu.moe/api/`. Before enabling this workflow, provision the GitHub environments and account credentials, configure any required runtime secrets in the destination accounts, and disable the old Workers Builds integration so it does not deploy alongside GitHub Actions. The destination production account must contain the `lunarclient.com` zone. Deployments use `--no-x-provision` and no longer bind the old shared-account observability Tail Worker. @@ -19,7 +19,7 @@ Local validation without deployment: ```sh pnpm install --frozen-lockfile cp .env.example .env -CLOUDFLARE_ENV=development PUBLIC_API_URL=https://sky.shiiyu.moe/api/ PUBLIC_SERVER_API_URL=https://sky.shiiyu.moe/api/ pnpm build +CLOUDFLARE_ENV=development PUBLIC_SERVER_API_URL=https://api.shiiyu.moe/api/ pnpm build pnpm exec wrangler deploy --dry-run --no-x-provision --env development pnpm exec wrangler deploy --dry-run --no-x-provision --env production ``` @@ -30,7 +30,7 @@ pnpm exec wrangler deploy --dry-run --no-x-provision --env production SkyCrypt 🍣

    -

    A Hypixel Skyblock Profile Viewer

    +

    A Hypixel SkyBlock Profile Viewer

    Sponsor @@ -45,7 +45,7 @@ A website that provides per-player information about the game Hypixel SkyBlock. Originally inspired by [LeaPhant's skyblock-stats](https://github.com/LeaPhant/skyblock-stats). - **Website**: https://sky.shiiyu.moe -- **Development Website**: https://cupcake.shiiyu.moe +- **Beta**: turn on Beta Version in the settings on the website - **Backend**: [SkyCrypt-Backend](https://github.com/SkyCryptWebsite/SkyCrypt-Backend) --- diff --git a/components.json b/components.json index b93c1e34d..79e9b83c9 100644 --- a/components.json +++ b/components.json @@ -9,7 +9,7 @@ "utils": "$utils", "ui": "$ui", "hooks": "$hooks", - "lib": "$lib" + "lib": "#lib" }, "typescript": true, "registry": "https://shadcn-svelte.com/registry", diff --git a/drizzle/0000_dapper_killer_shrike.sql b/drizzle/0000_dapper_killer_shrike.sql deleted file mode 100644 index afac68a9b..000000000 --- a/drizzle/0000_dapper_killer_shrike.sql +++ /dev/null @@ -1,86 +0,0 @@ -CREATE TABLE "account" ( - "id" text PRIMARY KEY NOT NULL, - "account_id" text NOT NULL, - "provider_id" text NOT NULL, - "user_id" text NOT NULL, - "access_token" text, - "refresh_token" text, - "id_token" text, - "access_token_expires_at" timestamp, - "refresh_token_expires_at" timestamp, - "scope" text, - "password" text, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp NOT NULL -); ---> statement-breakpoint -CREATE TABLE "apikey" ( - "id" text PRIMARY KEY NOT NULL, - "config_id" text DEFAULT 'default' NOT NULL, - "name" text, - "start" text, - "reference_id" text NOT NULL, - "prefix" text, - "key" text NOT NULL, - "refill_interval" integer, - "refill_amount" integer, - "last_refill_at" timestamp, - "enabled" boolean DEFAULT true, - "rate_limit_enabled" boolean DEFAULT true, - "rate_limit_time_window" integer DEFAULT 86400000, - "rate_limit_max" integer DEFAULT 10, - "request_count" integer DEFAULT 0, - "remaining" integer, - "last_request" timestamp, - "expires_at" timestamp, - "created_at" timestamp NOT NULL, - "updated_at" timestamp NOT NULL, - "permissions" text, - "metadata" text -); ---> statement-breakpoint -CREATE TABLE "session" ( - "id" text PRIMARY KEY NOT NULL, - "expires_at" timestamp NOT NULL, - "token" text NOT NULL, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp NOT NULL, - "ip_address" text, - "user_agent" text, - "user_id" text NOT NULL, - "impersonated_by" text, - CONSTRAINT "session_token_unique" UNIQUE("token") -); ---> statement-breakpoint -CREATE TABLE "user" ( - "id" text PRIMARY KEY NOT NULL, - "name" text NOT NULL, - "email" text NOT NULL, - "email_verified" boolean DEFAULT false NOT NULL, - "image" text, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp DEFAULT now() NOT NULL, - "role" text, - "banned" boolean DEFAULT false, - "ban_reason" text, - "ban_expires" timestamp, - CONSTRAINT "user_email_unique" UNIQUE("email") -); ---> statement-breakpoint -CREATE TABLE "verification" ( - "id" text PRIMARY KEY NOT NULL, - "identifier" text NOT NULL, - "value" text NOT NULL, - "expires_at" timestamp NOT NULL, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp DEFAULT now() NOT NULL -); ---> statement-breakpoint -ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint -ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint -CREATE INDEX "account_userId_idx" ON "account" USING btree ("user_id");--> statement-breakpoint -CREATE INDEX "apikey_configId_idx" ON "apikey" USING btree ("config_id");--> statement-breakpoint -CREATE INDEX "apikey_referenceId_idx" ON "apikey" USING btree ("reference_id");--> statement-breakpoint -CREATE INDEX "apikey_key_idx" ON "apikey" USING btree ("key");--> statement-breakpoint -CREATE INDEX "session_userId_idx" ON "session" USING btree ("user_id");--> statement-breakpoint -CREATE INDEX "verification_identifier_idx" ON "verification" USING btree ("identifier"); \ No newline at end of file diff --git a/drizzle/0000_milky_sir_ram.sql b/drizzle/0000_milky_sir_ram.sql new file mode 100644 index 000000000..4560242c3 --- /dev/null +++ b/drizzle/0000_milky_sir_ram.sql @@ -0,0 +1,251 @@ +CREATE TABLE "account" ( + "id" text PRIMARY KEY NOT NULL, + "account_id" text NOT NULL, + "provider_id" text NOT NULL, + "user_id" text NOT NULL, + "access_token" text, + "refresh_token" text, + "id_token" text, + "access_token_expires_at" timestamp, + "refresh_token_expires_at" timestamp, + "scope" text, + "password" text, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp NOT NULL +); +--> statement-breakpoint +CREATE TABLE "apikey" ( + "id" text PRIMARY KEY NOT NULL, + "config_id" text DEFAULT 'default' NOT NULL, + "name" text, + "start" text, + "reference_id" text NOT NULL, + "prefix" text, + "key" text NOT NULL, + "refill_interval" integer, + "refill_amount" integer, + "last_refill_at" timestamp, + "enabled" boolean DEFAULT false, + "rate_limit_enabled" boolean DEFAULT true, + "rate_limit_time_window" integer DEFAULT 300000, + "rate_limit_max" integer DEFAULT 300, + "request_count" integer DEFAULT 0, + "remaining" integer, + "last_request" timestamp, + "expires_at" timestamp, + "created_at" timestamp NOT NULL, + "updated_at" timestamp NOT NULL, + "permissions" text, + "metadata" text +); +--> statement-breakpoint +CREATE TABLE "session" ( + "id" text PRIMARY KEY NOT NULL, + "expires_at" timestamp NOT NULL, + "token" text NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp NOT NULL, + "ip_address" text, + "user_agent" text, + "user_id" text NOT NULL, + "impersonated_by" text, + CONSTRAINT "session_token_unique" UNIQUE("token") +); +--> statement-breakpoint +CREATE TABLE "user" ( + "id" text PRIMARY KEY NOT NULL, + "name" text NOT NULL, + "email" text NOT NULL, + "email_verified" boolean DEFAULT false NOT NULL, + "image" text, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL, + "role" text, + "banned" boolean DEFAULT false, + "ban_reason" text, + "ban_expires" timestamp, + "developer_mode" boolean DEFAULT false, + CONSTRAINT "user_email_unique" UNIQUE("email") +); +--> statement-breakpoint +CREATE TABLE "verification" ( + "id" text PRIMARY KEY NOT NULL, + "identifier" text NOT NULL, + "value" text NOT NULL, + "expires_at" timestamp NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "discord_profile" ( + "user_id" text PRIMARY KEY NOT NULL, + "discord_user_id" text NOT NULL, + "username" text, + "primary_guild" jsonb, + "avatar_hash" text, + "banner_hash" text, + "avatar_decoration_hash" text, + "synced_at" timestamp DEFAULT now() NOT NULL, + CONSTRAINT "discord_profile_discord_user_id_unique" UNIQUE("discord_user_id") +); +--> statement-breakpoint +CREATE TABLE "patreon_creator_token" ( + "campaign_id" text PRIMARY KEY NOT NULL, + "access_token" text NOT NULL, + "refresh_token" text NOT NULL, + "expires_at" timestamp, + "updated_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "patreon_membership" ( + "id" text PRIMARY KEY NOT NULL, + "user_id" text NOT NULL, + "patreon_user_id" text NOT NULL, + "member_id" text NOT NULL, + "campaign_id" text NOT NULL, + "lifetime_support_cents" integer DEFAULT 0 NOT NULL, + "currently_entitled_amount_cents" integer DEFAULT 0 NOT NULL, + "patron_status" text, + "entitlement_level" integer DEFAULT 0 NOT NULL, + "verified_at" timestamp DEFAULT now() NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "minecraft_account" ( + "account_id" text NOT NULL, + "uuid" text NOT NULL, + "username" text NOT NULL, + "primary" boolean NOT NULL, + "synced_at" timestamp DEFAULT now() NOT NULL, + CONSTRAINT "minecraft_account_account_id_uuid_pk" PRIMARY KEY("account_id","uuid") +); +--> statement-breakpoint +CREATE TABLE "profile_emoji" ( + "uuid" text PRIMARY KEY NOT NULL, + "emoji" text NOT NULL, + "entitlement_level" integer DEFAULT 1 NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL, + CONSTRAINT "profile_emoji_entitlement_check" CHECK ("profile_emoji"."entitlement_level" between 1 and 2) +); +--> statement-breakpoint +CREATE TABLE "api_key_request" ( + "id" text PRIMARY KEY NOT NULL, + "user_id" text NOT NULL, + "name" text NOT NULL, + "use_case" text NOT NULL, + "description" text NOT NULL, + "url" text NOT NULL, + "status" text DEFAULT 'pending' NOT NULL, + "review_note" text, + "reviewed_by" text, + "reviewed_at" timestamp, + "api_key_id" text, + "terms_accepted_at" timestamp NOT NULL, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "rate_limit_request" ( + "id" text PRIMARY KEY NOT NULL, + "user_id" text NOT NULL, + "api_key_request_id" text NOT NULL, + "requested_max" integer NOT NULL, + "reason" text NOT NULL, + "status" text DEFAULT 'pending' NOT NULL, + "review_note" text, + "reviewed_by" text, + "reviewed_at" timestamp, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "admin_audit_log" ( + "id" text PRIMARY KEY NOT NULL, + "actor_id" text, + "action" text NOT NULL, + "target_user_id" text, + "target_id" text, + "note" text, + "details" jsonb, + "created_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "banner" ( + "id" text PRIMARY KEY NOT NULL, + "content" jsonb NOT NULL, + "variant" text DEFAULT 'info' NOT NULL, + "dismissible" boolean DEFAULT true NOT NULL, + "enabled" boolean DEFAULT true NOT NULL, + "starts_at" timestamp, + "ends_at" timestamp, + "created_by" text, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "post" ( + "id" text PRIMARY KEY NOT NULL, + "slug" text NOT NULL, + "title" text NOT NULL, + "excerpt" text DEFAULT '' NOT NULL, + "type" text NOT NULL, + "tags" text[] DEFAULT '{}'::text[] NOT NULL, + "featured" boolean DEFAULT false NOT NULL, + "hero_image" jsonb, + "content" jsonb NOT NULL, + "seo_title" text DEFAULT '' NOT NULL, + "seo_description" text DEFAULT '' NOT NULL, + "status" text DEFAULT 'draft' NOT NULL, + "published_at" timestamp, + "draft" jsonb, + "author_id" text, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now() NOT NULL, + CONSTRAINT "post_slug_unique" UNIQUE("slug") +); +--> statement-breakpoint +CREATE TABLE "post_revision" ( + "id" text PRIMARY KEY NOT NULL, + "post_id" text NOT NULL, + "data" jsonb NOT NULL, + "published_by" text, + "created_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "discord_profile" ADD CONSTRAINT "discord_profile_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "patreon_membership" ADD CONSTRAINT "patreon_membership_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "minecraft_account" ADD CONSTRAINT "minecraft_account_account_id_account_id_fk" FOREIGN KEY ("account_id") REFERENCES "public"."account"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "api_key_request" ADD CONSTRAINT "api_key_request_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "api_key_request" ADD CONSTRAINT "api_key_request_reviewed_by_user_id_fk" FOREIGN KEY ("reviewed_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "api_key_request" ADD CONSTRAINT "api_key_request_api_key_id_apikey_id_fk" FOREIGN KEY ("api_key_id") REFERENCES "public"."apikey"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "rate_limit_request" ADD CONSTRAINT "rate_limit_request_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "rate_limit_request" ADD CONSTRAINT "rate_limit_request_api_key_request_id_api_key_request_id_fk" FOREIGN KEY ("api_key_request_id") REFERENCES "public"."api_key_request"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "rate_limit_request" ADD CONSTRAINT "rate_limit_request_reviewed_by_user_id_fk" FOREIGN KEY ("reviewed_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "admin_audit_log" ADD CONSTRAINT "admin_audit_log_actor_id_user_id_fk" FOREIGN KEY ("actor_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "admin_audit_log" ADD CONSTRAINT "admin_audit_log_target_user_id_user_id_fk" FOREIGN KEY ("target_user_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "banner" ADD CONSTRAINT "banner_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "post" ADD CONSTRAINT "post_author_id_user_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "post_revision" ADD CONSTRAINT "post_revision_post_id_post_id_fk" FOREIGN KEY ("post_id") REFERENCES "public"."post"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "post_revision" ADD CONSTRAINT "post_revision_published_by_user_id_fk" FOREIGN KEY ("published_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint +CREATE INDEX "account_userId_idx" ON "account" USING btree ("user_id");--> statement-breakpoint +CREATE INDEX "apikey_configId_idx" ON "apikey" USING btree ("config_id");--> statement-breakpoint +CREATE INDEX "apikey_referenceId_idx" ON "apikey" USING btree ("reference_id");--> statement-breakpoint +CREATE INDEX "apikey_key_idx" ON "apikey" USING btree ("key");--> statement-breakpoint +CREATE INDEX "session_userId_idx" ON "session" USING btree ("user_id");--> statement-breakpoint +CREATE INDEX "verification_identifier_idx" ON "verification" USING btree ("identifier");--> statement-breakpoint +CREATE UNIQUE INDEX "patreon_membership_userId_uidx" ON "patreon_membership" USING btree ("user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "patreon_membership_memberId_uidx" ON "patreon_membership" USING btree ("member_id");--> statement-breakpoint +CREATE INDEX "patreon_membership_patreonUserId_idx" ON "patreon_membership" USING btree ("patreon_user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "api_key_request_open_uidx" ON "api_key_request" USING btree ("user_id") WHERE "api_key_request"."status" in ('pending', 'approved');--> statement-breakpoint +CREATE INDEX "api_key_request_status_idx" ON "api_key_request" USING btree ("status");--> statement-breakpoint +CREATE UNIQUE INDEX "rate_limit_request_pending_uidx" ON "rate_limit_request" USING btree ("user_id") WHERE "rate_limit_request"."status" = 'pending';--> statement-breakpoint +CREATE INDEX "rate_limit_request_apiKeyRequestId_idx" ON "rate_limit_request" USING btree ("api_key_request_id");--> statement-breakpoint +CREATE INDEX "rate_limit_request_status_idx" ON "rate_limit_request" USING btree ("status");--> statement-breakpoint +CREATE INDEX "admin_audit_log_createdAt_idx" ON "admin_audit_log" USING btree ("created_at");--> statement-breakpoint +CREATE INDEX "admin_audit_log_actorId_idx" ON "admin_audit_log" USING btree ("actor_id");--> statement-breakpoint +CREATE INDEX "admin_audit_log_targetUserId_idx" ON "admin_audit_log" USING btree ("target_user_id");--> statement-breakpoint +CREATE INDEX "post_status_publishedAt_idx" ON "post" USING btree ("status","published_at");--> statement-breakpoint +CREATE INDEX "post_revision_postId_idx" ON "post_revision" USING btree ("post_id","created_at"); \ No newline at end of file diff --git a/drizzle/meta/0000_snapshot.json b/drizzle/meta/0000_snapshot.json index 3ce5e7662..ba9249ed8 100644 --- a/drizzle/meta/0000_snapshot.json +++ b/drizzle/meta/0000_snapshot.json @@ -1,5 +1,5 @@ { - "id": "38215b0e-303d-4a3b-b06f-661d7774eeb7", + "id": "e37309f2-f09c-4ca2-8107-ef5d636c5b3a", "prevId": "00000000-0000-0000-0000-000000000000", "version": "7", "dialect": "postgresql", @@ -196,7 +196,7 @@ "type": "boolean", "primaryKey": false, "notNull": false, - "default": true + "default": false }, "rate_limit_enabled": { "name": "rate_limit_enabled", @@ -210,14 +210,14 @@ "type": "integer", "primaryKey": false, "notNull": false, - "default": 86400000 + "default": 300000 }, "rate_limit_max": { "name": "rate_limit_max", "type": "integer", "primaryKey": false, "notNull": false, - "default": 10 + "default": 300 }, "request_count": { "name": "request_count", @@ -502,6 +502,13 @@ "type": "timestamp", "primaryKey": false, "notNull": false + }, + "developer_mode": { + "name": "developer_mode", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false } }, "indexes": {}, @@ -586,6 +593,1223 @@ "policies": {}, "checkConstraints": {}, "isRLSEnabled": false + }, + "public.discord_profile": { + "name": "discord_profile", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "discord_user_id": { + "name": "discord_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "primary_guild": { + "name": "primary_guild", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "avatar_hash": { + "name": "avatar_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "banner_hash": { + "name": "banner_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "avatar_decoration_hash": { + "name": "avatar_decoration_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "synced_at": { + "name": "synced_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "discord_profile_user_id_user_id_fk": { + "name": "discord_profile_user_id_user_id_fk", + "tableFrom": "discord_profile", + "tableTo": "user", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "discord_profile_discord_user_id_unique": { + "name": "discord_profile_discord_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "discord_user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.patreon_creator_token": { + "name": "patreon_creator_token", + "schema": "", + "columns": { + "campaign_id": { + "name": "campaign_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.patreon_membership": { + "name": "patreon_membership", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "patreon_user_id": { + "name": "patreon_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "campaign_id": { + "name": "campaign_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "lifetime_support_cents": { + "name": "lifetime_support_cents", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "currently_entitled_amount_cents": { + "name": "currently_entitled_amount_cents", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "patron_status": { + "name": "patron_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "entitlement_level": { + "name": "entitlement_level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "verified_at": { + "name": "verified_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "patreon_membership_userId_uidx": { + "name": "patreon_membership_userId_uidx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "patreon_membership_memberId_uidx": { + "name": "patreon_membership_memberId_uidx", + "columns": [ + { + "expression": "member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "patreon_membership_patreonUserId_idx": { + "name": "patreon_membership_patreonUserId_idx", + "columns": [ + { + "expression": "patreon_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "patreon_membership_user_id_user_id_fk": { + "name": "patreon_membership_user_id_user_id_fk", + "tableFrom": "patreon_membership", + "tableTo": "user", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.minecraft_account": { + "name": "minecraft_account", + "schema": "", + "columns": { + "account_id": { + "name": "account_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "uuid": { + "name": "uuid", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "primary": { + "name": "primary", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "synced_at": { + "name": "synced_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "minecraft_account_account_id_account_id_fk": { + "name": "minecraft_account_account_id_account_id_fk", + "tableFrom": "minecraft_account", + "tableTo": "account", + "columnsFrom": [ + "account_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "minecraft_account_account_id_uuid_pk": { + "name": "minecraft_account_account_id_uuid_pk", + "columns": [ + "account_id", + "uuid" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.profile_emoji": { + "name": "profile_emoji", + "schema": "", + "columns": { + "uuid": { + "name": "uuid", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "emoji": { + "name": "emoji", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "entitlement_level": { + "name": "entitlement_level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "profile_emoji_entitlement_check": { + "name": "profile_emoji_entitlement_check", + "value": "\"profile_emoji\".\"entitlement_level\" between 1 and 2" + } + }, + "isRLSEnabled": false + }, + "public.api_key_request": { + "name": "api_key_request", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "use_case": { + "name": "use_case", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "review_note": { + "name": "review_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reviewed_by": { + "name": "reviewed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reviewed_at": { + "name": "reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "api_key_id": { + "name": "api_key_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "terms_accepted_at": { + "name": "terms_accepted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "api_key_request_open_uidx": { + "name": "api_key_request_open_uidx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"api_key_request\".\"status\" in ('pending', 'approved')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "api_key_request_status_idx": { + "name": "api_key_request_status_idx", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_request_user_id_user_id_fk": { + "name": "api_key_request_user_id_user_id_fk", + "tableFrom": "api_key_request", + "tableTo": "user", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_request_reviewed_by_user_id_fk": { + "name": "api_key_request_reviewed_by_user_id_fk", + "tableFrom": "api_key_request", + "tableTo": "user", + "columnsFrom": [ + "reviewed_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "api_key_request_api_key_id_apikey_id_fk": { + "name": "api_key_request_api_key_id_apikey_id_fk", + "tableFrom": "api_key_request", + "tableTo": "apikey", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.rate_limit_request": { + "name": "rate_limit_request", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "api_key_request_id": { + "name": "api_key_request_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "requested_max": { + "name": "requested_max", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "review_note": { + "name": "review_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reviewed_by": { + "name": "reviewed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reviewed_at": { + "name": "reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "rate_limit_request_pending_uidx": { + "name": "rate_limit_request_pending_uidx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"rate_limit_request\".\"status\" = 'pending'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "rate_limit_request_apiKeyRequestId_idx": { + "name": "rate_limit_request_apiKeyRequestId_idx", + "columns": [ + { + "expression": "api_key_request_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "rate_limit_request_status_idx": { + "name": "rate_limit_request_status_idx", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "rate_limit_request_user_id_user_id_fk": { + "name": "rate_limit_request_user_id_user_id_fk", + "tableFrom": "rate_limit_request", + "tableTo": "user", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "rate_limit_request_api_key_request_id_api_key_request_id_fk": { + "name": "rate_limit_request_api_key_request_id_api_key_request_id_fk", + "tableFrom": "rate_limit_request", + "tableTo": "api_key_request", + "columnsFrom": [ + "api_key_request_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "rate_limit_request_reviewed_by_user_id_fk": { + "name": "rate_limit_request_reviewed_by_user_id_fk", + "tableFrom": "rate_limit_request", + "tableTo": "user", + "columnsFrom": [ + "reviewed_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.admin_audit_log": { + "name": "admin_audit_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "actor_id": { + "name": "actor_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_user_id": { + "name": "target_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "note": { + "name": "note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "details": { + "name": "details", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "admin_audit_log_createdAt_idx": { + "name": "admin_audit_log_createdAt_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "admin_audit_log_actorId_idx": { + "name": "admin_audit_log_actorId_idx", + "columns": [ + { + "expression": "actor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "admin_audit_log_targetUserId_idx": { + "name": "admin_audit_log_targetUserId_idx", + "columns": [ + { + "expression": "target_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "admin_audit_log_actor_id_user_id_fk": { + "name": "admin_audit_log_actor_id_user_id_fk", + "tableFrom": "admin_audit_log", + "tableTo": "user", + "columnsFrom": [ + "actor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "admin_audit_log_target_user_id_user_id_fk": { + "name": "admin_audit_log_target_user_id_user_id_fk", + "tableFrom": "admin_audit_log", + "tableTo": "user", + "columnsFrom": [ + "target_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.banner": { + "name": "banner", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "variant": { + "name": "variant", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'info'" + }, + "dismissible": { + "name": "dismissible", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "starts_at": { + "name": "starts_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "ends_at": { + "name": "ends_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "banner_created_by_user_id_fk": { + "name": "banner_created_by_user_id_fk", + "tableFrom": "banner", + "tableTo": "user", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.post": { + "name": "post", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "excerpt": { + "name": "excerpt", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tags": { + "name": "tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "featured": { + "name": "featured", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "hero_image": { + "name": "hero_image", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "seo_title": { + "name": "seo_title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "seo_description": { + "name": "seo_description", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "published_at": { + "name": "published_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "draft": { + "name": "draft", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "post_status_publishedAt_idx": { + "name": "post_status_publishedAt_idx", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "published_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "post_author_id_user_id_fk": { + "name": "post_author_id_user_id_fk", + "tableFrom": "post", + "tableTo": "user", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "post_slug_unique": { + "name": "post_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.post_revision": { + "name": "post_revision", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "post_id": { + "name": "post_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "published_by": { + "name": "published_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "post_revision_postId_idx": { + "name": "post_revision_postId_idx", + "columns": [ + { + "expression": "post_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "post_revision_post_id_post_id_fk": { + "name": "post_revision_post_id_post_id_fk", + "tableFrom": "post_revision", + "tableTo": "post", + "columnsFrom": [ + "post_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "post_revision_published_by_user_id_fk": { + "name": "post_revision_published_by_user_id_fk", + "tableFrom": "post_revision", + "tableTo": "user", + "columnsFrom": [ + "published_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false } }, "enums": {}, diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 4a7cf04a6..7bd29f980 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -5,8 +5,8 @@ { "idx": 0, "version": "7", - "when": 1779478193206, - "tag": "0000_dapper_killer_shrike", + "when": 1792505508187, + "tag": "0000_milky_sir_ram", "breakpoints": true } ] diff --git a/e2e/error.spec.ts b/e2e/error.spec.ts index ee4e2ec9d..1e67f12a3 100644 --- a/e2e/error.spec.ts +++ b/e2e/error.spec.ts @@ -18,13 +18,4 @@ test.describe("Error Handling", () => { await expect(page.getByText("400")).toBeVisible({ timeout: 15000 }); }); - - test("should be able to navigate home from error page", async ({ page }) => { - await page.goto("/stats/zzNonExistent99"); - - await expect(page.getByText(/Failed to resolve|Something went wrong|Oops/i)).toBeVisible({ timeout: 15000 }); - - await page.goto("/"); - await expect(page.getByPlaceholder("Enter username")).toBeVisible(); - }); }); diff --git a/e2e/home.spec.ts b/e2e/home.spec.ts index 7004a9e8c..ff5f6bd65 100644 --- a/e2e/home.spec.ts +++ b/e2e/home.spec.ts @@ -5,16 +5,6 @@ test.describe("Home Page", () => { await page.goto("/"); }); - test("should load home page with search form", async ({ page }) => { - await expect(page).toHaveTitle(/SkyCrypt/); - - const searchInput = page.getByPlaceholder("Enter username"); - await expect(searchInput).toBeVisible(); - - const submitButton = page.getByRole("button", { name: /Show me/i }); - await expect(submitButton).toBeVisible(); - }); - test("should display validation error for invalid username", async ({ page }) => { const searchInput = page.getByPlaceholder("Enter username"); await searchInput.fill("!!invalid!!"); @@ -22,22 +12,4 @@ test.describe("Home Page", () => { await expect(page.getByText(/Please enter a valid Minecraft username or UUID/i)).toBeVisible(); }); - - test("should disable submit button for invalid username", async ({ page }) => { - const searchInput = page.getByPlaceholder("Enter username"); - await searchInput.fill("!!invalid!!"); - await searchInput.press("Tab"); - - const submitButton = page.getByRole("button", { name: /Show me/i }); - await expect(submitButton).toBeDisabled(); - }); - - test("should show contributors section", async ({ page }) => { - await expect(page.getByText(/No favorites set!/i)).toBeVisible(); - }); - - test("should show call-to-action card", async ({ page }) => { - const ctaCard = page.locator("a[href*='patreon'], a[href*='discord'], a[href*='forms.gle']").first(); - await expect(ctaCard).toBeVisible(); - }); }); diff --git a/e2e/packs-cache.spec.ts b/e2e/packs-cache.spec.ts new file mode 100644 index 000000000..a7646fe33 --- /dev/null +++ b/e2e/packs-cache.spec.ts @@ -0,0 +1,44 @@ +import { expect, test } from "@playwright/test"; + +test("uses a versioned prerendered catalog without resetting saved pack choices", async ({ page }) => { + const responsePromise = page.waitForResponse((response) => response.url().includes("/listResourcePacks")); + await page.goto("/"); + const response = await responsePromise; + const catalogUrl = response.url(); + expect(response.status()).toBe(200); + expect(new URL(catalogUrl).pathname).toMatch(/\/listResourcePacks\/[^/]+$/); + + await page.getByRole("button", { name: "Settings", exact: true }).click(); + await page.getByRole("tab", { name: /^packs$/i }).click(); + const rows = page.locator('[data-slot="resource-pack-row"]'); + await expect(rows.first()).toBeVisible(); + const ids = await rows.evaluateAll((elements) => elements.map((element) => element.getAttribute("data-pack-id"))); + + await page.evaluate(async (url) => { + localStorage.setItem("skycryptEnabledPacks", JSON.stringify(["FSR"])); + document.cookie = `enabledPacks=${encodeURIComponent(JSON.stringify(["FSR"]))}; path=/`; + const unversionedUrl = url.slice(0, url.indexOf("/listResourcePacks") + "/listResourcePacks".length); + for (const name of await caches.keys()) { + if (!name.startsWith("sveltekit:")) continue; + const cache = await caches.open(name); + await cache.delete(url); + // Old releases cached this URL without any build identifier. + await cache.put(unversionedUrl, new Response("[[]]")); + } + await (await caches.open("sveltekit:previous-build")).put(unversionedUrl, new Response("[[]]")); + }, catalogUrl); + + const refreshed = page.waitForResponse((response) => response.url() === catalogUrl); + await page.reload(); + expect((await refreshed).status()).toBe(200); + await page.getByRole("button", { name: "Settings", exact: true }).click(); + await page.getByRole("tab", { name: /^packs$/i }).click(); + await expect(rows).toHaveCount(ids.length); + for (const id of ids) { + await expect(page.locator(`[data-slot="resource-pack-row"][data-pack-id="${id}"]`)).toHaveAttribute( + "data-enabled", + id === "FSR" ? "true" : "false" + ); + } + expect(await page.evaluate(() => caches.keys())).not.toContain("sveltekit:previous-build"); +}); diff --git a/e2e/profile.spec.ts b/e2e/profile.spec.ts index 731006271..2c20be2f1 100644 --- a/e2e/profile.spec.ts +++ b/e2e/profile.spec.ts @@ -65,46 +65,12 @@ async function expectRapidInventorySwitchToStayResponsive(page: Page) { } test.describe("Profile Page", () => { - test("should load profile page", async ({ page }) => { - await page.goto("/stats/Technoblade"); - - await expect(page).toHaveURL(/\/stats\//); - await expect(page).toHaveTitle(/SkyCrypt/); - }); - test("should display player name", async ({ page }) => { await page.goto("/stats/Technoblade"); await expect(page.getByText("Technoblade").first()).toBeVisible({ timeout: 15000 }); }); - test("should show loading state initially", async ({ page }) => { - await page.goto("/stats/Technoblade"); - - const loadingOrContent = page.getByText(/Loading profile|Technoblade/i); - await expect(loadingOrContent.first()).toBeVisible({ timeout: 15000 }); - }); - - test("should display profile content after loading", async ({ page }) => { - await page.goto("/stats/Technoblade"); - - await expect(page.locator("main")).toBeVisible({ timeout: 30000 }); - - const mainContent = page.locator("main"); - const textContent = await mainContent.textContent(); - expect(textContent?.length).toBeGreaterThan(0); - }); - - test("should navigate back to home", async ({ page }) => { - await page.goto("/stats/Technoblade"); - - const homeLink = page.getByRole("link", { name: /SkyCrypt/i }).first(); - await expect(homeLink).toBeVisible({ timeout: 15000 }); - - await homeLink.click(); - await page.waitForURL("/", { timeout: 5000 }); - }); - test("should switch away from inventory while it is loading", async ({ page }) => { await expectRapidInventorySwitchToStayResponsive(page); }); diff --git a/e2e/sitemap.spec.ts b/e2e/sitemap.spec.ts index 781098e17..787fd1245 100644 --- a/e2e/sitemap.spec.ts +++ b/e2e/sitemap.spec.ts @@ -22,9 +22,5 @@ test("/sitemap.xml exposes only complete public URLs", async ({ request }) => { expect(paths).not.toContain("/dashboard"); expect(paths).not.toContain("/sitemap.xml"); expect(paths.some((path) => path === "/api" || path.startsWith("/api/"))).toBe(false); - expect( - locations.some( - (location) => location.includes("[ign]") || location.includes("[[profile]]") || location.includes("[slug]") - ) - ).toBe(false); + expect(locations.some((location) => location.includes("["))).toBe(false); }); diff --git a/eslint.config.ts b/eslint.config.ts index c04ea582c..d5658f61e 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,14 +1,12 @@ import path from "node:path"; import js from "@eslint/js"; -import { loadConfig } from "@sveltejs/load-config"; +import { plugin as shadcn } from "@shadcn/lint"; import prettier from "eslint-config-prettier"; import svelte from "eslint-plugin-svelte"; import { defineConfig, includeIgnoreFile } from "eslint/config"; import globals from "globals"; import ts from "typescript-eslint"; -const svelteConfig = await loadConfig(process.cwd()); - const gitignorePath = path.resolve(import.meta.dirname, ".gitignore"); export default defineConfig( @@ -37,9 +35,15 @@ export default defineConfig( parserOptions: { projectService: true, extraFileExtensions: [".svelte"], - parser: ts.parser, - svelteConfig + parser: ts.parser } + }, + plugins: { + shadcn + }, + rules: { + "shadcn/no-raw-colors": "error", + "shadcn/no-unknown-classes": "warn" } }, // Override or add rule settings here, such as: @@ -48,6 +52,7 @@ export default defineConfig( rules: { "svelte/no-at-html-tags": "off", "svelte/no-useless-mustaches": "off", + "no-nested-ternary": "error", "@typescript-eslint/no-unused-vars": [ "error", { @@ -89,6 +94,19 @@ export default defineConfig( ] } }, + { + // Server code logs through evlog (`log` / `locals.log`) so output reaches HyperDX and stays readable in Dokploy. + files: [ + "src/hooks.server.ts", + "src/lib/server/**/*.ts", + "src/**/*.remote.ts", + "src/**/+server.ts", + "src/**/+page.server.ts", + "src/**/+layout.server.ts" + ], + ignores: ["**/*.spec.ts"], + rules: { "no-console": "error" } + }, { ignores: [ "**/.DS_Store", diff --git a/evlog.config.ts b/evlog.config.ts new file mode 100644 index 000000000..1dcad477f --- /dev/null +++ b/evlog.config.ts @@ -0,0 +1,10 @@ +import { defineEvlog } from "evlog"; +import { createDefaultEnrichers } from "evlog/enrichers"; + +// Drains (HyperDX / fs) are attached in src/hooks.server.ts because they read $app/env. +export default defineEvlog({ + service: "skycrypt-frontend", + // Keep the text tree in production too so the Dokploy Logs tab stays readable (JSON is the default there). + pretty: true, + enrich: createDefaultEnrichers() +}); diff --git a/orval.config.ts b/orval.config.ts index c8acb9799..466fd1d6e 100644 --- a/orval.config.ts +++ b/orval.config.ts @@ -30,21 +30,15 @@ export default defineConfig({ afterAllFilesWrite: "oxfmt ./src/lib/shared/api/orval-generated-zod.ts" } }, - cms: { - input: "http://localhost:3000/api/openapi.json", + patreon: { + input: "https://raw.githubusercontent.com/ghostrider-05/patreon-api-spec/refs/heads/main/specs/openapi.json", output: { - target: "./src/lib/shared/api/cms-generated.ts", + target: "./src/lib/shared/api/patreon-generated.ts", client: "fetch", - tsconfig: "./tsconfig.json", - override: { - mutator: { - path: "./src/lib/shared/api/mutator/cms-instance.ts", - name: "cmsFetch" - } - } + tsconfig: "./tsconfig.json" }, hooks: { - afterAllFilesWrite: "oxfmt ./src/lib/shared/api/cms-generated.ts" + afterAllFilesWrite: "oxfmt ./src/lib/shared/api/patreon-generated.ts" } } }); diff --git a/package.json b/package.json index e81b753e0..b4cbda5b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "skycrypt-frontend", - "version": "4.0.0", + "version": "4.4.0", "private": true, "license": "AGPL-3.0-only", "repository": { @@ -8,6 +8,10 @@ "url": "https://github.com/SkyCryptWebsite/SkyCrypt-Frontend.git" }, "type": "module", + "imports": { + "#lib": "./src/lib/index.js", + "#lib/*": "./src/lib/*" + }, "scripts": { "dev": "vite dev", "build": "vite build", @@ -21,7 +25,7 @@ "test:unit": "vitest", "test:ui": "vitest --ui", "test:coverage": "vitest --run --coverage", - "lint": "oxfmt --check . && eslint . && pnpm check", + "lint": "oxfmt --check . && eslint --cache . && pnpm check", "format": "oxfmt", "prepare": "svelte-kit sync || echo ''", "postinstall": "simple-git-hooks", @@ -36,112 +40,155 @@ "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:studio": "drizzle-kit studio", - "auth:schema": "auth generate --config src/lib/server/auth.ts --output src/lib/server/db/schema/auth.schema.ts --yes", + "auth:schema": "auth generate --config src/lib/server/auth.ts --output src/lib/server/db/schema/auth.schema.ts --yes && oxfmt --write src/lib/server/db/schema/auth.schema.ts", "update:shadcn": "pnpm dlx shadcn-svelte@latest update -a && oxfmt --write ./src/lib/components/ui && oxfmt --write ./src/lib/shared/utils.ts" }, "dependencies": { - "@payloadcms/richtext-lexical": "^3.88.0", - "@sentry/sveltekit": "^10.70.0", - "@takumi-rs/core-linux-x64-gnu": "^2.10.0", + "@takumi-rs/core-linux-x64-gnu": "^2.17.1", + "@tanstack/svelte-table": "^9.3.1", "culori": "^4.0.2", - "simple-git-hooks": "^2.13.1", + "evlog": "^2.33.1", + "simple-git-hooks": "^2.14.0", "svelte-interactions": "^0.2.0", - "takumi-js": "^2.10.0" + "takumi-js": "^2.17.1" }, "devDependencies": { - "@better-auth/api-key": "^1.6.29", - "@changesets/cli": "^3.0.1", - "@commitlint/cli": "^21.2.2", - "@commitlint/config-conventional": "^21.2.2", - "@commitlint/types": "^21.2.0", + "@better-auth/api-key": "^1.7.12", + "@better-captcha/svelte": "^0.8.0", + "@changesets/cli": "^3.0.3", + "@commitlint/cli": "^21.2.4", + "@commitlint/config-conventional": "^21.2.4", + "@commitlint/types": "^21.2.3", "@date-fns/tz": "^1.5.0", - "@dnd-kit/abstract": "^0.5.0", - "@dnd-kit/dom": "^0.5.0", - "@dnd-kit/helpers": "^0.5.0", - "@dnd-kit/svelte": "^0.5.0", + "@dnd-kit/abstract": "^0.5.1", + "@dnd-kit/dom": "^0.5.1", + "@dnd-kit/helpers": "^0.5.1", + "@dnd-kit/svelte": "^0.5.1", + "@emoji-mart/data": "^1.2.1", "@eslint/js": "^10.0.1", + "@evlog/cli": "^0.11.0", + "@floating-ui/dom": "^1.8.0", "@fontsource-variable/geist-mono": "^5.3.0", "@fontsource-variable/montserrat": "^5.3.0", "@fontsource/unifontex": "^5.3.0", - "@internationalized/date": "^3.12.3", - "@lucide/svelte": "^1.33.0", + "@internationalized/date": "^3.12.4", + "@lucide/svelte": "^1.60.0", "@oslojs/encoding": "^1.1.0", - "@playwright/test": "^1.62.1", + "@playwright/test": "^1.64.1", "@selemondev/svgl-svelte": "^2.17.0", - "@sveltejs/adapter-cloudflare": "^7.2.8", - "@sveltejs/adapter-node": "^5.5.7", - "@sveltejs/kit": "^2.70.3", - "@sveltejs/load-config": "^0.2.3", - "@sveltejs/vite-plugin-svelte": "^7.3.0", + "@shadcn/lint": "^0.2.3", + "@sveltejs/adapter-cloudflare": "^8.0.1", + "@sveltejs/adapter-node": "^6.0.0", + "@sveltejs/kit": "^3.1.0", + "@sveltejs/vite-plugin-svelte": "^7.3.1", "@tailwindcss/vite": "^4.3.3", + "@tiptap/core": "^3.32.0", + "@tiptap/extension-bubble-menu": "^3.32.0", + "@tiptap/extension-code-block-lowlight": "^3.32.0", + "@tiptap/extension-drag-handle": "^3.32.0", + "@tiptap/extension-highlight": "^3.32.0", + "@tiptap/extension-image": "^3.32.0", + "@tiptap/extension-list": "^3.32.0", + "@tiptap/extension-subscript": "^3.32.0", + "@tiptap/extension-superscript": "^3.32.0", + "@tiptap/extension-table": "^3.32.0", + "@tiptap/extension-table-of-contents": "^3.32.0", + "@tiptap/extension-text-align": "^3.32.0", + "@tiptap/extension-text-style": "^3.32.0", + "@tiptap/extension-typography": "^3.32.0", + "@tiptap/extensions": "^3.32.0", + "@tiptap/markdown": "^3.32.0", + "@tiptap/pm": "^3.32.0", + "@tiptap/starter-kit": "^3.32.0", + "@tiptap/static-renderer": "^3.32.0", + "@tiptap/suggestion": "^3.32.0", "@types/culori": "^4.0.1", "@types/eslint": "^9.6.1", - "@types/node": "^26.2.0", + "@types/node": "^26.6.5", "@types/relaxed-json": "^1.0.4", "@types/umami-browser": "^2.18.1", "@types/upng-js": "^2.1.5", - "@vitest/browser-playwright": "^4.1.11", - "@vitest/coverage-v8": "^4.1.11", - "@vitest/ui": "^4.1.11", - "auth": "^1.6.29", - "better-auth": "^1.6.29", - "bits-ui": "^2.19.0", + "@vitest/browser-playwright": "^5.0.5", + "@vitest/coverage-v8": "^5.0.5", + "@vitest/ui": "^5.0.5", + "auth": "^1.7.12", + "aws4fetch": "^1.0.20", + "better-auth": "^1.7.12", + "bits-ui": "^2.19.5", "changesets-changelog-clean": "^1.4.0", - "clsx": "^2.1.1", + "cn": "^0.5.0", "date-fns": "^4.4.0", - "devalue": "^5.9.1", + "devalue": "^6.0.3", + "discord-api-types": "^0.38.57", "dotenv-cli": "^11.0.0", - "drizzle-kit": "^0.31.10", - "drizzle-orm": "^0.45.2", - "eslint": "^10.8.1", + "drizzle-kit": "^0.31.11", + "drizzle-orm": "^0.45.4", + "eslint": "^10.13.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-svelte": "^3.23.0", + "eslint-plugin-svelte": "^3.23.1", "formsnap": "^2.0.1", - "globals": "^17.11.0", - "ky": "^2.0.2", + "globals": "^17.13.0", + "ky": "^2.2.0", + "lowlight": "^3.3.0", + "mdsvex": "^0.12.8", "mode-watcher": "^1.1.0", "numerable": "^0.3.15", - "orval": "^8.24.0", - "oxfmt": "^0.64.0", + "orval": "^8.43.0", + "oxfmt": "^0.74.0", "paneforge": "^1.0.2", - "playwright": "^1.62.1", + "playwright": "^1.64.1", "postgres": "^3.4.9", - "pretty-ms": "^9.3.0", + "pretty-ms": "^10.0.0", "runed": "^0.37.1", - "shadcn-svelte": "^1.5.0", + "shadcn-svelte": "^1.7.0", "skinview3d": "^3.4.2", "super-sitemap": "^2.0.6", - "svelte": "^5.56.10", - "svelte-check": "^4.7.6", + "svelte": "^5.57.2", + "svelte-check": "^4.7.7", "svelte-persisted-store": "^0.12.0", "svelte-seo": "^2.0.0", "svelte-sonner": "^1.2.1", "svelte-tiny-virtual-list": "4.0.0", - "sveltekit-superforms": "^2.30.2", - "tailwind-merge": "^3.6.0", + "svelte-toolbelt": "^0.10.6", + "sveltekit-superforms": "^3.0.0", "tailwind-variants": "^3.3.1", "tailwindcss": "^4.3.3", "tailwindcss-motion": "^1.1.1", "tslib": "^2.8.1", + "turnstile-types": "^1.2.3", "tw-animate-css": "^1.4.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.67.0", + "typescript-eslint": "^8.72.0", "vaul-svelte": "1.0.0-next.7", - "vite": "^8.2.2", - "vitest": "^4.1.11", - "vitest-browser-svelte": "^3.0.0", + "vite": "^8.3.4", + "vitest": "^5.0.5", + "vitest-browser-svelte": "^3.1.0", "wrangler": "4.134.0", - "zod": "^4.4.3" + "zod": "^4.6.7" }, "simple-git-hooks": { "commit-msg": "pnpm exec commitlint --edit $1" }, + "devEngines": { + "packageManager": [ + { + "name": "pnpm", + "version": "^12.14.0", + "onFail": "download" + } + ], + "runtime": { + "name": "node", + "version": "^24.22.1", + "onFail": "download" + } + }, "engines": { "bun": "forbidden, use pnpm instead", "deno": "forbidden, use node instead", - "node": "^24", + "node": "^24.22.0", "npm": "forbidden, use pnpm instead", - "pnpm": "^11", + "pnpm": "^12.14.0", "yarn": "forbidden, use pnpm instead" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c5755b2c9..2370841a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3 +1,161 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: ^12.14.0 + version: 12.14.0 + +packages: + + '@pnpm/exe.android-arm64@12.14.0': + resolution: {integrity: sha512-+iSh7x21C3A2hqc+Z0ZmbKTcn6YNlzrXM142PsnQH/dLj0DYxFzoBvc6XAnL/yfQ5nnH2ebBiRj/zVxr61fZbQ==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.14.0': + resolution: {integrity: sha512-qT+0LqEr2wBVaxcG2T8cX/R8SSRz2Rvpp8nRR4fh8tnGUZRch87gFmsHUAoSQh7w6j1h0qTjrA384j4xi8frvw==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.14.0': + resolution: {integrity: sha512-tnrdUB8ecJoehuKKqi1YHCBVl61xtJ9XVGcx5EviC6fWO4DeGI8GtXrjvJxDBM3nuVjJeWistgsUp/N142x4sw==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.14.0': + resolution: {integrity: sha512-vlBfGkruqQRsEHTW43cPwpYd7QlbIJ//cvpAdb3bVXkI8SgTPoXhCnc05m+ZNiPrrEkBsX/t7KHw9aXpkzPm3Q==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.freebsd-x64@12.14.0': + resolution: {integrity: sha512-Qg5rxBrGYl6Tfso+EyygPf84fY1Fzy55E/0or+iuYKtnf0vc0MlHJfVIlT7pBukMRntQHRik7hUi0Z4s7AlJsw==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.14.0': + resolution: {integrity: sha512-DRIe4yQkXBGA/PhVJdzlbnllxBdAtnMMvTVLLcGpsK5FvJz9kxD2Hyxtn68ovmNkVX06f6p45cQwfm3wx2jn1A==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.14.0': + resolution: {integrity: sha512-7joGShZ44Nk3WpNU+60JoOPjCXlgxhJAq11S2UiVtwCUDgTer1yTPPfxGW8pxaD6046actYLIYDbZNlubHWs0A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-ppc64@12.14.0': + resolution: {integrity: sha512-gSoryn7ySdXd//gjgf3MvvA8ZerJayaSbuMZMtAWq4vb2/wlVEgpl0Kvqt54y58TRj533Qjq2txKgnxd4JyoAQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.14.0': + resolution: {integrity: sha512-EMjew1H9WqQ7pL+tYqCPwiuB+0PeCiJRV7fyWeuFw0wwYUajFBjcaPO3IGAVu9sdmJDU+e+HYv/Zey6aKae0Vw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.14.0': + resolution: {integrity: sha512-shYOj/SFoXD35fHe0pWr2JofwSXulC0BnEIXLj2QokDi0EF//AfKsui35yKIkTEl+s2VJybc3PO4iJNhKIj5Qw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.14.0': + resolution: {integrity: sha512-btZiZ2Ot0llKK1ndSfA5i3IRX7/S0VrmzseNH/BJ4c+Cady+S81H6vvU1zByggHMyqQhC8OgxO5PiIY7D9bH0Q==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.14.0': + resolution: {integrity: sha512-F6K8e/jWxiuEYJaQtRRUG9ynBSTEHa+t7Lf86MKuOO5UA7WVVMbi+oB8nY6iKW++ncWS2yG6T9faXZGxqNsfoQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.14.0': + resolution: {integrity: sha512-DOjlkVB6TtTKeAAe0hNZXn5S7YqESmo1Z6SGbR4BZNQ4isRg31XVHjX2RFTbY8gnZq68IwzyLmPqlEjMmYxofg==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.14.0': + resolution: {integrity: sha512-/LSX6mew/sLf08XqcjemuklNKf1K/Ftpgj4//hK/HKzI2dKbmxDB27a/2OaQ5a0O3/3OFzlssXDziZsi+yVBwQ==} + cpu: [x64] + os: [win32] + + pnpm@12.14.0: + resolution: {integrity: sha512-wYum2HmT09Fky16JSPMrLAbuhUSH4GzY2GeBNC+z5btGNDZwNHEehoArqpw3vqkGzhkprQjXCITJfYAd8TOJpg==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.android-arm64@12.14.0': + optional: true + + '@pnpm/exe.android-x64@12.14.0': + optional: true + + '@pnpm/exe.darwin-arm64@12.14.0': + optional: true + + '@pnpm/exe.darwin-x64@12.14.0': + optional: true + + '@pnpm/exe.freebsd-x64@12.14.0': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.14.0': + optional: true + + '@pnpm/exe.linux-arm64@12.14.0': + optional: true + + '@pnpm/exe.linux-ppc64@12.14.0': + optional: true + + '@pnpm/exe.linux-riscv64@12.14.0': + optional: true + + '@pnpm/exe.linux-s390x@12.14.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.14.0': + optional: true + + '@pnpm/exe.linux-x64@12.14.0': + optional: true + + '@pnpm/exe.win32-arm64@12.14.0': + optional: true + + '@pnpm/exe.win32-x64@12.14.0': + optional: true + + pnpm@12.14.0: + optionalDependencies: + '@pnpm/exe.android-arm64': 12.14.0 + '@pnpm/exe.android-x64': 12.14.0 + '@pnpm/exe.darwin-arm64': 12.14.0 + '@pnpm/exe.darwin-x64': 12.14.0 + '@pnpm/exe.freebsd-x64': 12.14.0 + '@pnpm/exe.linux-arm64': 12.14.0 + '@pnpm/exe.linux-arm64-musl': 12.14.0 + '@pnpm/exe.linux-ppc64': 12.14.0 + '@pnpm/exe.linux-riscv64': 12.14.0 + '@pnpm/exe.linux-s390x': 12.14.0 + '@pnpm/exe.linux-x64': 12.14.0 + '@pnpm/exe.linux-x64-musl': 12.14.0 + '@pnpm/exe.win32-arm64': 12.14.0 + '@pnpm/exe.win32-x64': 12.14.0 + +--- lockfileVersion: '9.0' settings: @@ -8,61 +166,73 @@ importers: .: dependencies: - '@payloadcms/richtext-lexical': - specifier: ^3.88.0 - version: 3.88.0(@faceless-ui/modal@3.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@faceless-ui/scroll-info@2.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@payloadcms/next@3.88.0(@types/react@19.2.16)(graphql@16.14.1)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3))(@types/react@19.2.16)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3)(yjs@13.6.31) - '@sentry/sveltekit': - specifier: ^10.70.0 - version: 10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(rollup@4.62.4)(supports-color@7.2.0)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(wrangler@4.134.0(@types/node@26.2.0)) '@takumi-rs/core-linux-x64-gnu': - specifier: ^2.10.0 - version: 2.10.0 + specifier: ^2.17.1 + version: 2.17.1 + '@tanstack/svelte-table': + specifier: ^9.3.1 + version: 9.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)) culori: specifier: ^4.0.2 version: 4.0.2 + evlog: + specifier: ^2.33.1 + version: 2.33.1(react@19.3.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) simple-git-hooks: - specifier: ^2.13.1 - version: 2.13.1 + specifier: ^2.14.0 + version: 2.14.0 svelte-interactions: specifier: ^0.2.0 - version: 0.2.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 0.2.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) takumi-js: - specifier: ^2.10.0 - version: 2.10.0(csstype@3.2.3)(react@19.2.7) + specifier: ^2.17.1 + version: 2.17.1(react@19.3.1) devDependencies: '@better-auth/api-key': - specifier: ^1.6.29 - version: 1.6.29(b8697cce37a9876f9b0dbea1e5f702b4) + specifier: ^1.7.12 + version: 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(better-auth@1.7.12(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5))(better-call@1.4.4(zod@4.6.7)) + '@better-captcha/svelte': + specifier: ^0.8.0 + version: 0.8.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) '@changesets/cli': - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.0.3 + version: 3.0.3 '@commitlint/cli': - specifier: ^21.2.2 - version: 21.2.2(@types/node@26.2.0)(conventional-commits-parser@7.1.2)(typescript@6.0.3) + specifier: ^21.2.4 + version: 21.2.4(conventional-commits-parser@7.1.3)(typescript@6.0.3) '@commitlint/config-conventional': - specifier: ^21.2.2 - version: 21.2.2 + specifier: ^21.2.4 + version: 21.2.4 '@commitlint/types': - specifier: ^21.2.0 - version: 21.2.0 + specifier: ^21.2.3 + version: 21.2.3 '@date-fns/tz': specifier: ^1.5.0 version: 1.5.0 '@dnd-kit/abstract': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.1 + version: 0.5.1 '@dnd-kit/dom': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.1 + version: 0.5.1 '@dnd-kit/helpers': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.1 + version: 0.5.1 '@dnd-kit/svelte': - specifier: ^0.5.0 - version: 0.5.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + specifier: ^0.5.1 + version: 0.5.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + '@emoji-mart/data': + specifier: ^1.2.1 + version: 1.2.1 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) + version: 10.0.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)) + '@evlog/cli': + specifier: ^0.11.0 + version: 0.11.0(evlog@2.33.1(react@19.3.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))) + '@floating-ui/dom': + specifier: ^1.8.0 + version: 1.8.0 '@fontsource-variable/geist-mono': specifier: ^5.3.0 version: 5.3.0 @@ -73,38 +243,98 @@ importers: specifier: ^5.3.0 version: 5.3.0 '@internationalized/date': - specifier: ^3.12.3 - version: 3.12.3 + specifier: ^3.12.4 + version: 3.12.4 '@lucide/svelte': - specifier: ^1.33.0 - version: 1.33.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + specifier: ^1.60.0 + version: 1.60.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) '@oslojs/encoding': specifier: ^1.1.0 version: 1.1.0 '@playwright/test': - specifier: ^1.62.1 - version: 1.62.1 + specifier: ^1.64.1 + version: 1.64.1 '@selemondev/svgl-svelte': specifier: ^2.17.0 - version: 2.17.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 2.17.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + '@shadcn/lint': + specifier: ^0.2.3 + version: 0.2.3(@typescript-eslint/parser@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)) '@sveltejs/adapter-cloudflare': - specifier: ^7.2.8 - version: 7.2.9(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(wrangler@4.134.0(@types/node@26.2.0)) + specifier: ^8.0.1 + version: 8.0.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(wrangler@4.134.0(@cloudflare/workers-types@5.20261019.1)(@types/node@26.6.5)) '@sveltejs/adapter-node': - specifier: ^5.5.7 - version: 5.5.7(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))) + specifier: ^6.0.0 + version: 6.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))) '@sveltejs/kit': - specifier: ^2.70.3 - version: 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - '@sveltejs/load-config': - specifier: ^0.2.3 - version: 0.2.3 + specifier: ^3.1.0 + version: 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@sveltejs/vite-plugin-svelte': - specifier: ^7.3.0 - version: 7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + specifier: ^7.3.1 + version: 7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@tailwindcss/vite': specifier: ^4.3.3 - version: 4.3.3(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + version: 4.3.3(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + '@tiptap/core': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/extension-bubble-menu': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-code-block-lowlight': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/extension-code-block@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(highlight.js@11.11.2)(lowlight@3.3.0) + '@tiptap/extension-drag-handle': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/extension-collaboration@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33))(yjs@13.6.33))(@tiptap/extension-node-range@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33)) + '@tiptap/extension-highlight': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-image': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-list': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-subscript': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-superscript': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-table': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-table-of-contents': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-text-align': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-text-style': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-typography': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extensions': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/markdown': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/pm': + specifier: ^3.32.0 + version: 3.32.0 + '@tiptap/starter-kit': + specifier: ^3.32.0 + version: 3.32.0 + '@tiptap/static-renderer': + specifier: ^3.32.0 + version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@tiptap/suggestion': + specifier: ^3.32.0 + version: 3.32.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) '@types/culori': specifier: ^4.0.1 version: 4.0.1 @@ -112,8 +342,8 @@ importers: specifier: ^9.6.1 version: 9.6.1 '@types/node': - specifier: ^26.2.0 - version: 26.2.0 + specifier: ^26.6.5 + version: 26.6.5 '@types/relaxed-json': specifier: ^1.0.4 version: 1.0.4 @@ -124,92 +354,107 @@ importers: specifier: ^2.1.5 version: 2.1.5 '@vitest/browser-playwright': - specifier: ^4.1.11 - version: 4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11) + specifier: ^5.0.5 + version: 5.0.5(playwright@1.64.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))(vitest@5.0.5) '@vitest/coverage-v8': - specifier: ^4.1.11 - version: 4.1.11(@vitest/browser@4.1.11)(vitest@4.1.11) + specifier: ^5.0.5 + version: 5.0.5(@vitest/browser@5.0.5)(vitest@5.0.5) '@vitest/ui': - specifier: ^4.1.11 - version: 4.1.11(vitest@4.1.11) + specifier: ^5.0.5 + version: 5.0.5(vitest@5.0.5) auth: - specifier: ^1.6.29 - version: 1.6.29(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(better-call@1.4.0(zod@4.4.3))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))(jose@6.2.8)(kysely@0.29.5)(magicast@0.5.4)(nanostores@1.4.2)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11) + specifier: ^1.7.12 + version: 1.7.12(@better-fetch/fetch@1.3.2)(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(better-call@1.4.4(zod@4.6.7))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(jose@6.2.13)(kysely@0.29.7)(magicast@0.5.5)(nanostores@1.5.5)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(supports-color@10.2.2)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5) + aws4fetch: + specifier: ^1.0.20 + version: 1.0.20 better-auth: - specifier: ^1.6.29 - version: 1.6.29(@opentelemetry/api@1.9.1)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11) + specifier: ^1.7.12 + version: 1.7.12(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5) bits-ui: - specifier: ^2.19.0 - version: 2.19.0(@internationalized/date@3.12.3)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + specifier: ^2.19.5 + version: 2.19.5(@internationalized/date@3.12.4)(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)) changesets-changelog-clean: specifier: ^1.4.0 version: 1.4.0 - clsx: - specifier: ^2.1.1 - version: 2.1.1 + cn: + specifier: ^0.5.0 + version: 0.5.0 date-fns: specifier: ^4.4.0 version: 4.4.0 devalue: - specifier: ^5.9.1 - version: 5.9.1 + specifier: ^6.0.3 + version: 6.0.3 + discord-api-types: + specifier: ^0.38.57 + version: 0.38.57 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 drizzle-kit: - specifier: ^0.31.10 - version: 0.31.10 + specifier: ^0.31.11 + version: 0.31.11 drizzle-orm: - specifier: ^0.45.2 - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9) + specifier: ^0.45.4 + version: 0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9) eslint: - specifier: ^10.8.1 - version: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + specifier: ^10.13.0 + version: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) + version: 10.1.8(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-svelte: - specifier: ^3.23.0 - version: 3.23.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + specifier: ^3.23.1 + version: 3.23.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(svelte@5.57.2(@typescript-eslint/types@8.72.0)) formsnap: specifier: ^2.0.1 - version: 2.0.1(svelte@5.56.10(@typescript-eslint/types@8.67.0))(sveltekit-superforms@2.30.2(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(@types/json-schema@7.0.15)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)) + version: 2.0.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(sveltekit-superforms@3.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(@types/json-schema@7.0.15)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)) globals: - specifier: ^17.11.0 - version: 17.11.0 + specifier: ^17.13.0 + version: 17.13.0 ky: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.2.0 + version: 2.2.0 + lowlight: + specifier: ^3.3.0 + version: 3.3.0 + mdsvex: + specifier: ^0.12.8 + version: 0.12.8(svelte@5.57.2(@typescript-eslint/types@8.72.0)) mode-watcher: specifier: ^1.1.0 - version: 1.1.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 1.1.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + node: + specifier: runtime:^24.22.1 + version: runtime:24.22.1 numerable: specifier: ^0.3.15 version: 0.3.15 orval: - specifier: ^8.24.0 - version: 8.24.0(prettier@3.9.6)(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.43.0 + version: 8.43.0(prettier@3.9.10)(typescript@6.0.3)(zod@4.6.7) oxfmt: - specifier: ^0.64.0 - version: 0.64.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + specifier: ^0.74.0 + version: 0.74.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) paneforge: specifier: ^1.0.2 - version: 1.0.2(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 1.0.2(svelte@5.57.2(@typescript-eslint/types@8.72.0)) playwright: - specifier: ^1.62.1 - version: 1.62.1 + specifier: ^1.64.1 + version: 1.64.1 postgres: specifier: ^3.4.9 version: 3.4.9 pretty-ms: - specifier: ^9.3.0 - version: 9.3.0 + specifier: ^10.0.0 + version: 10.0.0 runed: specifier: ^0.37.1 - version: 0.37.1(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(zod@4.4.3) + version: 0.37.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(zod@4.6.7) shadcn-svelte: - specifier: ^1.5.0 - version: 1.5.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + specifier: ^1.7.0 + version: 1.7.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) skinview3d: specifier: ^3.4.2 version: 3.4.2 @@ -217,32 +462,32 @@ importers: specifier: ^2.0.6 version: 2.0.6 svelte: - specifier: ^5.56.10 - version: 5.56.10(@typescript-eslint/types@8.67.0) + specifier: ^5.57.2 + version: 5.57.2(@typescript-eslint/types@8.72.0) svelte-check: - specifier: ^4.7.6 - version: 4.7.6(picomatch@4.0.5)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3) + specifier: ^4.7.7 + version: 4.7.7(picomatch@4.0.7)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3) svelte-persisted-store: specifier: ^0.12.0 - version: 0.12.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 0.12.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) svelte-seo: specifier: ^2.0.0 - version: 2.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 2.0.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) svelte-sonner: specifier: ^1.2.1 - version: 1.2.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 1.2.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)) svelte-tiny-virtual-list: specifier: 4.0.0 - version: 4.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 4.0.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte-toolbelt: + specifier: ^0.10.6 + version: 0.10.6(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)) sveltekit-superforms: - specifier: ^2.30.2 - version: 2.30.2(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(@types/json-schema@7.0.15)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3) - tailwind-merge: - specifier: ^3.6.0 - version: 3.6.0 + specifier: ^3.0.0 + version: 3.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(@types/json-schema@7.0.15)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3) tailwind-variants: specifier: ^3.3.1 - version: 3.3.1(tailwind-merge@3.6.0)(tailwindcss@4.3.3) + version: 3.3.1(tailwindcss@4.3.3) tailwindcss: specifier: ^4.3.3 version: 4.3.3 @@ -252,6 +497,9 @@ importers: tslib: specifier: ^2.8.1 version: 2.8.1 + turnstile-types: + specifier: ^1.2.3 + version: 1.2.3 tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -259,49 +507,34 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.67.0 - version: 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.72.0 + version: 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vaul-svelte: specifier: 1.0.0-next.7 - version: 1.0.0-next.7(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + version: 1.0.0-next.7(svelte@5.57.2(@typescript-eslint/types@8.72.0)) vite: - specifier: ^8.2.2 - version: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) + specifier: ^8.3.4 + version: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) vitest: - specifier: ^4.1.11 - version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + specifier: ^5.0.5 + version: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) vitest-browser-svelte: - specifier: ^3.0.0 - version: 3.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11) + specifier: ^3.1.0 + version: 3.1.0(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5) wrangler: specifier: 4.134.0 - version: 4.134.0(@types/node@26.2.0) + version: 4.134.0(@cloudflare/workers-types@5.20261019.1)(@types/node@26.6.5) zod: - specifier: ^4.4.3 - version: 4.4.3 + specifier: ^4.6.7 + version: 4.6.7 packages: - '@apidevtools/json-schema-ref-parser@11.9.3': - resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} - engines: {node: '>= 16'} - - '@apm-js-collab/code-transformer-bundler-plugins@0.7.4': - resolution: {integrity: sha512-nAfOeZPSUAQvJa1iFT/5oCrTm5YQhMMrfCNthNnaXHZiOQhu1KGuLoIx7HtbAi3wfwaBYLaICPIeenIaEwcXIg==} - engines: {node: '>=18.0.0'} - - '@apm-js-collab/code-transformer@0.18.1': - resolution: {integrity: sha512-u1Hb6bHjWtkSpiprwVP6YaHC1DTN4RAU3zYkUDUe7WMnJwdyU1pwTL9dFKiSJB9IiLue/EQovmyx6xhU7FFtAQ==} - hasBin: true - - '@apm-js-collab/tracing-hooks@0.13.0': - resolution: {integrity: sha512-mTvWz9rnQwx1U3h0XPTHaX7bgfkpipLLTQyjlC2cdhQpQEuoLT0AGzoydeoq2NxfEVv6fWOOETcSbb2nptleyw==} - - '@ark/schema@0.56.2': - resolution: {integrity: sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg==} + '@ark/schema@0.56.7': + resolution: {integrity: sha512-jmoOJlYIc4k1uv8oYBDNOFnAsKk2a2D9t/D6npF2JUfW4ecPB0v6ce6lruKg7lkBxIBA8Z7UtxfmvephYbhUGQ==} - '@ark/util@0.56.2': - resolution: {integrity: sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ==} + '@ark/util@0.56.7': + resolution: {integrity: sha512-z8pVnrPk/x9GC18yOp5wCe8rR2+Z6us4CTSg7dvxdsDLuA2xXYq+QETD1fO6f3fMuXe+PCjpvtCnhTW9RHLgEw==} '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} @@ -381,12 +614,12 @@ packages: resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + '@babel/helpers@7.29.10': + resolution: {integrity: sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.8': - resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} engines: {node: '>=6.0.0'} hasBin: true @@ -432,8 +665,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.29.7': - resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} + '@babel/plugin-transform-typescript@7.29.9': + resolution: {integrity: sha512-FFwIwzU+7SCOuxxV4YtJql6T9981ZVTm+FHO5GhVsRqCTdy0WwrEZh3l42ARpXruJUDGOptdduHW6Zr7pNPLNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -450,16 +683,16 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + '@babel/runtime@7.29.10': + resolution: {integrity: sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==} engines: {node: '>=6.9.0'} '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} engines: {node: '>=6.9.0'} '@babel/types@7.29.8': @@ -470,72 +703,69 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@better-auth/api-key@1.6.29': - resolution: {integrity: sha512-JNV7Zxu9KAfQs3lAnUV5oXJUveNuGbmOIDhk1BffoHvCFUWBRM2UaqAgvsz483OdL9eqhgWL1w93m0WS/rLlKA==} + '@better-auth/api-key@1.7.12': + resolution: {integrity: sha512-qkEA9vGMgOpC5Gqia1tg/Y4up2Lov+QDLmu1fZJ4vhs805WIw4jtNhmD6hNQNd5A4Cc2quHklP0yqPUpicavlw==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 - better-auth: ^1.6.29 - better-call: 1.4.0 + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 + better-auth: ^1.7.12 + better-call: 1.4.4 - '@better-auth/core@1.6.29': - resolution: {integrity: sha512-hkUxePo548G0Y247had36TcfsH7E+cofcTc2UivMAbjkdLPKn1ZUk6Pjkc/kvk9xTbWYCUDX6JA9emJc0Gnufg==} + '@better-auth/core@1.7.12': + resolution: {integrity: sha512-SUStBGHJ13KnSO6+7U/1DSlfuOtln4jtOrFZqzQtxZVHZIrAoMjwHNGitlF+s7hvKbuC3Z14xjnqfLLqIqGfxw==} peerDependencies: - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - '@cloudflare/workers-types': '>=4' + '@better-auth/utils': ^0.4.2 || ^0.5.0 + '@better-fetch/fetch': 1.3.2 '@opentelemetry/api': ^1.9.0 - better-call: 1.4.0 + better-call: 1.4.4 jose: ^6.1.0 kysely: ^0.28.5 || ^0.29.0 nanostores: ^1.0.1 peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true '@opentelemetry/api': optional: true - '@better-auth/drizzle-adapter@1.6.29': - resolution: {integrity: sha512-IdvrqHnnRNKqz6KOSII3rZNiTzv1pmVmx5xGRGZdVm8W3OYi98an5kIovao/b3GZh2nHGTzdeTfMSSZNCyGXBg==} + '@better-auth/drizzle-adapter@1.7.12': + resolution: {integrity: sha512-Qzoyuf05aK01Pc0k3EXv8Xj3XCT2m2dCWc5HoB7x+xX6N3Pm2eQsca+UIArsJcbuNEWWP3L51oIebnBoHJ5DTw==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 - drizzle-orm: ^0.45.2 + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 + drizzle-orm: ^0.45.2 || >=1.0.0-rc.1 <2.0.0 peerDependenciesMeta: drizzle-orm: optional: true - '@better-auth/kysely-adapter@1.6.29': - resolution: {integrity: sha512-n87hHC/miSaUaKdnQygz+2wlj2KI2rsGazDPaKF0wbH8i87um9HPDWyz3VdbkqPN79e0qbVfMR9pY7GZQm/X8w==} + '@better-auth/kysely-adapter@1.7.12': + resolution: {integrity: sha512-1PaFXktLv4n3DmrGbPaCj5SsvcT40NnWw7NLua5/J1+8/A051N5ZzqOwJifXEIQX5k6NdwvmymwDQxKytduEAQ==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 kysely: ^0.28.17 || ^0.29.0 peerDependenciesMeta: kysely: optional: true - '@better-auth/memory-adapter@1.6.29': - resolution: {integrity: sha512-F1yLUbNTc/pikEaTlgWOgYlT2RDSi2dV1ysWxacRmQhYtLGYAun1JgU7TDdcEjts+wrLcm+JzRzt5F+ZgNfz9A==} + '@better-auth/memory-adapter@1.7.12': + resolution: {integrity: sha512-glaDwXzDptnddHqRuu7fj47FAssUcOzLNgdlTGJoEPrspkX69x2vnXwgAzNuApjZI21WLtPH/rQ6CN+DQGybPA==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 - '@better-auth/mongo-adapter@1.6.29': - resolution: {integrity: sha512-gyOpfBBCpe2wDnv9CY2T0jirC4oTqk3i5svWYBGkGTAFrKsfJA516NMOs001PiHsEDf/JttZapQv5dkoPD0x2w==} + '@better-auth/mongo-adapter@1.7.12': + resolution: {integrity: sha512-HKV4sgYSw/Gdt9AuHlESMkiKL72SWdGweDy1Wsyxoh06BpG7aNu4aSJ7marNpMdKZteyRbxWWqQkA9ediA8qFw==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 mongodb: ^6.0.0 || ^7.0.0 peerDependenciesMeta: mongodb: optional: true - '@better-auth/prisma-adapter@1.6.29': - resolution: {integrity: sha512-W5lr8AYXwa68qhS7PEpEsisF7ASs9rWJyczoZr8+vYypPBmGMq1Yf8bYJ9ig95zj1wdaQGim2ZSYs8hxZeaKVQ==} + '@better-auth/prisma-adapter@1.7.12': + resolution: {integrity: sha512-FZRX6ORbwhDmeYE1Tl0IPtUn8v3BlVFgbJxDnm/DCNHxuFRf+0t4HfddUgYeYehHFR8aSDsdYX44fEFWM9877w==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: @@ -544,30 +774,38 @@ packages: prisma: optional: true - '@better-auth/telemetry@1.6.29': - resolution: {integrity: sha512-zW1GRIBR/sn83siG+xK4ll/gzfTRxVh6rcpzzjYkR2W9/DkDMwEotl/Mz8OW0Gr2KpuhEkfwiVGH9zp/cyK4Pg==} + '@better-auth/telemetry@1.7.12': + resolution: {integrity: sha512-DaDkKNnI99vKGGbWq9KJg2uYeaOjsK9nIBw9T2m2KG/RkxpvQRjYkZ00++up2bZQkR5pB1nukGbplza3UJG/Xg==} peerDependencies: - '@better-auth/core': ^1.6.29 - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - - '@better-auth/utils@0.4.2': - resolution: {integrity: sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A==} + '@better-auth/core': ^1.7.12 + '@better-auth/utils': ^0.4.2 || ^0.5.0 + '@better-fetch/fetch': 1.3.2 '@better-auth/utils@0.5.0': resolution: {integrity: sha512-BL8W4EfIZFwlu0r54m3v1ztjDhu6dDe/amLTm0xybmbZaNgYUqhD3SjpAsnq0q8YD6/ki4iwIgxJNLP/N3TxiA==} - '@better-fetch/fetch@1.3.1': - resolution: {integrity: sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g==} + '@better-captcha/core@0.8.0': + resolution: {integrity: sha512-zNNVu2qP6sh0VXHtvHEaVy3nOs2d2R5+eUQIiQKUZIqle/rE3Yfjn4QQXlEmgc6hbAZNxLJIjBrP6N04qVQ28w==} + + '@better-captcha/svelte@0.8.0': + resolution: {integrity: sha512-y/MDs7e8jyvz1aqH71nfUO8QWt+0LTxwYnGVNSq1qQZEP+YSBgc7EgJdtPakHWad1w+WAbTwcnCxhgypuOiYlw==} + peerDependencies: + svelte: ^5.0.0 + + '@better-fetch/fetch@1.3.2': + resolution: {integrity: sha512-Gs7n99b5tqUC6cQAPbV0uED3IraHB6xQbHLQ/C3l7ZFafHScOx9pQ+DYmP5blbLFShVWLqxNUlI9wi4xU/X+ow==} - '@blazediff/core@1.9.1': - resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==} + '@blazediff/core@1.10.0': + resolution: {integrity: sha512-AOQff0zgR7cGsZL+4E7hVkmujoPUpm0J9xzWGWZj5wCjd3gmxESXAPfKyuzs93VdpQNFhHlBhfOjrcZ+XTERtQ==} - '@borewit/text-codec@0.2.2': - resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} - '@changesets/apply-release-plan@8.0.0': - resolution: {integrity: sha512-kUd2pbf1w5/AYmBMb0Tt+rkIPCjFJdT0SZMrkOjJT/WV/QbtmvkyB5jkV0oaNPheavprZk+SfUiozUti7TIL2w==} + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + + '@changesets/apply-release-plan@8.1.1': + resolution: {integrity: sha512-nk2Hbq3M9NeHMdaIRBDvawKrQJzXB9sGyBUE5yWnIKtvdcNCPj75zBekJYr0gTT2ecJH3eFeTrc8eisPImcv0Q==} engines: {node: ^22.11 || ^24 || >=26} '@changesets/assemble-release-plan@7.0.0': @@ -578,13 +816,13 @@ packages: resolution: {integrity: sha512-3Dst2Ime2Op5nd4XmWJLPIgp11ZFqJqSkVug9izK6TDcIV4YlhPS4ECbEVR+eGI0bk0r1ItogD4j2Oli87bJrA==} engines: {node: ^22.11 || ^24 || >=26} - '@changesets/cli@3.0.1': - resolution: {integrity: sha512-3IVpRSgiKDj2aRbBHKtWTXSRH2/iR3bWxau9iQUoEsZjDhRIj9nhl90k7FWMxZAJvLgJBbgMq8+qS0xQsenYsQ==} + '@changesets/cli@3.0.3': + resolution: {integrity: sha512-L1i67bMfkK6iC/kDejuNO4pFgTRcWIObsD6Qof2woP1I4M8tj17DGlcpRaTzTv1DYSP5EMwWdEtR8X0Pj5Jg3Q==} engines: {node: ^22.11 || ^24 || >=26, npm: '>=10.9.0', pnpm: '>=10.0.0', yarn: '>=4.5.2'} hasBin: true - '@changesets/config@4.0.0': - resolution: {integrity: sha512-mw95/YrkOuhZZxfnVAA4bSXOFUi+KlhzOBTM8C4x777NhUU6HWIl9Z+K+nME+E4PVsv5NQVQwTfiHihAS1A/ow==} + '@changesets/config@4.0.1': + resolution: {integrity: sha512-PxpxSQLQSLDjceAgRq+4FWlU+HflDIw03mmPVipxoQx9xrXFUjmqTy3SE+n/2t+DqPdpPiLWVr5NRiLZvjyLwg==} engines: {node: ^22.11 || ^24 || >=26} '@changesets/errors@1.0.0': @@ -602,8 +840,8 @@ packages: '@changesets/get-github-info@0.8.0': resolution: {integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==} - '@changesets/git@4.0.0': - resolution: {integrity: sha512-uIEswpPUgzBBqrC0qg13byNaPorzhf05LE2T+gRizEKCXvMsJC6NPJp5iNDSV/gYj4Viqh09UiOF5E7XWeH5lQ==} + '@changesets/git@4.0.1': + resolution: {integrity: sha512-6vWpIAC4LkpmlqaIu37ViT5enyd9+uBwAiGqCGhASvkSHBgx4PrtTGXWTMFYpDmZbjgyonyVgMciPrW4MqtJsA==} engines: {node: ^22.11 || ^24 || >=26} '@changesets/parse@1.0.0': @@ -614,8 +852,8 @@ packages: resolution: {integrity: sha512-Zm/6YliV/a2oeWTqHJf6KxLrQwgcK1i/BRDl2m0EKZvbnxV5fG9QRhwJJGshjsZTUTS6dkfURQ2K6aAvgNw/3Q==} engines: {node: ^22.11 || ^24 || >=26} - '@changesets/read@1.0.0': - resolution: {integrity: sha512-8TdE2PwG6yArPt5Ozej83Z6iHz1G8BDBKvIEKZ455MccR4K3GNbLR2XqjBxa+5yLFnEd3xAOPXYboBg1pt8stQ==} + '@changesets/read@1.0.1': + resolution: {integrity: sha512-nzvSC6RcTiWf/dsuwZFXpLzGGsRHYCL68U3uHV7srsulU93aVWY7u2GEJiDZ+4GIIElfaW5EqtKC0UHroY+LTQ==} engines: {node: ^22.11 || ^24 || >=26} '@changesets/should-skip-package@1.0.0': @@ -633,24 +871,27 @@ packages: resolution: {integrity: sha512-q/ThtP9gcnEP6xlv7LrY26C2mHqdGBti/MmOVngt/M/oIGYkssmQGxPK9WzBNt2juVcH/vml2WQ+ra8LXYOTaA==} engines: {node: ^22.11 || ^24 || >=26} - '@chevrotain/cst-dts-gen@10.5.0': - resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==} + '@chevrotain/cst-dts-gen@12.0.0': + resolution: {integrity: sha512-fSL4KXjTl7cDgf0B5Rip9Q05BOrYvkJV/RrBTE/bKDN096E4hN/ySpcBK5B24T76dlQ2i32Zc3PAE27jFnFrKg==} + + '@chevrotain/gast@12.0.0': + resolution: {integrity: sha512-1ne/m3XsIT8aEdrvT33so0GUC+wkctpUPK6zU9IlOyJLUbR0rg4G7ZiApiJbggpgPir9ERy3FRjT6T7lpgetnQ==} - '@chevrotain/gast@10.5.0': - resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==} + '@chevrotain/regexp-to-ast@12.0.0': + resolution: {integrity: sha512-p+EW9MaJwgaHguhoqwOtx/FwuGr+DnNn857sXWOi/mClXIkPGl3rn7hGNWvo31HA3vyeQxjqe+H36yZJwYU8cA==} - '@chevrotain/types@10.5.0': - resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==} + '@chevrotain/types@12.0.0': + resolution: {integrity: sha512-S+04vjFQKeuYw0/eW3U52LkAHQsB1ASxsPGsLPUyQgrZ2iNNibQrsidruDzjEX2JYfespXMG0eZmXlhA6z7nWA==} - '@chevrotain/utils@10.5.0': - resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} + '@chevrotain/utils@12.0.0': + resolution: {integrity: sha512-lB59uJoaGIfOOL9knQqQRfhl9g7x8/wqFkp13zTdkRu1huG9kg6IJs1O8hqj9rs6h7orGxHJUKb+mX3rPbWGhA==} - '@clack/core@1.4.3': - resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + '@clack/core@1.5.1': + resolution: {integrity: sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.7.0': - resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + '@clack/prompts@1.8.1': + resolution: {integrity: sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==} engines: {node: '>= 20.12.0'} '@cloudflare/kv-asset-handler@0.5.0': @@ -696,69 +937,69 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20260702.1': - resolution: {integrity: sha512-mOhf5TUEB1m2vPrxtqoIGfz0fUC9xyxRDx5gWHy5s+OCo6dcV+g7wI1R7gYCMFohhqF/2y2xeKVwMwCJjfn/WA==} + '@cloudflare/workers-types@5.20261019.1': + resolution: {integrity: sha512-llvvy7WBVhK+OfykyBkG9A7OgsGvgwHSNyU40XGVkiy/xVFy0t/xflyhEBHT+U59yQECZQbmcZsJtqCNnLpIRg==} '@commander-js/extra-typings@15.0.0': resolution: {integrity: sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==} peerDependencies: commander: ~15.0.0 - '@commitlint/cli@21.2.2': - resolution: {integrity: sha512-a+6hQxIxnpdvSvS2apvttPNbEliYsVC3PqFYDiiB2kjbwIsQsj1urvQ4Tkf70pKYozPalKAuRQmm/GHwndduqA==} + '@commitlint/cli@21.2.4': + resolution: {integrity: sha512-g3M/wrQdElqGH5vROIeL2QiYIxrzqUkhCgsDyDlWfKEyQdCt10OyMB28W2cJtpZ+VNGMvmaN923infr1hOfyrg==} engines: {node: '>=22.12.0'} hasBin: true - '@commitlint/config-conventional@21.2.2': - resolution: {integrity: sha512-NxA37SZviusFUEYOQZ5hNnZ1h7O/KiemPkxjOlpzKJNnWxThiwc6/SaZhaPa8fyLvfRBAywhQhJJk8XESHWlpQ==} + '@commitlint/config-conventional@21.2.4': + resolution: {integrity: sha512-IRldtwgNmR0SySR7wizFbhRmq45lPt6H3XCNTMyVN7jrPLgi8JlTRR6Eg1HLWUQt9P1Lh3k6eY25ilDa47EE6w==} engines: {node: '>=22.12.0'} - '@commitlint/config-validator@21.2.0': - resolution: {integrity: sha512-t7AzNHAKeIdo/3NRGwzpufKHsKkPHmFs/56N2Fnsh0/r0rGtnQzTxk6vnFgjaGr4hdSQKNB50/KAhR9Yk4LJKA==} + '@commitlint/config-validator@21.2.3': + resolution: {integrity: sha512-JQ13v0GafSM4fBYX8UowSy++07Was20auq0NcTdnzSEq6/05Cq5GBUMIfKkqjzyBwC9sJFmPpKWgLLhH7cygkw==} engines: {node: '>=22.12.0'} - '@commitlint/ensure@21.2.0': - resolution: {integrity: sha512-76IF9vDNS13lAzEEik9eKwzt8f9hYhWiwVXZ2AnyLCz5/f511FsEQ3pw1X3/zSQpdRLQU7i5qDMVKyXi1GWjSg==} + '@commitlint/ensure@21.2.4': + resolution: {integrity: sha512-woLOLV4pBMUBLyr5+MDM3WSG1r+eb2DObkysFSDxqyDUE4c6hZUOrpebJb2f8XcP3zKGJLb8H5w2suERVGI+Ag==} engines: {node: '>=22.12.0'} '@commitlint/execute-rule@21.0.1': resolution: {integrity: sha512-RifH+FmImozKBE6mozhF4K3r2RRKP7SMi/Q/zLCmExtp5e05lhHOUYqGBlFBAGNHaZxU/WYw1XuugYK9jQzqnA==} engines: {node: '>=22.12.0'} - '@commitlint/format@21.2.2': - resolution: {integrity: sha512-v6fvxZSc/AvVMROlr3H34+1766bZSYApRUSCAMjWamStPjKMvZ8GdvVA5YW/VQNgbFTmcMz6OYmSTJEvIjPrfA==} + '@commitlint/format@21.2.3': + resolution: {integrity: sha512-KKwCjXYqA8r295uhLnulDXL9yekdXmj2yp2Q0XsBPhxQ2iPuvRE8F43j7g7yexo69wTdmUQmFz15jpderluzUQ==} engines: {node: '>=22.12.0'} - '@commitlint/is-ignored@21.2.2': - resolution: {integrity: sha512-9UoKNgfFE3LU7FrzierCvk3CdDfMDeVGC86qZiT/n0TIjfq/dmZ9MHuXd45OTNRa26ZanmJRxEtmiXk/lEJihg==} + '@commitlint/is-ignored@21.2.3': + resolution: {integrity: sha512-Ng4nRj/LBAOvc+GQu7bsFW4/fL89LvZ14OOC/ERLbUpnG6QBwWRzY/1oXGwPs3C8YHWjJObin4kLYo2YeEn70w==} engines: {node: '>=22.12.0'} - '@commitlint/lint@21.2.2': - resolution: {integrity: sha512-Fy8JxEBzdmsYWFude/61GxXu5O+wEymwiRK2z9GL9R8mCsXphCoGxAFc5iHn5mjlfcSrhiiONE+ksf4KOjnaPg==} + '@commitlint/lint@21.2.4': + resolution: {integrity: sha512-HR8SGl1oEGfi/cqyBipanVY0a9CfEzIcJjPC37t7oQedaUUngw3d5E17g5Cfr2S3p6KsZM7UOHFq5fXHLRh7DQ==} engines: {node: '>=22.12.0'} - '@commitlint/load@21.2.2': - resolution: {integrity: sha512-0Tt6wDPX167cjKC5D4zhm0+20wJJG+TN/TKovMOspfSe78rOnKX+MNzlVNiu6HyQPZChPJ8QBH31MVt6Bb8fCg==} + '@commitlint/load@21.2.4': + resolution: {integrity: sha512-Gi+aAW9nL8XPgvg8kIO0gZOw1/ePvpDLkv1bm8tj0RqenhNtCzk0frtctJhl41uIAP7OSx9bgQ6HCOa9En4g2Q==} engines: {node: '>=22.12.0'} '@commitlint/message@21.2.0': resolution: {integrity: sha512-YxGoiXD/HXNXLJPrQwE5poXa+XH0CBEm+mdvbHQP0g6MV/dmJyUFCzPNzZbxL93GvZ70TmtTK0Z0/IBpAqHv8g==} engines: {node: '>=22.12.0'} - '@commitlint/parse@21.2.2': - resolution: {integrity: sha512-MEkobPfvRp+z06Wro8HMG1BDGHzZmj82A1LH1nWeG3ipHpg/x4m6v3wEDvMBIKjRFUnfR3nBeFs3MVCr7UdAmg==} + '@commitlint/parse@21.2.3': + resolution: {integrity: sha512-Jt61QpF1xA88damCELe8I0FlDZPSpXNc8IhN7z5kZ0EcDYPjdZ+ZHPvsSXl69r2MIlLnNKeHhOn2cmVpziFE9w==} engines: {node: '>=22.12.0'} - '@commitlint/read@21.2.1': - resolution: {integrity: sha512-hUW7EJQnNTL0vPOmVMNK4CrnrNBN0nN+JJHReFkdHO5y4iyHeEmTBwuC15OCqUTjxWo7idnH1LftfpWVIaPWIA==} + '@commitlint/read@21.2.3': + resolution: {integrity: sha512-szAepuLA1vTTr7fuudEg7jYyVHudf+FH+vptU91bhxE1WnE8TKrfTAi44HVllz8XpI8Pvp4GjR/iP5Nshgh+og==} engines: {node: '>=22.12.0'} - '@commitlint/resolve-extends@21.2.2': - resolution: {integrity: sha512-RPkJ/IFi7sMUUVbZLqwWFtWw/zRDcfFsmrPSiTMrt5wb7AdxOr86EGQFvmGzef5QKV5IPBWWCujqVTw1RWX44A==} + '@commitlint/resolve-extends@21.2.3': + resolution: {integrity: sha512-bqJdmAtXgAQel+l02uIsF7rHgKgx1AGZdGBjam7uK4XW54ZAQtB6XAIUXezYprQiCcRMpBh4fHs5JodXK4mVZA==} engines: {node: '>=22.12.0'} - '@commitlint/rules@21.2.2': - resolution: {integrity: sha512-eplQzyYkBjYB1HyyRj8hkcK11Y9DU9nuBz7uOKEd6NpE9NGDytLFCAnlRE+OoiK/5sHEJsaz2RGhuWBvYzIbNA==} + '@commitlint/rules@21.2.4': + resolution: {integrity: sha512-wranK/aevXs/WiW4N3orQlXY4sU2pQWjRSjN7I3TsZmP146Rr4CpsG38lpyqVcbNfMgvUVGy7ffYm7nCziTUwg==} engines: {node: '>=22.12.0'} '@commitlint/to-lines@21.0.1': @@ -769,136 +1010,64 @@ packages: resolution: {integrity: sha512-Y5gmQ+KxzqCrBFJfLvFEPvvwD3LDiNZoTT2yeFBm96M8qhmqSzQc5DvX3rheAaAMjyIvMXOCLS/mWfdpONsjyQ==} engines: {node: '>=22.12.0'} - '@commitlint/types@21.2.0': - resolution: {integrity: sha512-7zVFCDB2reMvJH5dmbKnOQPjZEvjdJTH8jc0U/PIPU1r3/+vf5pD1HlfitV2MWsWXrvu7u39iY1lyLUPOaN0Gw==} + '@commitlint/types@21.2.3': + resolution: {integrity: sha512-sGEA473TlCvhCGNoTBY9OXZVWdscIXdGt0dm8EpB+2MRfmt8LNh/X56P/T3nCtEB+eH5qGEa3odphSAoUxSfSQ==} engines: {node: '>=22.12.0'} - '@conventional-changelog/git-client@3.1.2': - resolution: {integrity: sha512-jZqwnJwf7nboIlAcw/mkOjVa6DexCcUOgT2oOQgkoi3z9vR8tGFkcMy2BFcYwjhL9sYcDDXkRQDayiDieCoW7A==} + '@conventional-changelog/git-client@3.2.0': + resolution: {integrity: sha512-sD/E0vzpkoDz/dqM1Hhv0ihC4KBw6RXjefeO8SG1XrX+wGkMxe1pKeedkKDPCtr2JjuhbuS9aJNgOvnT8hbeBw==} engines: {node: '>=22'} peerDependencies: conventional-commits-filter: ^6.0.1 - conventional-commits-parser: ^7.1.2 + conventional-commits-parser: ^7.1.3 peerDependenciesMeta: conventional-commits-filter: optional: true conventional-commits-parser: optional: true - '@conventional-changelog/template@1.3.0': - resolution: {integrity: sha512-GsCw/qu92GI0EX6s7fxUi/SG1lmFjG9XZivxxEDZXqztuQKCn5o5wKdz4v005zci0Md7EZzgAwmQLoIEDZoaow==} + '@conventional-changelog/template@1.4.0': + resolution: {integrity: sha512-aalGyl7dbB5PArRebDIX43ZvBlXrYm9uWzGJ26t+4SzJVPsOuvfILGGbw5X4yX7i50YEmJ8zvbiWnqH/AAnZqg==} engines: {node: '>=22'} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@date-fns/tz@1.2.0': - resolution: {integrity: sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==} - '@date-fns/tz@1.5.0': resolution: {integrity: sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==} - '@dnd-kit/abstract@0.5.0': - resolution: {integrity: sha512-hi13iMJgjPX/KDYVKg5VeDIhmYiV6buc9bAX+tCLYf4QdyYjPbsXjn2sPo6m7fQ6SGJBEFgHJ2PemeKDUbwBaA==} - - '@dnd-kit/accessibility@3.1.1': - resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} - peerDependencies: - react: '>=16.8.0' - - '@dnd-kit/collision@0.5.0': - resolution: {integrity: sha512-xUqRn3lS7oqLkT0AnnHS/STh/Czvwe1UapZFYiLbsUGxopMsQd4teaPCzPouOThoMdGEe+dHWjfqJl6t9iG4mQ==} + '@dnd-kit/abstract@0.5.1': + resolution: {integrity: sha512-XI13sUYRvRgggMocjHlQhLRgENm/2GF94KF7mk+c0uxse7sbn75r0BgxoNPDlzLTDPWx6PkS0YHoeXN9JWhnOA==} - '@dnd-kit/core@6.3.1': - resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@dnd-kit/dom@0.5.0': - resolution: {integrity: sha512-f2xFJp5SYQ8EW/Fbtaa8iBb66hpkWc7qa8vU826KW11/tb44sH+AisZnGtwOOTWTQ0GraqBDr5ixTErww+eKXw==} + '@dnd-kit/collision@0.5.1': + resolution: {integrity: sha512-exQmBlWWQ6calIup4KNQudiEF8Do61Lpzw/F0M3UOhqdKi9dx0ZXGf+qfdfmew8rJzPMj3MzKeGqNMEbCKA22g==} - '@dnd-kit/geometry@0.5.0': - resolution: {integrity: sha512-ubHQS1CiSDH8ssYH2xG5BnpwPSFP1tStXXjug7/Ba6qnQdu/EUH47l6QXKIksQnnanfVfDf0aGeevRxgZlj28A==} + '@dnd-kit/dom@0.5.1': + resolution: {integrity: sha512-r7/l4D+nsH1mFXWkplXCkZC9JlY7UjxsVuTu4yCqzC00XgX+SXiK3Oazp42KKG3mshfBNVtm15BI9rKNlkw2fA==} - '@dnd-kit/helpers@0.5.0': - resolution: {integrity: sha512-i4y+51/icSw+OHMr/su19qhnmNhAzh8PnBwXvapFYTd+64oodIyJRiRkB+hhfxAfnur7RYSW8qacDTrXjg2XOg==} - - '@dnd-kit/modifiers@9.0.0': - resolution: {integrity: sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw==} - peerDependencies: - '@dnd-kit/core': ^6.3.0 - react: '>=16.8.0' + '@dnd-kit/geometry@0.5.1': + resolution: {integrity: sha512-7X/Ro2U5qW96SihIukMitnc3pYc5n/PmHmJ28oApLBIJRfLxPLgrL6X0ZbQT7qUEfdUIqXnehobJ3jXAc4hdAA==} - '@dnd-kit/sortable@10.0.0': - resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} - peerDependencies: - '@dnd-kit/core': ^6.3.0 - react: '>=16.8.0' + '@dnd-kit/helpers@0.5.1': + resolution: {integrity: sha512-/nH5fpWuQmmc2FlwNAlxgZVQfAiMHeh+riGUZS69vj1Oq/MPc98APHgvjsVy7rN9MFd1XCgGYVcmb2pKvfYzNA==} - '@dnd-kit/state@0.5.0': - resolution: {integrity: sha512-y7XbabQqjF58Lk8YmDQuR8l6QjN+Kh4qlGEjUvHuIeasLk1QP+9L5diXS98VMxQIivyMmUtX2//f+3N7qPJX4w==} + '@dnd-kit/state@0.5.1': + resolution: {integrity: sha512-SN0BZ0d/ob9dK8sTqk/0z3eNBWV6xPSrLbHUBbiCo9Sj3xfhPFk6ej2oZpDcqk7LWaujT57ocgdtznY7wQ2yFw==} - '@dnd-kit/svelte@0.5.0': - resolution: {integrity: sha512-Ca/0dfmwG5hOj9f+xD+Xr9OIBFs8cpx+AVs2jutDOP7MdAd84LUPHEBMxQUr5gFQVoSFNdjxrmDf7hZE+H5lCg==} + '@dnd-kit/svelte@0.5.1': + resolution: {integrity: sha512-2mio7N7Lak4bnWIyov0Y3FVvYtKQKBB+/sfRsx+qdo87yGG1Br+Kx068R8EhFUUnBksVfAcWU1pzFvmPd/va3w==} peerDependencies: svelte: ^5.29.0 - '@dnd-kit/utilities@3.2.2': - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} - peerDependencies: - react: '>=16.8.0' - '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - '@emnapi/runtime@1.11.3': resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - '@emotion/babel-plugin@11.13.5': - resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - - '@emotion/cache@11.14.0': - resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - - '@emotion/hash@0.9.2': - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/react@11.14.0': - resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.3.3': - resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - - '@emotion/sheet@1.4.0': - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - - '@emotion/unitless@0.10.0': - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0': - resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.4.2': - resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - - '@emotion/weak-memoize@0.4.0': - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@emoji-mart/data@1.2.1': + resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} @@ -1526,6 +1695,10 @@ packages: resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.2.1': resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -1543,30 +1716,23 @@ packages: resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.7.2': - resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + '@eslint/plugin-kit@0.7.3': + resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@exodus/schemasafe@1.3.0': - resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} - - '@faceless-ui/modal@3.0.0': - resolution: {integrity: sha512-o3oEFsot99EQ8RJc1kL3s/nNMHX+y+WMXVzSSmca9L0l2MR6ez2QM1z1yIelJX93jqkLXQ9tW+R9tmsYa+O4Qg==} + '@evlog/cli@0.11.0': + resolution: {integrity: sha512-KsuZmRkdGV7rHhY6OYqB5dfshlgwFYe+uVCLO3QfQ8n+G8cnl7EeTAUNTTpcJh370i6ih488Y2Meou5CZYf4Cg==} + engines: {node: '>=22.0.0'} + hasBin: true peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + evlog: '>=2.31.0' - '@faceless-ui/scroll-info@2.0.0': - resolution: {integrity: sha512-BkyJ9OQ4bzpKjE3UhI8BhcG36ZgfB4run8TmlaR4oMFUbl59dfyarNfjveyimrxIso9RhFEja/AJ5nQmbcR9hw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@evlog/telemetry@0.3.5': + resolution: {integrity: sha512-NNrII8SEEEpAafjOvJNIZLGmzI9BOqbhvKILJuXW4kk206abYTcaEXLacTVMhaDDOuvb8YkdM0QuUdeTeAa34g==} + engines: {node: '>=18.0.0'} - '@faceless-ui/window-info@3.0.1': - resolution: {integrity: sha512-uPjdJYE/j7hqVNelE9CRUNOeXuXDdPxR4DMe+oz3xwyZi2Y4CxsfpfdPTqqwmNAZa1P33O+ZiCyIkBEeNed0kw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} '@floating-ui/core@1.8.0': resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} @@ -1574,18 +1740,6 @@ packages: '@floating-ui/dom@1.8.0': resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} - '@floating-ui/react-dom@2.1.9': - resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.27.20': - resolution: {integrity: sha512-CMqMy7OaXl9W0eq1Uy7L7i2Y/anPvHmFmESd2CEw0t5YvZhcVCeo4MBevAmswRllX7Y2dEidA4ozGPunLSTQpw==} - peerDependencies: - react: '>=17.0.0' - react-dom: '>=17.0.0' - '@floating-ui/utils@0.2.12': resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} @@ -1598,9 +1752,6 @@ packages: '@fontsource/unifontex@5.3.0': resolution: {integrity: sha512-gR/tdFohBxyWk5ojTvUAlYe0bSTpstvGDKzupFQ1O9uwRRZpwQ0vamIDvGPrl2Hym94FhWC+mr1A4cLfFkKz3g==} - '@gerrit0/mini-shiki@3.23.0': - resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} - '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1631,24 +1782,12 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.35.4': resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.35.4': resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} engines: {node: '>=20.9.0'} @@ -1660,129 +1799,64 @@ packages: engines: {node: '>=20.9.0'} os: [freebsd] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.3.3': resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.3.3': resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm64@1.3.3': resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm@1.3.3': resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.3.3': resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.3.3': resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.3.3': resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-x64@1.3.3': resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.3.3': resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm64@0.35.4': resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} engines: {node: '>=20.9.0'} @@ -1790,13 +1864,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm@0.35.4': resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} engines: {node: '>=20.9.0'} @@ -1804,13 +1871,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-ppc64@0.35.4': resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} engines: {node: '>=20.9.0'} @@ -1818,13 +1878,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-riscv64@0.35.4': resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} engines: {node: '>=20.9.0'} @@ -1832,13 +1885,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-linux-s390x@0.35.4': resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} engines: {node: '>=20.9.0'} @@ -1846,13 +1892,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-x64@0.35.4': resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} engines: {node: '>=20.9.0'} @@ -1860,13 +1899,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-arm64@0.35.4': resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} engines: {node: '>=20.9.0'} @@ -1874,13 +1906,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-x64@0.35.4': resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} engines: {node: '>=20.9.0'} @@ -1888,11 +1913,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - '@img/sharp-wasm32@0.35.4': resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} engines: {node: '>=20.9.0'} @@ -1902,44 +1922,26 @@ packages: engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - '@img/sharp-win32-arm64@0.35.4': resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.35.4': resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.35.4': resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] - '@internationalized/date@3.12.3': - resolution: {integrity: sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q==} + '@internationalized/date@3.12.4': + resolution: {integrity: sha512-M1dEn4c1U1HsSlaVR8upZtSqvXrTkHDfv18H01uCSJyjVLDxnBR38v/fMxecmlwXKR4i9HeZcmgQAPE6A+aGJQ==} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1951,8 +1953,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -1960,88 +1962,17 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 - '@lexical/clipboard@0.41.0': - resolution: {integrity: sha512-Ex5lPkb4NBBX1DCPzOAIeHBJFH1bJcmATjREaqpnTfxCbuOeQkt44wchezUA0oDl+iAxNZ3+pLLWiUju9icoSA==} + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@lexical/code@0.41.0': - resolution: {integrity: sha512-0hoNi1KC9/N3SBOGcOcFqnT0OpwmcRRAhfxTKMGqfCtCvAMzULVwZ8RWc9/NV9bKYESgBTW5D9xkDANP2mspHg==} - - '@lexical/devtools-core@0.41.0': - resolution: {integrity: sha512-FzJtluBhBc8bKS11TUZe72KoZN/hnzIyiiM0SPJAsPwGpoXuM01jqpXQGybWf/1bWB+bmmhOae7O4Nywi/Csuw==} - peerDependencies: - react: '>=17.x' - react-dom: '>=17.x' - - '@lexical/dragon@0.41.0': - resolution: {integrity: sha512-gBEqkk8Q6ZPruvDaRcOdF1EK9suCVBODzOCcR+EnoJTaTjfDkCM7pkPAm4w90Wa1wCZEtFHvCfas+jU9MDSumg==} - - '@lexical/extension@0.41.0': - resolution: {integrity: sha512-sF4SPiP72yXvIGchmmIZ7Yg2XZTxNLOpFEIIzdqG7X/1fa1Ham9P/T7VbrblWpF6Ei5LJtK9JgNVB0hb4l3o1g==} - - '@lexical/hashtag@0.41.0': - resolution: {integrity: sha512-tFWM74RW4KU0E/sj2aowfWl26vmLUTp331CgVESnhQKcZBfT40KJYd57HEqBDTfQKn4MUhylQCCA0hbpw6EeFQ==} - - '@lexical/headless@0.41.0': - resolution: {integrity: sha512-MH8oDuUKdM/Jq0c9vlEEkCL9pEQg4SwyrABBGIbFf+87VBJ5EWDdG9g1vJq7fKSDxfhFux7F5+i+zgUnxOQR/g==} - - '@lexical/history@0.41.0': - resolution: {integrity: sha512-kGoVWsiOn62+RMjRolRa+NXZl8jFwxav6GNDiHH8yzivtoaH8n1SwUfLJELXCzeqzs81HySqD4q30VLJVTGoDg==} - - '@lexical/html@0.41.0': - resolution: {integrity: sha512-3RyZy+H/IDKz2D66rNN/NqYx87xVFrngfEbyu1OWtbY963RUFnopiVHCQvsge/8kT04QSZ7U/DzjVFqeNS6clg==} - - '@lexical/link@0.41.0': - resolution: {integrity: sha512-Rjtx5cGWAkKcnacncbVsZ1TqRnUB2Wm4eEVKpaAEG41+kHgqghzM2P+UGT15yROroxJu8KvAC9ISiYFiU4XE1w==} - - '@lexical/list@0.41.0': - resolution: {integrity: sha512-RXvB+xcbzVoQLGRDOBRCacztG7V+bI95tdoTwl8pz5xvgPtAaRnkZWMDP+yMNzMJZsqEChdtpxbf0NgtMkun6g==} - - '@lexical/mark@0.41.0': - resolution: {integrity: sha512-UO5WVs9uJAYIKHSlYh4Z1gHrBBchTOi21UCYBIZ7eAs4suK84hPzD+3/LAX5CB7ZltL6ke5Sly3FOwNXv/wfpA==} - - '@lexical/markdown@0.41.0': - resolution: {integrity: sha512-bzI73JMXpjGFhqUWNV6KqfjWcgAWzwFT+J3RHtbCF5rysC8HLldBYojOgAAtPfXqfxyv2mDzsY7SoJ75s9uHZA==} - - '@lexical/offset@0.41.0': - resolution: {integrity: sha512-2RHBXZqC8gm3X9C0AyRb0M8w7zJu5dKiasrif+jSKzsxPjAUeF1m95OtIOsWs1XLNUgASOSUqGovDZxKJslZfA==} - - '@lexical/overflow@0.41.0': - resolution: {integrity: sha512-Iy6ZiJip8X14EBYt1zKPOrXyQ4eG9JLBEoPoSVBTiSbVd+lYicdUvaOThT0k0/qeVTN9nqTaEltBjm56IrVKCQ==} - - '@lexical/plain-text@0.41.0': - resolution: {integrity: sha512-HIsGgmFUYRUNNyvckun33UQfU7LRzDlxymHUq67+Bxd5bXqdZOrStEKJXuDX+LuLh/GXZbaWNbDLqwLBObfbQg==} - - '@lexical/react@0.41.0': - resolution: {integrity: sha512-7+GUdZUm6sofWm+zdsWAs6cFBwKNsvsHezZTrf6k8jrZxL461ZQmbz/16b4DvjCGL9r5P1fR7md9/LCmk8TiCg==} - peerDependencies: - react: '>=17.x' - react-dom: '>=17.x' - - '@lexical/rich-text@0.41.0': - resolution: {integrity: sha512-yUcr7ZaaVTZNi8bow4CK1M8jy2qyyls1Vr+5dVjwBclVShOL/F/nFyzBOSb6RtXXRbd3Ahuk9fEleppX/RNIdw==} - - '@lexical/selection@0.41.0': - resolution: {integrity: sha512-1s7/kNyRzcv5uaTwsUL28NpiisqTf5xZ1zNukLsCN1xY+TWbv9RE9OxIv+748wMm4pxNczQe/UbIBODkbeknLw==} - - '@lexical/table@0.41.0': - resolution: {integrity: sha512-d3SPThBAr+oZ8O74TXU0iXM3rLbrAVC7/HcOnSAq7/AhWQW8yMutT51JQGN+0fMLP9kqoWSAojNtkdvzXfU/+A==} - - '@lexical/text@0.41.0': - resolution: {integrity: sha512-gGA+Anc7ck110EXo4KVKtq6Ui3M7Vz3OpGJ4QE6zJHWW8nV5h273koUGSutAMeoZgRVb6t01Izh3ORoFt/j1CA==} - - '@lexical/utils@0.41.0': - resolution: {integrity: sha512-Wlsokr5NQCq83D+7kxZ9qs5yQ3dU3Qaf2M+uXxLRoPoDaXqW8xTWZq1+ZFoEzsHzx06QoPa4Vu/40BZR91uQPg==} - - '@lexical/yjs@0.41.0': - resolution: {integrity: sha512-PaKTxSbVC4fpqUjQ7vUL9RkNF1PjL8TFl5jRe03PqoPYpE33buf3VXX6+cOUEfv9+uknSqLCPHoBS/4jN3a97w==} - peerDependencies: - yjs: '>=13.5.22' - - '@lucide/svelte@1.33.0': - resolution: {integrity: sha512-b+osTYG2V4dge5Lr7tnaTaahhy/4vH7Xb8zcqVjmctjwgkpXS0NNOJPkGzHHZoxtw/OO+2YAU28omeMfYCaawg==} + '@lucide/svelte@1.60.0': + resolution: {integrity: sha512-Q4lkuuBLrhxjBK8yuJ6GjeHZDOzrxlRH5GOzCzI7HJBeCE+Rj1kwi4KsD81XM50bjnfwhPhSFrh/j+D4vn8jUg==} peerDependencies: svelte: ^5 @@ -2057,866 +1988,690 @@ packages: resolution: {integrity: sha512-6QEf6yqFbETdwGITKq57aYoPfX/3K8XFNwsAlx0C1M7o8cb79sv1M3w+tWuWvIcSbNqrLF7OD7YpZMVVz335hQ==} engines: {node: '>=20.0.0'} - '@monaco-editor/loader@1.7.0': - resolution: {integrity: sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==} - - '@monaco-editor/react@4.7.0': - resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} - peerDependencies: - monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@mrleebo/prisma-ast@0.13.1': - resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==} - engines: {node: '>=16'} - - '@napi-rs/lzma-linux-x64-gnu@1.5.1': - resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} - engines: {node: ^22.20 || ^24.12 || >=25} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@next/env@15.5.19': - resolution: {integrity: sha512-sWWluFvcv5v3Fxznmf2ZfjyoVQt/64oCnYqS90inQWGzMPK1VjvekPiz3OPHKmFT30EnHrjlbyaHLt3M0vWabw==} - - '@next/env@16.2.7': - resolution: {integrity: sha512-tMJizPlj6ZYpBMMdK8S0LJufrP4QTdR6pcv9KQ/bVETPAmg0j1mlHE9G2c38UyGHxoBapgwuj7XjbGJ2RcDFOg==} - - '@next/swc-darwin-arm64@16.2.7': - resolution: {integrity: sha512-vm1EDI/pVaBNNiychmxk3fft+OhQPVD9cIM/tReLZIQ3TfQ4kqI9DwKk00dzuS1ulC7icbrzCFrmRRlk9PfNdw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@16.2.7': - resolution: {integrity: sha512-O3IRSv1ZBL1zs0WrIgefTEcTKFVn+ryxBNe54erJ6KsD+2f/Mmt7g2jOYh8PSBdUwPtKQJuCsTMlZ7tIu2AcsQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@16.2.7': - resolution: {integrity: sha512-Re6PZtjBDd0aMU+VcZcC/PrIvj4WhrjDYtMhhCVQamWN4L90EVP0pcEOBQD25prSlw7OzNw5QpHLWMilRLsRNw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@next/swc-linux-arm64-musl@16.2.7': - resolution: {integrity: sha512-qyogG9QtBzWxgJfeGBvOEHI3851gTfCF3wLZ5RDLTBJGAmE9p1qDwKCOdrBrvBzRvYDT+gUDp72pzlSEfAXgNA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@next/swc-linux-x64-gnu@16.2.7': - resolution: {integrity: sha512-Vhe4ZDuBpmMogrGi5D4R2Kq4JAQlj6+wvgaFYy31zfES0zPmt6TLA+cuYpM/OLrPZjo2MYQTHVqNUSCR6+fDZQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@next/swc-linux-x64-musl@16.2.7': - resolution: {integrity: sha512-srvian89JahFLw1YLBEuhvPJ0DO5lpUeJQMXy4xYo7g628ZlNgXdNkqoxSAv9OYrBfByh6vxISMwW/mRbzCY+g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@next/swc-win32-arm64-msvc@16.2.7': - resolution: {integrity: sha512-GX3wvLpULFuRFJzwHaKfm7QZJ18F4ZSuxlPJ96BoBglCzBmdSjyeBKF+ZhWhvL/ckxNfLnNa7bsObO2ipYpszw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-x64-msvc@16.2.7': - resolution: {integrity: sha512-J4WlM72NMk076Qsg0jTdK3SNXatlSdnjW7L7oNGLst1tAGjHrJh/FYi+pw9wyIjEtGRKDNzD0zuiY16oWYWVaw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] + '@mrleebo/prisma-ast@0.16.0': + resolution: {integrity: sha512-a9ELYNIflEQP38tSu6gnUgSAWgXjuhMvC52868K5sWgyRmYsjiJMWTUmm8iy7hZT5EN2ZKVydMTFP2q3/+6ccg==} + engines: {node: '>=22.0.0'} - '@noble/ciphers@2.3.0': - resolution: {integrity: sha512-Clu/xdfgVTf9o7ngLOURaxePwR0j8sjclKEtVij10/jGulwFsPWCvvRgG/XjUVf8Nei+jLG6uwyXzUTGY1DQrw==} + '@noble/ciphers@2.4.0': + resolution: {integrity: sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw==} engines: {node: '>= 20.19.0'} - '@noble/hashes@2.3.0': - resolution: {integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==} + '@noble/hashes@2.4.0': + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} engines: {node: '>= 20.19.0'} - '@opentelemetry/api-logs@0.220.0': - resolution: {integrity: sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==} - engines: {node: '>=8.0.0'} + '@orval/angular@8.43.0': + resolution: {integrity: sha512-IxDrLrm2lORBsIQt01f4fDM8P/qXuDC8qB66FABxFy8znUXre+bNZBAIeB9IwwH0A4tnPgIKM67uqaXne8qahQ==} - '@opentelemetry/api@1.9.1': - resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} - engines: {node: '>=8.0.0'} + '@orval/axios@8.43.0': + resolution: {integrity: sha512-PjC3aK18iXdDWoQhH9oX7njzbrtHcTiNDBA235emGv5W9T8meSGwtEt4F2UcQw/3ZCXbnVPqCfMeMnses1E5YQ==} - '@opentelemetry/core@2.10.0': - resolution: {integrity: sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==} - engines: {node: ^18.19.0 || >=20.6.0} + '@orval/core@8.43.0': + resolution: {integrity: sha512-MexVK1uge9XWU37PaY64BPZdfBRoFmdvtT+UKYkZIcl86uC9kRzKXDOi8SE+gT9cjgVg2rqPnpjHtV03S55uQg==} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@faker-js/faker': '>=8' + '@modelcontextprotocol/server': '>=2' + peerDependenciesMeta: + '@faker-js/faker': + optional: true + '@modelcontextprotocol/server': + optional: true - '@opentelemetry/instrumentation@0.220.0': - resolution: {integrity: sha512-xQx3E2WxP1mDvKzxLxX+CTCtNLa560YJZ3087qYHerl2YmiKpv7AH+dAy7vmx+eVrZ5BwhfWUAVoKOoxCNHcpw==} - engines: {node: ^18.19.0 || >=20.6.0} + '@orval/effect@8.43.0': + resolution: {integrity: sha512-txqKsWM/nfsqePogEoJUAIZrAzSSCagcBmJCy4W6Ixi8D/ZnYF4hb9F8ZqHuIrrzhMum7g+7Qirph0mLQ5e5Sg==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + effect: '>=3' + peerDependenciesMeta: + effect: + optional: true - '@opentelemetry/resources@2.10.0': - resolution: {integrity: sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + '@orval/fetch@8.43.0': + resolution: {integrity: sha512-RfcumaeFIGuQbalz6g42Ouwen3GSjRTrW0ICqaiOvJaPKjPKi2FAVYBzrDOIlsNE1NeDVLtsYgFp3UP8ExOfXg==} - '@opentelemetry/sdk-trace-base@2.10.0': - resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==} - engines: {node: ^18.19.0 || >=20.6.0} + '@orval/hono@8.43.0': + resolution: {integrity: sha512-t6ZyeL8J1L4bfav/qnJJ+tCbTZrxA/0e/YQqte/ollCNGRWgx7GSorcecIUKA/kYZrFrPuechWQH8gLoaUgI3Q==} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true - '@opentelemetry/sdk-trace@2.10.0': - resolution: {integrity: sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==} - engines: {node: ^18.19.0 || >=20.6.0} + '@orval/mcp@8.43.0': + resolution: {integrity: sha512-Zc5Q/2g10P/3avSZFeV57w9URbludvX8Bhs4lw1tgQ8hEYCW0rWUjR6I5VWGDjNGo/iayZ49SUYSBsJirTPCCQ==} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - - '@opentelemetry/semantic-conventions@1.43.0': - resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} - engines: {node: '>=14'} - - '@orval/angular@8.24.0': - resolution: {integrity: sha512-tmDca47QJdB7+suSUdjki3oURBP/EHhHkvgbOmm4KPy2G0YBKHSEm/oMphE5fab4TBzMNEVoiBi5PnK7m6Hu3g==} - - '@orval/axios@8.24.0': - resolution: {integrity: sha512-cldt9cGeZrgNtUb4iLeyE8mLh1PJisfGhdw4jmR+d1ZQl6H2ZjS7mQ+e+KU1SbZ1dITHeuZUC9I9UwHtZ882gw==} + '@modelcontextprotocol/server': '>=2' + peerDependenciesMeta: + '@modelcontextprotocol/server': + optional: true - '@orval/core@8.24.0': - resolution: {integrity: sha512-2aHwQ+3wFNu4rjqMlITSqtsO8YLvvyk+hvBdyLmrKTdyk3De9gQBoMynnLwVU0V6MXgb2a7x7bd1nnRelGJHJA==} + '@orval/mock@8.43.0': + resolution: {integrity: sha512-97cK3HTT7LDTD8l7NB9iVlPGXKzyGNoFR88PMH0SRdnlPDoYP9I93wzDKGuRrJdqNcG/EmNRRfhtmlzJtEQo/A==} peerDependencies: - '@faker-js/faker': '>=10' + '@faker-js/faker': '>=8' + msw: '>=2' peerDependenciesMeta: '@faker-js/faker': optional: true + msw: + optional: true - '@orval/effect@8.24.0': - resolution: {integrity: sha512-+0pj5Fy6mHpUva9AwIddfgNSQWfZKbt+4AsJVCU6YuhE7GBme0LppTpB6FCYl3GarbwE2PY8ApTQ8Wgt8hvO8Q==} - - '@orval/fetch@8.24.0': - resolution: {integrity: sha512-Wfw4rkeTHhTmGyJYMCc3ar/rczymkskxN1g4+koVmmynhIziwlHJAaNXc4uwnbEhg6S/T0QGrX9OTGSmd+NDSg==} - - '@orval/hono@8.24.0': - resolution: {integrity: sha512-CTEg31oZwj1ZkFVaqg6V8fbc5qz9f72ScYQvk6EOGRbV7Q/hDhYDuWbpscw16epW9KcUlo3N3Zf20haMTLz4yw==} + '@orval/pinia-colada@8.43.0': + resolution: {integrity: sha512-GXc1icJaHg9nTO+xMGDeKhPdKEI6Ndo4QsWcejLK4+Ab+s1431YI9I9t24aVfRAd3aqd+kaQ40bMUSODG0043w==} peerDependencies: - typescript: '>=5' + '@pinia/colada': ^1.4.4 peerDependenciesMeta: - typescript: + '@pinia/colada': optional: true - '@orval/mcp@8.24.0': - resolution: {integrity: sha512-nbO2sYmtdMkeBsl74BfpoaYYNrelbH+/0ss9xWXX6sW7IZoJK8NqhiaJ4idEuyQ/fF4g7fTBmsWipZdEUDLYdQ==} - - '@orval/mock@8.24.0': - resolution: {integrity: sha512-XjnZM/0WQdlh/+IGT3P/UjKvYzOm+89avkd5wadC0StBpHgGCnYWuENmoLdkbOBhAeyeL6l9Jp11+mOllU6MZw==} - - '@orval/query@8.24.0': - resolution: {integrity: sha512-E3biV70vHOUKJSn+no6nJAd6Pg40V4PnyHXtR/U7lAaPTAQPM7k9tKpRaGoIijogmmX6h06yOI687HU1N/RSJA==} + '@orval/query@8.43.0': + resolution: {integrity: sha512-i20ya3QowacGGaaPQBfKZq6utK0JqHo751RU7cPoGGxP0aqg082QUAHBjXX5vqabPT++mqQ0xFeVkK6JeZqwvg==} + peerDependencies: + '@tanstack/angular-query-experimental': '>=5' + '@tanstack/react-query': '>=4' + '@tanstack/solid-query': '>=4' + '@tanstack/svelte-query': '>=4' + '@tanstack/vue-query': '>=4' + peerDependenciesMeta: + '@tanstack/angular-query-experimental': + optional: true + '@tanstack/react-query': + optional: true + '@tanstack/solid-query': + optional: true + '@tanstack/svelte-query': + optional: true + '@tanstack/vue-query': + optional: true - '@orval/solid-start@8.24.0': - resolution: {integrity: sha512-X+T7GaHbe1GgR7ltpiFiw4F6klj2pGyCNqkHxTsc4SA/GwiFemBAyBXSdIhMTPU4JObehiFB4soojmS/WPnzBw==} + '@orval/solid-start@8.43.0': + resolution: {integrity: sha512-vVryn0gCj3Fh8VqsZvD7pNmH+JhT+zE5ihPGqCelL9Lcat6gdS794mUdcwpp4TtQh9kJb1o/f0RqA0Uy7CFMVg==} - '@orval/swr@8.24.0': - resolution: {integrity: sha512-7YBfqSUGpbZRm6siBm1vYa4qz7ukm+uimDfW6M1tOfCyySfve3SIMPMI0c/Sl7hmWdBZYcSYqRyasG7Nr9qBtg==} + '@orval/swr@8.43.0': + resolution: {integrity: sha512-Beh2qHOvmBYxsGR0cn31ZWjL5dkK3Vg/gF27uMCJbUFp/7LCadiHwG4MOaTMxTlqpuRCNTQyxqMlAYp0fZGrUA==} + peerDependencies: + swr: '>=2' + peerDependenciesMeta: + swr: + optional: true - '@orval/zod@8.24.0': - resolution: {integrity: sha512-TXK+tQbh9y/q2XlneOqmwg3B6BsbjnLJhkG1/1dMnK3EDdqbf5HSmYKndejJmloomgAdugv0OGyOgmBdSaeisg==} + '@orval/zod@8.43.0': + resolution: {integrity: sha512-TqMQtvFm1z2Z9C/AllNl6G1BwTjkQUp6wDC0SiizwaMDOI/kxJjgJAJDm64nL7mffLt8RN3FXebCAy17aD8sug==} + peerDependencies: + zod: '>=3' + peerDependenciesMeta: + zod: + optional: true '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxc-project/types@0.146.0': - resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} + '@oxc-parser/binding-android-arm-eabi@0.148.0': + resolution: {integrity: sha512-pHASv9g5pASxb7akHERZNSkrEqPhFaUix98o7d9hbTpolnnFWl7UiRrcMhCsV1+iVO4/cJwKsbKRJTFNs2tdBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - '@oxfmt/binding-android-arm-eabi@0.64.0': - resolution: {integrity: sha512-o6uzh/jTOQeAY5TdkAeXdqv7MBRcPxiRA08zrcBtkKj5cSu/FMu0Hl7Q6Fi1KCKyCWZ6lJVjBzdsJvsKltUsGQ==} + '@oxc-parser/binding-android-arm-eabi@0.152.0': + resolution: {integrity: sha512-393VtirINkae4XHBTkq/yQxhOwEr4V+r0et37P2fp+sYZSdYgZTRDPo5Um8vBh0QjMZ+RmaMy4PP0qwr4cTMwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.64.0': - resolution: {integrity: sha512-jRGSUeeP7p3Gynw2YaCVtjBIA6ZxY6bEB/ES5i54OhqmRTyuVg7ZgstEtzgq6GOAJd+2QZ5pvf+bFfmW5Mp9cw==} + '@oxc-parser/binding-android-arm64@0.148.0': + resolution: {integrity: sha512-sg/6Ez0KdAygsu0POELux9wN1Po2CP93WY8eNl4DBKIGprsd4QSHBXOb471Pu9i2OCD5sLkISSb2agZEhVn2Zw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-android-arm64@0.152.0': + resolution: {integrity: sha512-iYFcExATJNZ0rZj0o02THbD1Nc9jAW0nVgIQPee6ejbSASpbZXlIMw8jxtpzaG14JQTWwGSZ6U5dEtRJXE6V3Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.64.0': - resolution: {integrity: sha512-JINwtU2lW7nOFSqi+H2qplipNUqah9Gc1jgGmB82kTD4UnZrZIVxCJ9qEmFiKfjNq27gYLFhrUb0to86aCwMjw==} + '@oxc-parser/binding-darwin-arm64@0.148.0': + resolution: {integrity: sha512-yiSJmzGUvCUaJT8X3j40gVcX+ckuHQMuiOtF8DvzTs5+JtB/7XuHFPp4M+vv5u+HlBtDUd4Ks5pyHpWz8mfnkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.64.0': - resolution: {integrity: sha512-gCmuswrgrOSajV4HCRFkVCGIruPq8bjYuPYgSE2WQB3mD6XrdyZ3JMSRZCkQ8zCxOyGWriBo6QoZ5nmMHQ1BfA==} + '@oxc-parser/binding-darwin-arm64@0.152.0': + resolution: {integrity: sha512-fnU+DfUzi5/rFy0LzmipYRz06PAUUkOS8kCJQ3Eg6oqlunC1XZXoffFqxmdL51RmcbYtUG3P8DVG1U5fckoa2A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.148.0': + resolution: {integrity: sha512-6ZeklaamrMy4H2JmhvcJg6iip59tYILtuLaILxyAHT3l5FDxnI5ihVievAft5ZmAbqtlWHErOi1OpJK8gy1wcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.64.0': - resolution: {integrity: sha512-Ab8g7a38pT0MMImjh7anRSTve6buWBIlcXIFBYa5xl4s6UxEgKSc2xOOhbGtLwvXnEi2PsEDGoJh3oUU7xkehQ==} + '@oxc-parser/binding-darwin-x64@0.152.0': + resolution: {integrity: sha512-Y3U2okryWTs7hDld6UhjJwLNf8/do+x4g4C+1U5SiGwrTLwbO83WJYJA8+l9iFSilWBgnfpd/+U76tfeNxUHzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.148.0': + resolution: {integrity: sha512-vFsPx+a/qFECPnz/H8nC6x6MDvnWscLTCo/5muojEF54ERUq1kdgbvnWo95YnkhjF9sTIcG/uDxQBh1gffaufQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-freebsd-x64@0.152.0': + resolution: {integrity: sha512-XkhkRrrPffEw+ZLv/d/5pEni0buxinm/E/N6fLbJCunD1DBbeCTtVP23ESV+4CWCWdSz397asks1ViGslpmWiQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.64.0': - resolution: {integrity: sha512-BgvS3CoQ+Xy2deoZqEN8JVKabcCZi2RxA3yant8G9OAv9KuPJ9TCjHkqigzdHUVwErZxEP5d2bzLIEyKYyBDLg==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.148.0': + resolution: {integrity: sha512-eOr3M+6iGbbxNL4PSS0VtsyQ2eOUxSBh00BqO22SbolDimPSYsBuLr/LCrZBkiqW2BoabhR6V4R8jrRAay7hjg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.64.0': - resolution: {integrity: sha512-QXpNxwoMj0YvnceCNZadNSden3bIcnvjn/sDp/rwZhRoZoZYGpHvtPyhGsdJz9uvT9GkaMW7SsLddurU56dt8w==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.152.0': + resolution: {integrity: sha512-MLzsRRbdfmdzo6JEhbC1yKU9ItfvM8tEf18HM32jCiNYZEz6J3bRBRl3cTkKR0vBdrk9ZVlcARXtwHccs+epDA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.64.0': - resolution: {integrity: sha512-BBgH3I1ppDsI5pZ4Pdhw0ceYxwVCfbU/bZEBCeZ6caRS9x0ZabErxubP7riGUn11PXZBhe8DYdjkDKP1FlVQ5w==} + '@oxc-parser/binding-linux-arm-musleabihf@0.148.0': + resolution: {integrity: sha512-58ZKDw0mQRbCNfrd2IDyV4o8T7enzGERJn41BH2tjrZVGyiKiFzcfDicuB7Zcpb/1xIOrObovr8Dja6lZi8dLw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.152.0': + resolution: {integrity: sha512-HHerTEJz7Iy10Ji6BGsk4gqG6PU0UzFuBu91jIEOX89FnrI5ECWSEr7BLpkYQhp7U0QFtMnBhNfQKI0hYZK78w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.148.0': + resolution: {integrity: sha512-Fnu95O4eZ5i++GPvIzBEZ8y4ddTLR+D9paYa8JRaRk6ZK7nHQiWP5xtrhcPQsXqgat1d7sU/d5rbbI0p1FTHSQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-arm64-gnu@0.152.0': + resolution: {integrity: sha512-9Bb8GyzZ2uSLzRDZ27usaKokr07mxiBe2dDF5b6bd2janmaJTT1gL51UfP7AU30yFiXrJvcRyFKREAgKwZYs0w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.64.0': - resolution: {integrity: sha512-v19HSjC/BGXdt26qEvKZtwAHgGmQ2Agcap2kQP+KIqoRZqivVzYth3ui2dJA1i+6/fjpjga85lIOaJJjQ/bOOw==} + '@oxc-parser/binding-linux-arm64-musl@0.148.0': + resolution: {integrity: sha512-3CQy/BMdx7N7H3qrcPxUL+a2CwUZodUcf6oq8iJuNZ9C6Ol1aq3mcWzsgySJ7CHFLvpX21ZDPp1r1X0QLbu/AQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.64.0': - resolution: {integrity: sha512-PElLnOo4xFTBZrxPhgTIj0eHqZXwEBQoNWtb7facUV170T0B0FRET0iNbb3LUeLWTybkUW+vsdyv4ihOdyXGyw==} + '@oxc-parser/binding-linux-arm64-musl@0.152.0': + resolution: {integrity: sha512-om7iDMUroI74A/lfRRWY9/Ev3VWrVsrUZ4tyvyh8raBey/sdcfyAD7tYWc+iykAiotnmftyKTpUKFr1QnaBrAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-ppc64-gnu@0.148.0': + resolution: {integrity: sha512-9LkaYvfiF8hMOw900csAvkf1oxE8XlmMeGowu5BcastSSwV8mKvKRMNU7HsV+ycyj1dQD8pX5qgOw8ja6SJacg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.64.0': - resolution: {integrity: sha512-Qzsg15n4F5CH+MorcRW4MkAEMiLzXmeG+DiDSbP/bBTqCmWOH3K9DHryNrve+JHlV0txS+B6Z9P5Xz+cmWeL+g==} + '@oxc-parser/binding-linux-ppc64-gnu@0.152.0': + resolution: {integrity: sha512-Lf1OL2lMTqwDMFC6jnRb30B+WYHKV0XT+bPHcFM6xHtNVwxpobiTzUIvKH6a0LWpvfwyru8Yu6zCGHqqFHH+gg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.148.0': + resolution: {integrity: sha512-2GBiM9h26dR4WJfhoMvnFMnFLf7m/kYs4UMqjvrOfQG4BV1nuTJDH22Zc2MQr3INZF7nSKYQ6xlhD3hQ7A6gug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.152.0': + resolution: {integrity: sha512-BYWSMQK+YJ9ZILStPcmmiSVq8KEG9Qdq/c4BHPC3rUEq/fEDCVjUIwdj5ZzjgZ9P9is9PKu0tcAXzq1ZXg4urQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.64.0': - resolution: {integrity: sha512-/GZ358wnQ/Ez4UVnCcZIi56JkY0sOdZ+B108pqXKqZz3jLS59F4KEAB1Qv3fRlObrFEk+3L2vUQ/xoPx+3vjXw==} + '@oxc-parser/binding-linux-riscv64-musl@0.148.0': + resolution: {integrity: sha512-uPqZexvKJmEgq4mAu36qe2xTfXZE7oyik1R7KtZ5tl8qKlq1U1fIqTFRUEBZqRGvforoTrGIpatRzcoPKO66RA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.64.0': - resolution: {integrity: sha512-/C9We3DXegowfLXtVCYHeNiU9azwCDr5cQkEtCVlc74vyn+lLQSPApJ1CZmxAduqeq/Oi3gQ+IVptyhCaTMtkQ==} + '@oxc-parser/binding-linux-riscv64-musl@0.152.0': + resolution: {integrity: sha512-d2LqHNNNqdH185sRK5dPKWZu201JrNu9/CRFuVEuT+ht7n/QaVblEMWT9MALQPrDWYvhG10P+NSKJFquDWZ09w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-s390x-gnu@0.148.0': + resolution: {integrity: sha512-9oUHvnTbp7ZraFsTC8PN6XhdhPSSxZumYvixWl7Smi353gEULvK6yV0sXNVrdFMHQeaDKFCi8TgDhNK7/A+Y+Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-s390x-gnu@0.152.0': + resolution: {integrity: sha512-8gBeHt5rA/8+pKhHl+zLggfa3L/V/L2at96p7ty6pBE7id6lFO19nFUc15u2PcjC4OYeYK465MKy1fhhbpFIGw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.64.0': - resolution: {integrity: sha512-91KM2CeRWscIEHlj1NsW2WSnzGeq1Ehq+39bfDowTdkn+fcvK/x4Y1RcyqT7glyBjZio0ldkeCG6Usj3v7ASog==} + '@oxc-parser/binding-linux-x64-gnu@0.148.0': + resolution: {integrity: sha512-2qhDSJwKzbSZzF7lDqqk8sr/yXsmwr3PeUa4/nazIF+zFAYz1gVPEfC34GQtGxzJUUmklaYAL63368LEfrMeyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.64.0': - resolution: {integrity: sha512-gw7uEk9I+7zoT1EYLra1eWArIzNcz8e3jkv+Noo2+o2T7wPvsNSQbfoa4DSfZlvn1i6mJ05RiZ4/omaXPDNhQg==} + '@oxc-parser/binding-linux-x64-gnu@0.152.0': + resolution: {integrity: sha512-ltgrSF6L+yPTVsIdaAyqKq3zTqzj/1VlNbxWZuxAe8flR3sWdyNsKvdXukoO8/ucJbLickhmieRBge+o/e8Ugw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-musl@0.148.0': + resolution: {integrity: sha512-qQoPDZUFV0bh9xA09XydmkjMBpgc1ukJuhMvzQ9QeVmFaHTS9W5TE5CoLmSl3QQyUP9OuHO3x/WPZTIIZPWR3Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.64.0': - resolution: {integrity: sha512-HYHFf616FHSPSO07c09mjmXBfQ73wIVM3m0txOiooa5XZkGoxFd6B14PVj0LB0DXIqJ6wAO/dDR/NX/5UUaqnw==} + '@oxc-parser/binding-linux-x64-musl@0.152.0': + resolution: {integrity: sha512-LcMp6BvrBnewSfdkLHoSqidhoAq4syKOTBV5TYHWd+2VnGkfD/nPRRVIzTBt/Lkbt7pfOFDGtkiTntFS0p6sQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-openharmony-arm64@0.148.0': + resolution: {integrity: sha512-1UGbaQWEXUCLqAmaR5kwRDjx/R4S5LQKZkM9CHmaHkuKhriOF32aRLfS0jCRNE2yGQJLMEA1z9UucbBVqjXnDw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.64.0': - resolution: {integrity: sha512-uQjFp081IZSWD6VAofX2iO2z01awAdHmfC+NrieWIPKrT2hZKQDyq/U18M7ifC0sm0Wz8aHY/p6+FDYIzs/CrQ==} + '@oxc-parser/binding-openharmony-arm64@0.152.0': + resolution: {integrity: sha512-jbhoMCslVxzRCRNQ8TSHxjYdSKRvk8O6ciLVDkahJvmyHDzBqba/bMQHM6ULKj/rgHNNbSzlIiakdx8SEfkJzA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] - os: [win32] + os: [openharmony] - '@oxfmt/binding-win32-ia32-msvc@0.64.0': - resolution: {integrity: sha512-lNM6byTAQ881jugzFu8juJTbNRgsUTlswMA6pJmwi1XDvmIqnnb49lcUAs5gz94fCJLrVN+/X3s3jOKqx23WIQ==} + '@oxc-parser/binding-win32-arm64-msvc@0.148.0': + resolution: {integrity: sha512-pWKdzRDNG2+NK4h/V6U/CYERcfYD6u28h5IB/VJVsrZaD3muvE58tUj22lieL5vLZ+XFi1GPv9YXckZbJZ9BLA==} engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] + cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.64.0': - resolution: {integrity: sha512-BtmbtL/QjMtF1a6C3CqoDluH2IfB6fJt62E+B9RFfUPtFk4Iz9PFS6+y/SzzOvSxc7aUk2Kphwg7Dh8lMbwu6g==} + '@oxc-parser/binding-win32-arm64-msvc@0.152.0': + resolution: {integrity: sha512-JZYVlhv36mr/nertnRB7vchJECOBb1Lz6lltalILsB+o9M/is+H6BEDRLQKdqA4JKs6NjJszo46+iM5sfwj6jQ==} engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] + cpu: [arm64] os: [win32] - '@payloadcms/graphql@3.88.0': - resolution: {integrity: sha512-ync+bPFl0UacwBs1wVQkPlaSWWQJc4LjGG9OuRHEW7wYW3aeVQ+H2zfdFL6/cVJGP3zOq+XIlvYYw8G86Ki+Vw==} - hasBin: true - peerDependencies: - graphql: ^16.8.1 - payload: 3.88.0 - - '@payloadcms/next@3.88.0': - resolution: {integrity: sha512-3f2YOGSmtTp85YnlJm9FusRgshKJbiLI8uXs8iQNMwU7RZJnLCURG8iv/6sjKHO0owIfw3vIL5qgxdtIBuQwpA==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - graphql: ^16.8.1 - next: '>=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.6 <17.0.0' - payload: 3.88.0 - - '@payloadcms/richtext-lexical@3.88.0': - resolution: {integrity: sha512-lY8oIUiggykWKB3ljMfSidxBtA8ahMq0Qqp28OuvaCNIDp0HTMIPxcHvFOQZngMqtQHhpautD6vcQR0Q9CEHHQ==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - '@faceless-ui/modal': 3.0.0 - '@faceless-ui/scroll-info': 2.0.0 - '@payloadcms/next': 3.88.0 - payload: 3.88.0 - react: ^19.0.1 || ^19.1.2 || ^19.2.1 - react-dom: ^19.0.1 || ^19.1.2 || ^19.2.1 - - '@payloadcms/translations@3.88.0': - resolution: {integrity: sha512-AZVQjjW5pKxO+K9ODeh6yw6/EfXK1hxGPw55KzzDC5srO3hjNskgyWtkauKvbz+S0+xFspANbRc4OD/Rg/74WA==} - - '@payloadcms/ui@3.88.0': - resolution: {integrity: sha512-iwQhHPDn4Oj2bPg1UV467BoxfUNo1rUmD8jMZaw2Vtt/nmxAPl3W3CWN/CsOX/yITuPuGHJxznOg4PZNMF3gEg==} - engines: {node: ^18.20.2 || >=20.9.0} - peerDependencies: - next: '>=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.6 <17.0.0' - payload: 3.88.0 - react: ^19.0.1 || ^19.1.2 || ^19.2.1 - react-dom: ^19.0.1 || ^19.1.2 || ^19.2.1 - - '@pinojs/redact@0.4.0': - resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} - - '@playwright/test@1.62.1': - resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==} - engines: {node: '>=20'} - hasBin: true - - '@pnpm/deps.graph-sequencer@1100.0.1': - resolution: {integrity: sha512-pOr5+q1fLYKwFN3LAJuGZEnfXDcQ73zqgDHMtGy+K+uIoUqyY+6MeDCWFwfu+4EFuq76I5EPFofoNAI+Bmmq4A==} - engines: {node: '>=22.13'} + '@oxc-parser/binding-win32-ia32-msvc@0.148.0': + resolution: {integrity: sha512-i3p4x+mvwtjcE1J5HM6V7ggsbXiznExN/4MkNyOy3dfXrVV3bnkSfmZxvo6/84qCVX4ShkpNE1SKt9biIF31GQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@oxc-parser/binding-win32-ia32-msvc@0.152.0': + resolution: {integrity: sha512-1X9oganvVsunRH0lH10UU05N+H9atpX6WsOybByUjwnfcd3h/0tYwvuv16XuHglrIUOnxV2TodbLVEwwafd64g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] - '@poppinss/colors@4.1.6': - resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} + '@oxc-parser/binding-win32-x64-msvc@0.148.0': + resolution: {integrity: sha512-Ye6vB7VQulghWYkYkECOBYFRVEizz4XyRTUAv+t8BuyurhKU7uD0P9eowL+mKG5Mf8MSYx+DI3Cm8SKZvYG7bQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@poppinss/dumper@0.6.5': - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} + '@oxc-parser/binding-win32-x64-msvc@0.152.0': + resolution: {integrity: sha512-sw0M80/dn9rcpu+Rqqph/C+MjvDDce6MlXmFjsNQtPEymha0eJy3ml6+foSUTqFfpDIDyHZZ4eoJ43IoMe8bJw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@poppinss/exception@1.2.3': - resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + '@oxc-project/types@0.148.0': + resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==} - '@poppinss/macroable@1.1.2': - resolution: {integrity: sha512-FAVBRzzWhYP5mA3lCwLH1A0fKBqq5anyjGet90Z81aRK5c/+LTGUE1zJhZrErjaenBSOOI9BVUs3WVmotneFQA==} + '@oxc-project/types@0.152.0': + resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} - '@preact/signals-core@1.14.4': - resolution: {integrity: sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA==} + '@oxc-project/types@0.154.0': + resolution: {integrity: sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==} - '@rolldown/binding-android-arm-eabi@1.2.5': - resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==} + '@oxfmt/binding-android-arm-eabi@0.74.0': + resolution: {integrity: sha512-xxQwrf5EPI5zxvuCTW8r6tzCTjPQ+h6+HqJ0iRKRy2zS1yBllt/xLVjoIyUc+FnR7g0a5g1SZv2yyDYhTItLbA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.5': - resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==} + '@oxfmt/binding-android-arm64@0.74.0': + resolution: {integrity: sha512-FJW3sATVvrWbV64al8xofCPZj4500Z/1W0ad7Tg1rcCUyh0EMbuSrsf3jsZS7CEbwQ5fQ0mRhmkc129GFgofSQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.5': - resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==} + '@oxfmt/binding-darwin-arm64@0.74.0': + resolution: {integrity: sha512-TfmNKBD30dGyMu9GCLiaw2rt/z7fms9LS+5cKcNOyWst0QgAs8oZs6wPxMbVaaDVE0/PCdCosgWM1vbu6f5NUg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.5': - resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==} + '@oxfmt/binding-darwin-x64@0.74.0': + resolution: {integrity: sha512-5Usf8+DfC4Q3o/MD8FkN47GrI6y0KbhQ4KhZ2HGzMZcXjcW1AeldwbUn51aKih+1TVuJFF9qkNm6X1nzm6NYng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.5': - resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==} + '@oxfmt/binding-freebsd-x64@0.74.0': + resolution: {integrity: sha512-eL+1O3gykw1XihbZh2MRAciQvU2988LByrnjhyo/dmNG74X4oZ7XzigRoWPRFLfJCp8hzRkp/LbEhwe7uuT2eA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': - resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==} + '@oxfmt/binding-linux-arm-gnueabihf@0.74.0': + resolution: {integrity: sha512-Xt0QtO2hJ4stnul8IL4LJGVLyp0xnc6ccN9fZ30yuubv8FWSRYxWwd1Za62KsEqAfmPSazoS/cLSUUJpja6npA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.5': - resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==} + '@oxfmt/binding-linux-arm-musleabihf@0.74.0': + resolution: {integrity: sha512-/4wYQ0gZl4vUR0QoBTGaay73FmQ1GAjUa9z9101TR2xbGNrg4a+grazlR0yzEOe3/E+PJr5BGfj66MMzm/54vg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.74.0': + resolution: {integrity: sha512-846bKzF+HJd+JkOFh3rxzmYvSq4Cm+GMT+p+mW7S13ZYo6GAAGv8bL8cAOi/XcdeMqxEJDCIMTVQLVBXHMCdig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.5': - resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==} + '@oxfmt/binding-linux-arm64-musl@0.74.0': + resolution: {integrity: sha512-nI5FJwZ4Flo6CBdscpwxymZXxO3m3IErQJX55ZS6h+ObfGXu8FostL85L/RWPFaCLnIVE4/WfLw+2q8XvVEeUA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.5': - resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==} + '@oxfmt/binding-linux-ppc64-gnu@0.74.0': + resolution: {integrity: sha512-BoQYKuqUdsKAFAkK6DLBvkdv4+t0hppSm79sB0wIcE2o/eOwNj+6Z3OlKY4q3Eta/tlssP65FaS9vHn8TeF7vQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.5': - resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.74.0': + resolution: {integrity: sha512-FSroRrM12+jCdSQklF9aOxsKpI6wFs4ZCo/1cSYG80RWZS6z4LV+l9tXRMT8lDGu+yohIZBwi9M76FzGPFDE2A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.74.0': + resolution: {integrity: sha512-0VLQD0dhGBLY9Ik/w+otMvD81D0YXi4VDwql65macV+O9UzmSWmUr6CKf+dMtysDeC0PnG3y6kBkRO08BJx52g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.74.0': + resolution: {integrity: sha512-6X7BbZNz34+OHM6Oqjf6TRcUyRn6aRcB4VtIDZAF/uQRyeVhg+G2hv6MlMvmnRekVSyTJ/8rG/u8W2dRFW6glg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.5': - resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==} + '@oxfmt/binding-linux-x64-gnu@0.74.0': + resolution: {integrity: sha512-4kYIQK53yJXrxwxSzx8H2bojlf6/KezLGYLRXzV9QCCkoiCsvBTCid9Bg83dUPTLPa3g9K0730f6MKDbck1+OA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.5': - resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==} + '@oxfmt/binding-linux-x64-musl@0.74.0': + resolution: {integrity: sha512-MfWz4wDREjp/JQDmuxtKieix4FHGa1z5rBvB3betdcPwZvf5fqeQrlCm1mmoyuUVQOh9Pt3M61HwN94kJCxw7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.5': - resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==} + '@oxfmt/binding-openharmony-arm64@0.74.0': + resolution: {integrity: sha512-6rmAApkq5s1kbDjvNI6Nl5A+JqQkLORb2sR941pf5HWsrd01WGKyagK/B4vX9+kh1FfvRkNgEu59FHvVk4H8cQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.5': - resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==} + '@oxfmt/binding-win32-arm64-msvc@0.74.0': + resolution: {integrity: sha512-+5SpRUnZNGeXTyumHnpHa791tQtt04qZs076WT8eTcGF2OJ631VLnf7S0kQSPuDG+PtJM0phadEB2WAr5n1w9g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.5': - resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==} + '@oxfmt/binding-win32-ia32-msvc@0.74.0': + resolution: {integrity: sha512-1Fg+wYBO3Dsti1QX+/6EYHjeQzLC84tLOAqPu/r7ah3UJlUs9C/DB703Ay9Vcg+8VMzqZA2P5VGhzJraVUD4OQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.74.0': + resolution: {integrity: sha512-y9jXUgPBm2TZIWbQhMYRRYAQM57+r4fbykgc+j24ICIIZl+pcuoNhnq1CRGm3oFiHnEUnZO00qOtSPGQdJ2ziQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.1': - resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@playwright/test@1.64.1': + resolution: {integrity: sha512-IaYGml/nSOiZWROfPtuIL7neuu9qDOZ3TNvNljUIrhDMxiGTgPjzj/g9p9RxpS2tSepPDRY+UwAaEeiKtUvIAg==} + engines: {node: '>=20'} + hasBin: true - '@rollup/plugin-commonjs@29.0.3': - resolution: {integrity: sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@pnpm/deps.graph-sequencer@1100.0.1': + resolution: {integrity: sha512-pOr5+q1fLYKwFN3LAJuGZEnfXDcQ73zqgDHMtGy+K+uIoUqyY+6MeDCWFwfu+4EFuq76I5EPFofoNAI+Bmmq4A==} + engines: {node: '>=22.13'} - '@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 + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@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 + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - '@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 + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - '@rollup/pluginutils@5.4.0': - resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + + '@poppinss/macroable@1.1.2': + resolution: {integrity: sha512-FAVBRzzWhYP5mA3lCwLH1A0fKBqq5anyjGet90Z81aRK5c/+LTGUE1zJhZrErjaenBSOOI9BVUs3WVmotneFQA==} - '@rollup/rollup-android-arm-eabi@4.62.4': - resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} + '@poppinss/types@1.2.1': + resolution: {integrity: sha512-qUYnzl0m9HJTWsXtr8Xo7CwDx6wcjrvo14bOVbIMIlKJCzKrm3LX55dRTDr1/x4PpSvKVgmxvC6Ly2YiqXKOvQ==} + + '@preact/signals-core@1.14.4': + resolution: {integrity: sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA==} + + '@rolldown/binding-android-arm-eabi@1.2.14': + resolution: {integrity: sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.62.4': - resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==} + '@rolldown/binding-android-arm64@1.2.14': + resolution: {integrity: sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.62.4': - resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==} + '@rolldown/binding-darwin-arm64@1.2.14': + resolution: {integrity: sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.62.4': - resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==} + '@rolldown/binding-darwin-x64@1.2.14': + resolution: {integrity: sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.62.4': - resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.62.4': - resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==} + '@rolldown/binding-freebsd-x64@1.2.14': + resolution: {integrity: sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.62.4': - resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.62.4': - resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + resolution: {integrity: sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.62.4': - resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} + '@rolldown/binding-linux-arm64-gnu@1.2.14': + resolution: {integrity: sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.62.4': - resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} + '@rolldown/binding-linux-arm64-musl@1.2.14': + resolution: {integrity: sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.62.4': - resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.62.4': - resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.62.4': - resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.62.4': - resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} + '@rolldown/binding-linux-ppc64-gnu@1.2.14': + resolution: {integrity: sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.62.4': - resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} - cpu: [riscv64] - os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.62.4': - resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.62.4': - resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} + '@rolldown/binding-linux-s390x-gnu@1.2.14': + resolution: {integrity: sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.62.4': - resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} + '@rolldown/binding-linux-x64-gnu@1.2.14': + resolution: {integrity: sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.62.4': - resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} + '@rolldown/binding-linux-x64-musl@1.2.14': + resolution: {integrity: sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.62.4': - resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.62.4': - resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==} + '@rolldown/binding-openharmony-arm64@1.2.14': + resolution: {integrity: sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.62.4': - resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==} + '@rolldown/binding-win32-arm64-msvc@1.2.14': + resolution: {integrity: sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.62.4': - resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.62.4': - resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==} + '@rolldown/binding-win32-x64-msvc@1.2.14': + resolution: {integrity: sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.62.4': - resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==} - cpu: [x64] - os: [win32] + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@scalar/helpers@0.10.0': - resolution: {integrity: sha512-IAfnpIZnXY6ni+zyFMwWHBa5b/7yr4mCSvoTGR84oS9q4Quy2wjgafnr7CyfL65ney3iilBZHigZYLYqdqCu3Q==} + '@scalar/helpers@0.16.3': + resolution: {integrity: sha512-He0CySU4Iv4DwyVF40EoVpvPneRQ1zqC/g1eBfR2i2G9RE/BEq/F5AiUrjIkbtTPjSbIiIL1AXMkXvBvgHVdsA==} engines: {node: '>=22'} - '@scalar/json-magic@0.12.20': - resolution: {integrity: sha512-5JawJ1L3+ddDoKefkXsklKs6CmmTIcPDmkJPpAkbRi9QQiU9MUONQ4VSi2z3ij+8Ka4neNhsXBNG4itPjurBLg==} + '@scalar/helpers@0.16.4': + resolution: {integrity: sha512-9eILWzUcAkHEuYMMvijpSIy69t+Vkq+NudLB/7lgARFTWqXfQpIxW1L3VH7ogKyRie5+E4CNZ3PSvlw6IIfLGw==} engines: {node: '>=22'} - '@scalar/json-magic@0.13.0': - resolution: {integrity: sha512-K25TprVh4fusvKJlh4qnqh+cb4rpixv2xPTC2bqanhO9DXHQIesq7pnE0XONsfQJn3y9VjDefICIXHEXFqY3Pw==} + '@scalar/json-magic@0.15.7': + resolution: {integrity: sha512-Vnu9wFHzuqpsx1DR6ePTsXgcBFnpRTEBH8HZAS1Nj7h7HfOsxaJtV5ig7pdLlLTK9bcJI+aZLndDZud5gysKFA==} engines: {node: '>=22'} - '@scalar/openapi-parser@0.28.14': - resolution: {integrity: sha512-OECzu3Iu8fpkgFrtSmKJFwt9U6JWu9oYL0c9xWAzdAa+XQlmODiG6yw57AyOzetw6MKQUcgTEdxORuO37mWv6g==} + '@scalar/json-magic@0.16.1': + resolution: {integrity: sha512-yWQJUrkufUsShizF+rGKO4BoZ/ijMpnrgwRjtCA2cYqjxkQOYaQCd+WVF+b3ihmXE7amr768pLItFCx5UV/ObQ==} engines: {node: '>=22'} - '@scalar/openapi-types@0.9.4': - resolution: {integrity: sha512-eUSIjZEBLEF2i2pvcNdzXhzlKx6qt+hZsNklLmCyzPBoXWxHcQaEClgMFavXDRRvJDdi6LkyjqGUqqf0XgRgFg==} + '@scalar/json-schema-validator@0.1.13': + resolution: {integrity: sha512-aXItOpXaa3h7qLFd7xRwJnERcC7d4Fn07o3XM3ZqZBWBmj6QFy7arQAwWbTt0gGj8/Wd4VTbAVFWT+PcPVfdgg==} engines: {node: '>=22'} - '@scalar/openapi-upgrader@0.2.13': - resolution: {integrity: sha512-bPTkDsthDXj/3bgO7RDmRra1OfwxG/uQio6LP0h9Z8NCCgoZQ4E+V7S6bwF/9TWxbMRlb9djRNpbXCTh/L3C5g==} + '@scalar/openapi-parser@0.29.15': + resolution: {integrity: sha512-B7eGrTv/P0WWw9QTzAUHddB0ftHtRpnDaSMbMiMFK2UP9GUVmPQZeBkAvTGhaHy2IVwtR5PLvAg+Xeke9mFnUA==} engines: {node: '>=22'} - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - - '@selemondev/svgl-svelte@2.17.0': - resolution: {integrity: sha512-0f4CXwZ2oIazs8hufSxP5Sp5HUhlPqFKNKx4AlqCulq4M5ZYDKJTwAjzcGktyFXFVSTzVMbsmqf5Po83y70CBA==} - peerDependencies: - svelte: ^5.0.0 - - '@sentry/browser-utils@10.70.0': - resolution: {integrity: sha512-IvjhafF5NFXrPCg5EHbAPGDwIhHxgUcLlHTklZ3DAdA6ky88BJYMfevbcnOEmgavf4nylhCaquRUFNB5+szj+A==} - engines: {node: '>=18'} - - '@sentry/browser@10.70.0': - resolution: {integrity: sha512-IK6+J+8H06tZe+A8L37TT5ZxxwNtyQatW8zl5RYYJ/e9CsjrM8fPi8I1OT7uquTw8UtjqFHt7bEef/Vy63ksPg==} - engines: {node: '>=18'} - - '@sentry/bundler-plugins@10.70.0': - resolution: {integrity: sha512-M+a32VOZVeTUxF+QecQ+OHYj8hb5FeppKwwWpTQ9cfS6ixgoNUK7/B7NhB2XbfxE3F1BcGvOxyS+AB+fvPfSRQ==} - engines: {node: '>= 18'} - peerDependencies: - rollup: '>=3.2.0' - webpack: '>=5.0.0' - peerDependenciesMeta: - rollup: - optional: true - webpack: - optional: true - - '@sentry/cli-darwin@2.58.6': - resolution: {integrity: sha512-udAVvcyfNa0R+95GvPz/+43/N3TC0TYKdkQ7D7jhPSzbcMc7l2fxRNN5yB3UpCA5fWFnW4toeaqwDBhb/Wh3LA==} - engines: {node: '>=10'} - os: [darwin] - - '@sentry/cli-linux-arm64@2.58.6': - resolution: {integrity: sha512-q8mEcNNmeXMy5i+jWT30TVpH7LcP4HD21CD5XRSPAd/a912HF6EpK0ybf/1USO14WOhoXbAGi9txwaWabSe33g==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux, freebsd, android] - - '@sentry/cli-linux-arm@2.58.6': - resolution: {integrity: sha512-pD0LAt5PcUzAinBwvDqc66x9+2CabHEv486yP0gRjWO7SakbaxmfVq/EXd8VLq/Tzi39LAu422UYK1lpW3MILw==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux, freebsd, android] - - '@sentry/cli-linux-i686@2.58.6': - resolution: {integrity: sha512-q8vNJi1eOV/4vxAFWBsEwLHoSYapaZHIf4j76KJGJXFKTkEbsjCOOsKbwUIBTQQhRgV4DFWh3ryfsPS/que4Kg==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [linux, freebsd, android] - - '@sentry/cli-linux-x64@2.58.6': - resolution: {integrity: sha512-DZu956Mhi3ZRjTBe1WdbGV46ldVbA8d2rgp/fh51GsI25zjBHah4wZnPTSzpc+YqxU6pJpg579B/r3jrIK530Q==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux, freebsd, android] - - '@sentry/cli-win32-arm64@2.58.6': - resolution: {integrity: sha512-nj0Ff/kmAB73EPDhR8B4O9r+NUHK5GkPCkGWC+kXVemqAJWL5jcJ5KdxG0l/S0z6RoEoltID8/43/B+TaMlT7A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@sentry/cli-win32-i686@2.58.6': - resolution: {integrity: sha512-WNZiDzPbgsEMQWq4avsQ391v/xWKJDIWWWo9GYl+N/w5qcYKkoDW7wQG7T9FasI6ENn68phChTOAPXXxbfAdOg==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [win32] - - '@sentry/cli-win32-x64@2.58.6': - resolution: {integrity: sha512-R35WJ17oF4D2eqI1DR2sQQqr0fjRTt5xoP16WrTu91XM2lndRMFsnjh+/GttbxapLCBNlrjzia99MJ0PZHZpgA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@sentry/cli@2.58.6': - resolution: {integrity: sha512-baBcNPLLfUi9WuL+Tpri9BFaAdvugZIKelC5X0tt0Zdy+K0K+PCVSrnNmwMWU/HyaF/SEv6b6UHnXIdqanBlcg==} - engines: {node: '>= 10'} - hasBin: true - - '@sentry/cloudflare@10.70.0': - resolution: {integrity: sha512-jlr9txw3lQrbc6KQn9FzlpgC1KcB36u7aIGSlUhXAZ2MB93DgwjuTnHF20qQHxmHbZylg7CtHoMq3rGiTXAgpg==} - engines: {node: '>=18'} - peerDependencies: - '@cloudflare/workers-types': ^4.x || ^5.x - wrangler: ^4.x - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - wrangler: - optional: true - - '@sentry/conventions@0.16.0': - resolution: {integrity: sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==} - engines: {node: '>=14'} - - '@sentry/core@10.70.0': - resolution: {integrity: sha512-ozhCTDqg89oB4XmWfAwuHshABpvT7AkRpaPnogopPfMAaI61G1t8EKCJ4W7aum8JSBonlfyjPCyW5oYZFm0KvA==} - engines: {node: '>=18'} - - '@sentry/feedback@10.70.0': - resolution: {integrity: sha512-6VQn2ETJjHkk4QQDdx/587/JDfXsk3yBTLZ3UZOMtBVrkmwgk+1FJZ8ULJ3ud1xZcuh2icunIkc7tGVv2axdnw==} - engines: {node: '>=18'} - - '@sentry/node-core@10.70.0': - resolution: {integrity: sha512-oPOEVVNxv5WHtckx2i06Wi9FLWyvOg/1DUeX732jZ4iqT2nupINaMH4nF4f4kSvUThFnxkFSRQxwqOxgzMKhKA==} - engines: {node: '>=18'} - peerDependencies: - '@opentelemetry/api': ^1.9.0 - '@opentelemetry/core': ^1.30.1 || ^2.1.0 - '@opentelemetry/exporter-trace-otlp-http': '>=0.57.0 <1' - '@opentelemetry/instrumentation': '>=0.57.1 <1' - '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@opentelemetry/core': - optional: true - '@opentelemetry/exporter-trace-otlp-http': - optional: true - '@opentelemetry/instrumentation': - optional: true - '@opentelemetry/sdk-trace-base': - optional: true + '@scalar/openapi-types@0.9.7': + resolution: {integrity: sha512-UVSgxRxcTaIbTZGtNRdQJHZC60uyYi29zfDqQVp0lxx07BNczIHbf9jycgI/+W3Uxxod+yUUt7hzxnKllOHE0w==} + engines: {node: '>=22'} - '@sentry/node@10.70.0': - resolution: {integrity: sha512-SPOOVxmKTVIEtqvOKkQT163e/pOwucjS7OPsCHyRs8sFR4nfBNu0EThplyqnvqd5BWBMTPH6WTBQfo+QWHV+HA==} - engines: {node: '>=18'} + '@scalar/openapi-types@0.9.8': + resolution: {integrity: sha512-pGcpkZObsGBC7nRKYte+6gstoe0C4hp7B2UWQYjg5To1wE68s3OHVvin+muL3tn3ZAoahXeJAkn1+aEcMi802w==} + engines: {node: '>=22'} - '@sentry/opentelemetry@10.70.0': - resolution: {integrity: sha512-UNV/2tqypcUK6FDzerAsFJn1Km/c4VZCYkUZDNbnV5S0cwAq2BYKMo4M5vovaLDBQlxA+Wk9ovbxi5wYjjl9fw==} - engines: {node: '>=18'} - peerDependencies: - '@opentelemetry/api': ^1.9.0 - '@opentelemetry/core': ^1.30.1 || ^2.1.0 - '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 + '@scalar/openapi-upgrader@0.4.5': + resolution: {integrity: sha512-PdsTyeO8CepVP7I8JvwoojtzyZ+R1MrVgu1C8npvVvy5JRixp5E34Z4J1sKojJs+YRe42/MK2XHXVM/X1qgGPA==} + engines: {node: '>=22'} - '@sentry/replay-canvas@10.70.0': - resolution: {integrity: sha512-irzpw22bK5CF3jbecDa0gBUcfjv7tgeUoLAvtIfeHOP5ajmf3o4Cp99a9RQqkfgvkcMeRZBUwE91SQhp6Ank+w==} - engines: {node: '>=18'} + '@scalar/openapi-validator@0.1.13': + resolution: {integrity: sha512-o40Dka4QOdtdz0KKrmOjp+r50KkMbH36i3fb+6qQPCpIMkfAHoJiQlOa3Z2DFpkfTSpc3p5UdPbWKwjZxpvUVg==} + engines: {node: '>=22'} - '@sentry/replay@10.70.0': - resolution: {integrity: sha512-xMnSGzJn9Xd29rYd32lkx/gFW+5mtgqADJ2FiZvis0MBGZuDlNRwPn0/Cs1xA3JNXKV3NGfhdmmvs90w4dHSmw==} - engines: {node: '>=18'} + '@scalar/types@0.24.0': + resolution: {integrity: sha512-x4O8ddCvh+59zwh9Xc+bG2QACxYARcPDfJBYiUzD/hzSxb6vpcms+WKgMksBfYWCZneO6e5Kt6hZFBoE9D9YCg==} + engines: {node: '>=22'} - '@sentry/server-utils@10.70.0': - resolution: {integrity: sha512-rzegZjMFFgCp3o+N8+XU13rfSvz4B+f8rU0ijBGrQcHdMNyfsFDTu1UTm262JofmrV2u+s+D0u0vFTnqtOGkbA==} - engines: {node: '>=18'} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@sentry/svelte@10.70.0': - resolution: {integrity: sha512-AX7Xm15oHD3oVgw1Rx0zohYy5XEsrbjFdDIvkqPs3p3lEeLTMOyXO9PEBKw+c4yhfJADS8QDU1Y1wuZAonGSkw==} - engines: {node: '>=18'} + '@selemondev/svgl-svelte@2.17.0': + resolution: {integrity: sha512-0f4CXwZ2oIazs8hufSxP5Sp5HUhlPqFKNKx4AlqCulq4M5ZYDKJTwAjzcGktyFXFVSTzVMbsmqf5Po83y70CBA==} peerDependencies: - svelte: 3.x || 4.x || 5.x + svelte: ^5.0.0 - '@sentry/sveltekit@10.70.0': - resolution: {integrity: sha512-UF9a/UniSOoBzmUby0bfvzoBjP496M1m6n5vvdXB+HKcQv/NtOxaPl1dV8OsFYkpJzREQ+uEX5493rHIxK9tUw==} - engines: {node: '>=18'} + '@shadcn/lint@0.2.3': + resolution: {integrity: sha512-N/eAXidyPYXpbUOzPCf6uX5UN/hhObMZbrURrHe71CLNvPio78agqBt4EW/V89KQyS1NTxXcqMsNfiLxsBh8sA==} + engines: {node: '>=20.19'} peerDependencies: - '@sveltejs/kit': 2.x || ^3.0.0-0 - vite: '*' + '@typescript-eslint/parser': '>=8.40.0' + eslint: '>=9.30.0' peerDependenciesMeta: - vite: + '@typescript-eslint/parser': + optional: true + eslint: optional: true - - '@sentry/vite-plugin@5.4.0': - resolution: {integrity: sha512-fFJgCxs5hDyAm9BbZJ+LbA+LK2tjX5OoD0v0ARU4StR6KQmGUduoPs69yJ9AfqZ0om3Rlp5JDliiwFcNkasORA==} - engines: {node: '>= 18'} - - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2954,27 +2709,27 @@ packages: peerDependencies: acorn: ^8.9.0 - '@sveltejs/adapter-cloudflare@7.2.9': - resolution: {integrity: sha512-LEfLRYKZIiNYBPYk9Cu4dFCCIX37NO96jESNRDv7yr3vvblKU4Yh05FPUMRSrOWFKtG6bJcGIvdG/M2DSf4D1w==} + '@sveltejs/adapter-cloudflare@8.0.1': + resolution: {integrity: sha512-KISMvrFOLpn7sm7wQr26XhkVIBYQLq1wYcFZvNgHqWxyN/kVZb/ldu7+jJtWi+Ai0mNw+OPRecHadzEB5TGQ6A==} peerDependencies: - '@sveltejs/kit': ^2.0.0 - wrangler: ^4.0.0 + '@sveltejs/kit': ^3.0.0-next.0 + wrangler: ^4.118.0 - '@sveltejs/adapter-node@5.5.7': - resolution: {integrity: sha512-uOfc9eVlI3A37RRSaKcgrheBYPrfJwC9VMqDp8x/O6tlKdcLLvHThSWD0KNIbjQ/d+7bwLGx3vx6aowAcRfd2g==} + '@sveltejs/adapter-node@6.0.0': + resolution: {integrity: sha512-s7muM4JmJ75OZ8o0G4VRhrEKdi8twuEm3t2o/qQsdlm12hKaX7S/CuUBuw3n983wB/IFBSpzG2ugX0xdGzbKwg==} peerDependencies: - '@sveltejs/kit': ^2.4.0 + '@sveltejs/kit': ^3.0.0-next.0 - '@sveltejs/kit@2.70.3': - resolution: {integrity: sha512-UDvEYuZqAMbfB/oXIoqKvbKcb7YczK5zYrzmsGV1zRJk03jntwp8dXiYoIJotxAndsKvcPFtx9H1GRSKFdSHgg==} - engines: {node: '>=18.13'} + '@sveltejs/kit@3.1.0': + resolution: {integrity: sha512-JTWlq2HQlkqx6vIoxhC0R6sc4WVqbQoRyEmr5YlqKmiYbzY1U3awtSWTmjMLlS056a49AmkQR6rnNANXIE8B0Q==} + engines: {node: '>=22.17'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.0.0 - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - typescript: ^5.3.3 || ^6.0.0 - vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0 + '@sveltejs/vite-plugin-svelte': ^7.0.0 + svelte: ^5.57.1 + typescript: ^6.0.0 + vite: ^8.0.12 peerDependenciesMeta: '@opentelemetry/api': optional: true @@ -2985,16 +2740,13 @@ packages: resolution: {integrity: sha512-VT3qmUb8pRV2QrZjd8iAmtg8lf4W0TIjZbvXtz5MKei/q96teWZgGJyyidJzOjzZzvdq616eSRVeMYIQChUTAQ==} engines: {node: '>= 18.0.0'} - '@sveltejs/vite-plugin-svelte@7.3.0': - resolution: {integrity: sha512-QbRoJyD92e9R0ufeQIWRHrCC0ObcqSv/aBDdrQMoU+sypav3cDx5wytdQ6GLdXjEMO6xjrXGzfkUygng8JMv0A==} + '@sveltejs/vite-plugin-svelte@7.3.1': + resolution: {integrity: sha512-ZPsLN8B1e/En+Ak5s4V7srFDT532oS0qieLsQwu63NGKsS+iAjoO2Js1BochlHlglcU+Pt7WAO3C5Ee+4f6gVA==} engines: {node: ^20.19 || ^22.12 || >=24} peerDependencies: svelte: ^5.46.4 vite: ^8.0.0-beta.7 || ^8.0.0 - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.23': resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} @@ -3092,60 +2844,60 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@takumi-rs/core-darwin-arm64@2.10.0': - resolution: {integrity: sha512-6FipAj/BzRZeJbuDdeOavI93r83jw3jZTYgW/LAtn8syYjxB2Ayxx2hY4HJKdZK2KDVHvkr7ZENEbWqGtSAdqw==} + '@takumi-rs/core-darwin-arm64@2.17.1': + resolution: {integrity: sha512-fobI/Js9Dw7w2w8ZoDytcH0yLs1/s33U0O1R99jETquG7eJWMZ7IZbIO+nVwGGhEv/rQNokNlXp8HZ60rXdN5A==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@takumi-rs/core-darwin-x64@2.10.0': - resolution: {integrity: sha512-2FbQZr3l7N66/PHBaVZBj8HEVVVAGvVzJaVtBCenUQDRnsaE0F7VkFovllYpuVHwpnIuYH3qTXZL90mB/Weoeg==} + '@takumi-rs/core-darwin-x64@2.17.1': + resolution: {integrity: sha512-BuS1VJu3S56kr9S6PTH9wx9qOzbkewMAceos33J/LWhi24H/EHBgSHyig6e4QpG6roE3X/FHXe3uImbllW9vGQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@takumi-rs/core-linux-arm64-gnu@2.10.0': - resolution: {integrity: sha512-n1L/ZBfJ0ctCjwhBdL+5RMIRZOUQiKplmxUT774ofgVDsxIuXz84NF/mqcPWMfIPU5qtCEcHysUUbXZirEYK+A==} + '@takumi-rs/core-linux-arm64-gnu@2.17.1': + resolution: {integrity: sha512-KusvsXZzb12YAiwn3NbWeu8okWPGiMDeAhyopqusVeXyNe/o2fd67xW74WmlRMCzNPCFo2J3MtUuJttWFtbZjg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] libc: [glibc] - '@takumi-rs/core-linux-arm64-musl@2.10.0': - resolution: {integrity: sha512-Mju5+Rj4xv/M+CFtWzvmkcziPFl5QTYAXpb0Y7mRn7vQfRCv06gh628a8XVrkCu45RsyTR535GRUM0oV9n3WGQ==} + '@takumi-rs/core-linux-arm64-musl@2.17.1': + resolution: {integrity: sha512-uY6hM72Z4Tsosmt3VU7dHxh2aqgt69rsvX2/GYVK3rdKt8no9KLfHp8lOrreRBkFNnesflUkNdJkaajF0LaW7Q==} engines: {node: '>=18'} cpu: [arm64] os: [linux] libc: [musl] - '@takumi-rs/core-linux-x64-gnu@2.10.0': - resolution: {integrity: sha512-fqzgmp60yefxVfqzRw0n6VOeE6jHEI7zHgPUMzxs7bF8SfrX+8uagvzBog5aHrSB5AefhsVboWgqlx9Wx+S0Yw==} + '@takumi-rs/core-linux-x64-gnu@2.17.1': + resolution: {integrity: sha512-vsxadMY6ZGVEOY7rqn1MiopIrVzbZ0ABIJ7D2BeTOhWG7LBbBwzuQK2lBmjwZ2FrzxGQDbBsNendmh7weLZntw==} engines: {node: '>=18'} cpu: [x64] os: [linux] libc: [glibc] - '@takumi-rs/core-linux-x64-musl@2.10.0': - resolution: {integrity: sha512-wx0Poj7dSIEczsyXdeo4XvDHJaCxiJiXwojsVbQQ3LwLRlLN3wRYxW4Ujx090XFXgy/WQ4Rip0/CgATs3h/zQQ==} + '@takumi-rs/core-linux-x64-musl@2.17.1': + resolution: {integrity: sha512-FpQbQksZomNVpY0NpcfwQdWi5w1r6gNlLXvZK2bSdpFopDBD0t/FOCyu7itYoVMvW+vqBS3d3h5F+Bs8ybZ+Ow==} engines: {node: '>=18'} cpu: [x64] os: [linux] libc: [musl] - '@takumi-rs/core-win32-arm64-msvc@2.10.0': - resolution: {integrity: sha512-1n5Dorkx3tq5Z/NVSB+HcopiLaMF60kf8ncVMG/pHaui1JdmWyJb6lDud7PrH3354XwEkVHhdR/9yEVezhGL4Q==} + '@takumi-rs/core-win32-arm64-msvc@2.17.1': + resolution: {integrity: sha512-qttlR9z0ePyKMijXd6m5wrDPHHL8XAFMPJHIIblEFrNJWv/A60R2bW3IfpjWKuJ0AI81ExQM6Uhoz1cvCAwswg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@takumi-rs/core-win32-x64-msvc@2.10.0': - resolution: {integrity: sha512-FnjkXva7vdaZO7TvF/Z8cs1UXjf9XdgCv3CIo4QHPx4NgxaTZqbod+K3xH3FFpZjQhnWLoHvTDRntWiLdUzpag==} + '@takumi-rs/core-win32-x64-msvc@2.17.1': + resolution: {integrity: sha512-lkND2jBAR1qtpsLYUjBLXGJN/CVKQARnsDs8K1UwDOgmSioBCeZyICRorrrEKS6ZrBlfbvwRInTEB758fIAakw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@takumi-rs/core@2.10.0': - resolution: {integrity: sha512-+2/648UWDgl4UrRKORYp9GVl5epWV90uxAxSbPSgB+bY/kqYpYekEKvq/76NOjjb7HldvO2IMmzSu6Y60C1KkQ==} + '@takumi-rs/core@2.17.1': + resolution: {integrity: sha512-QjouXqR+yYxiot4pTngsItdaJAtpzrmU+zOJfqqnkPp4FY+1zWi7L3vEI/nPt90+f7S1U1sSkCAiS4ttlw2cgA==} engines: {node: '>=18'} peerDependencies: csstype: '*' @@ -3153,11 +2905,11 @@ packages: csstype: optional: true - '@takumi-rs/helpers@2.10.0': - resolution: {integrity: sha512-cPQNj/16DASgMaIA07ZrjNQ14Z+7lWiVPZQVz5S1kLAhVlCf9qg2D2vge/+yglHrdaL556U22wDWNUyFId5a+A==} + '@takumi-rs/helpers@2.17.1': + resolution: {integrity: sha512-zFq1APac/ruy6jYYTxLhO1Pb7La9LCXqQYH3KUm/8s2rv6JdrtBbad8pe+Rchb9hoTL5WYUxQkTD58OSPNkXMA==} engines: {node: '>=18'} peerDependencies: - preact: ^10.0.0 + preact: ^10.0.0 || ^11.0.0 react: ^18.0.0 || ^19.0.0 peerDependenciesMeta: preact: @@ -3165,46 +2917,289 @@ packages: react: optional: true - '@takumi-rs/wasm@2.10.0': - resolution: {integrity: sha512-euimMzmiWeSDuWYRTCMx6V3aBMj3zAjIwx47StvDWuQKK3eDBaqKbrE1VCe9MHH4l1Mne1ZQpLUmLQeJwmZ/2w==} - engines: {node: '>=18'} + '@takumi-rs/wasm@2.17.1': + resolution: {integrity: sha512-f9gWUUO4afRBhvSRJVpRaqu4WthGYODtareygjgJJjzp6SCJnHLhFXx7AjuHh+kMjNfQyzCjCqpMeGXzIMJLjg==} + engines: {node: '>=20.19'} peerDependencies: csstype: '*' peerDependenciesMeta: csstype: optional: true + '@tanstack/store@0.11.2': + resolution: {integrity: sha512-sJ4mjol8uQsHV0gOJzzjwXfh2Fwm+Sz0+8deqiTm4jGbMdjzNSW+xZCFm0kUa870uhd8yi+DpKnZb5Kc4apa0Q==} + + '@tanstack/svelte-store@0.12.3': + resolution: {integrity: sha512-mF0Pe+OUmhMYjbX6jm0Ox6Zdhloi28piFekz6BWJn6oDhEY8SzJsjJKTfcT5/4JS0TSi74tDVWlF/NTM+jtfDw==} + peerDependencies: + svelte: ^5.0.0 + + '@tanstack/svelte-table@9.3.1': + resolution: {integrity: sha512-4GenQN3ymVTJvsoRTzK64IlponjX17Db9FL2A+07kjdZBvHqhZiOFspsRqwN4QBmI1+yycnBH5k9w73z8ocUrg==} + engines: {node: '>=20'} + peerDependencies: + svelte: ^5.0.0 + + '@tanstack/table-core@9.3.1': + resolution: {integrity: sha512-zQvlxSNi2qGM3L4jh85Z6hqMfdIR5qOfD9KHOU32nuKFJGN0RlJ7UvV1lsPb1fPVhpFYI0VP3jJGxLdLDpTKjQ==} + engines: {node: '>=20'} + '@testing-library/svelte-core@1.1.3': resolution: {integrity: sha512-KkMAvXeWorxN2Yn0kdC1lfoAItxpoj4uOWzxK5leDrNxonLvS5nwBFvztrroyTszQ0Wf/EU6iLT8JhY5qcn22g==} engines: {node: '>=16'} peerDependencies: svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 - '@tokenizer/inflate@0.4.1': - resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} - engines: {node: '>=18'} + '@tiptap/core@3.32.0': + resolution: {integrity: sha512-Ghh2h02GKSqzytQGcLV4espYOG4EHxjj0MsrUB2Vnr47xmlZYRf6r7k2J09H+JpBdaGrWwrTkyBEi5i3c3yy2Q==} + peerDependencies: + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-blockquote@3.32.0': + resolution: {integrity: sha512-wmuthEdlYVArNoUbqFPH35giutBABFu7fqEB0lTD1k0UXJUs4dFvcbRyGWWgnHFZgP3TT4u8e+xiayYw0eQ0NQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-bold@3.32.0': + resolution: {integrity: sha512-SQYewnYDoIBN+8oH53IDcD8p+Pz+Jnyq3hrxjy/FAo5ctc+96d3ZLdqc9gzLVSqFFo/SUINv2FVGoq9PvU7yqw==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-bubble-menu@3.32.0': + resolution: {integrity: sha512-X3ll8i9Z8QNvt7+tcqlwopJG+68ugO13Av0Ox4Ico+jXcTnFdDuKQJBSI9sLuMR5vTQOeTHhKYXhjF88aahMSA==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-bullet-list@3.32.0': + resolution: {integrity: sha512-Y5P/l06pVCUG46vXpBl3z0fW2b6JpSMX4Cvr+5sfQh8zB3TxwSiLQaaPwI3R5MFD1KfRk3AjiPRieEyXdWcNHw==} + peerDependencies: + '@tiptap/extension-list': 3.32.0 + + '@tiptap/extension-code-block-lowlight@3.32.0': + resolution: {integrity: sha512-+M8dQcvL/H8QxZlGWH5qu9Ae2N+AtP/5wL/uMOSDm7/arqtWsHrbkx4H8x2pFb6zsd51V4b8+Z+wY5egV99W8Q==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/extension-code-block': 3.32.0 + '@tiptap/pm': 3.32.0 + highlight.js: ^11 + lowlight: ^2 || ^3 + + '@tiptap/extension-code-block@3.32.0': + resolution: {integrity: sha512-9NZW/yXP9j9XKr+hRS5m58xiyZI+tQo1PJ7eLHXjGNFWaF601NG/h6741mbKh5uCY51XsbyqG+7que+RavngPA==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-code@3.32.0': + resolution: {integrity: sha512-I+aEVl0dTmkfnU6HzBGEefb9U7ja2MkucwBBwrmoMwU+uIKpC4xw8NcHC9X6sjAcom3Pxs2HX+8WEo4Vp13R/Q==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-collaboration@3.32.0': + resolution: {integrity: sha512-db7VPDksD13zsYVi/Hao2Je5ZMwGRuXxVBDFv182Kr06aixxAWjBJ5JvYf6AgcrDKFx/dPPpDjctKQjJPtw6VA==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + '@tiptap/y-tiptap': ^3.0.7 + yjs: ^13 + + '@tiptap/extension-document@3.32.0': + resolution: {integrity: sha512-GugeKE6AnZDluRXJUNBuX43TPcaJxy5wck6vT2J4a0/EnKStJ43suSZZf1IPfb1ij9EL9bYvAwg9DOcrvdEzTQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-drag-handle@3.32.0': + resolution: {integrity: sha512-yV6rTZlkS6Fjd6gXzd3zXxMvq82Nu7+DqdmyRtuaSKiRepvJPZvLijfS5ZgN6cjj75mrWCM+cgRODYVCDh11mA==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/extension-collaboration': 3.32.0 + '@tiptap/extension-node-range': 3.32.0 + '@tiptap/pm': 3.32.0 + '@tiptap/y-tiptap': ^3.0.7 + + '@tiptap/extension-dropcursor@3.32.0': + resolution: {integrity: sha512-t4Ug8hFLt30dwwYvrh63BVUt6N1Yg5PVI3tMllhCmN3Q68oD47v4MB/i5nGfzIsQqMyXUOetwHJWcZ4MoLTx4Q==} + peerDependencies: + '@tiptap/extensions': 3.32.0 + + '@tiptap/extension-gapcursor@3.32.0': + resolution: {integrity: sha512-HUpKKWJLtthnpQY5LIjHlJJOmh562RusmOMIe/4iP/H7y+WUR9ZFiZjEs1NBkRjig9fwj8F3BfsrVPYBnM4nLA==} + peerDependencies: + '@tiptap/extensions': 3.32.0 + + '@tiptap/extension-hard-break@3.32.0': + resolution: {integrity: sha512-IKUYvK+bO2hGrDWhhTVg0CSh9C2belWg9GyLzvpyd3SZyQ9EgdccLfoytNjOBKbAE/TQ4Oo3kSP+XF6RsUIKPA==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-heading@3.32.0': + resolution: {integrity: sha512-XRiZxZuhfjvbgwCvoBHj04gOsPANEXxxRwrFCQVuFi5yeTHYIzMEioc81j6iAH9pV7aQeJCwLxuh6VHNz3dXEQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-highlight@3.32.0': + resolution: {integrity: sha512-6q75QUC3iT7+TlMLhBSJASlpyO/f+Y22tB68hcdbg5hFW8fl8zv8np/oRzxoeAnis+4FZw9D5WfhOdwu1C+MWw==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-horizontal-rule@3.32.0': + resolution: {integrity: sha512-Iry7ynsG4xgcxnH1cm+uXJnEtUzoop4sGA10NUN9I+08TOjhj/GrDiRKMQHKAiVI/R7t2MVav1MJlxFf2FdzGw==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-image@3.32.0': + resolution: {integrity: sha512-nv/YlOMwFUp2ItffQbHb14yAJjrn9sdxKl0WK5rH8PPiNoXVkvasieoBLNTHan9gjhrSp7LjVG2ZsMoSe/I7gg==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-italic@3.32.0': + resolution: {integrity: sha512-KB/i1xoHilbBGcQ+UotDWhi60KpdCde3RzRIpl2na0Yol4z4Fe2IRWg8ljIrlsssDRwel/fsHJbG7a13EP8oKA==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-link@3.32.0': + resolution: {integrity: sha512-DRdQSgWPSEjrDg5EDBB5yxRygHtUVLhceVGzAsTz8RziiFyvcwAvzBHCO9hd9jutjCXQ2DLIuZB8P+aHhFWnpg==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-list-item@3.32.0': + resolution: {integrity: sha512-FdJTCAeALixzyyGSSEmroXmkIEclbo/4t2Pl03aRERqpPOSPJcC3evDtIhLazTuP6v+FjCmJ+pXNql6ov7qitA==} + peerDependencies: + '@tiptap/extension-list': 3.32.0 + + '@tiptap/extension-list-keymap@3.32.0': + resolution: {integrity: sha512-vXFre18Dk2m5N/gjo408C02GSrolZ8ZIf0wz6/U8lNC4FcYOISgZFj3BND6uabVntGh2GCSPrVFuNpVPhFnn/A==} + peerDependencies: + '@tiptap/extension-list': 3.32.0 + + '@tiptap/extension-list@3.32.0': + resolution: {integrity: sha512-QdzS5nFz9agAQhBgIuQluobWib39W2cMKx1XB6tYSue7bHMJdgPFP0EnGfFajaeVX42CG6RXtQWrNfyQGKhBvg==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-node-range@3.32.0': + resolution: {integrity: sha512-Btwa7aciucAJkOoX8Fig3g6p7zdbg6PPtplRW/idVcWdYqKgEQgTyMV1M91GN6yksxt6bU2YBmC4FgEqTMyGuw==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-ordered-list@3.32.0': + resolution: {integrity: sha512-htZ5hoMLBkGiDP6M5mGemjOoaBmkrj911wiGoTmMMKzO7qJq9QxUBkLY7ILPaKlUWL8U3ccLdDV2TB/nysp4Jg==} + peerDependencies: + '@tiptap/extension-list': 3.32.0 + + '@tiptap/extension-paragraph@3.32.0': + resolution: {integrity: sha512-afKLMc7fWMkkar9H5FilizStSbhFzUoCzdwwdZf6DDsn3LUt8tJlFHACK78cAyx/TzMJBo0N8/8T1u9bL+N67Q==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-strike@3.32.0': + resolution: {integrity: sha512-J9Vw6wmh/wV6SxSsN9RhurvAGcXSY5J3p4EQrROD5PARBl0VOnDFi7/UVoz1RkSdqOKPgAiqDZpaLRgtdBO9Rg==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-subscript@3.32.0': + resolution: {integrity: sha512-f1NeIyTB3AkQTyC9xM8QVFDPsGekwJqHhcMfd5TW/sDv6BV39yT2zAjRjEICAEx298cJt8AnNflxvFs5A3mTfQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-superscript@3.32.0': + resolution: {integrity: sha512-4Xv6yTVEnn9rPa6eZ18q4wqw/pGTkw3aNI5aaCrder8XH5uuO5HfL42CPhRKWWFaer/WPwEL1lkUlskgbx+lLg==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-table-of-contents@3.32.0': + resolution: {integrity: sha512-U9CZwtjfz/CepM9P5OK9BIh+IbEI54iywdMzQT+c9BtO/g15BgbQYFQsB/cyZRUd226IoR6ICFApkc+PqLD4ew==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-table@3.32.0': + resolution: {integrity: sha512-uOqCzWzxXvMccapZo+1CDxp3JGegxqNl11Lj8XiiWLxwmg81B/bKwMJW7+YlIdffgGNYJETk5YwL8T0IVBD2QQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-text-align@3.32.0': + resolution: {integrity: sha512-DdV/V86ds9VtQ1MkbovgI28xwSvOW03I8SexsaKljGqSN/HovBXEjlefSnbK4tlWmQLJPH9eNsxRcpHJMftYCA==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-text-style@3.32.0': + resolution: {integrity: sha512-+U8FkrNAU45+fHgo4DYfndS/WuhhyttZ+zTyObF1W4VJ8wDiAYqXkl71nQcmMJyyK47yeNUY9CfjUomIaEHhpA==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-text@3.32.0': + resolution: {integrity: sha512-sF0jIK67IHdZMnzv2mz5vPTyK7R0ui6/YZgFg+/bLnFCNmweVAoYcHZLlC7ISRnwu0mqJr+epNtzJepY1ZDCjg==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-typography@3.32.0': + resolution: {integrity: sha512-Qad+yXoZuYpfOg3A/1GHwwp1lq4q6+9VhHOG/ESuccRLibUdrorZ4Xi16yddCCZtS8GO+0ABJw5y7Uko5nYagQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extension-underline@3.32.0': + resolution: {integrity: sha512-rMLdd4vg6sed/JnaXnaupLbCtYiWikTnQ8qir9ItKOXwf1Ui9P1Y4G0bYU4+gcnMsFzaSGtrOhMqG4/c66AogQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + + '@tiptap/extensions@3.32.0': + resolution: {integrity: sha512-qO+ndNvlOjzU2MWCtQHoRg1tIortCXLvqPjDx58F1pUYFNCOVZegXi+jqLGDODUA31er+TVz66umzRbbN1bO1Q==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/markdown@3.32.0': + resolution: {integrity: sha512-y+pGAu4QMkXBMxhBoLvc6FWucQ1EWIoPi+Ajf4rAh5OlZtSV3CjBwyK6/xTwO7mvQxtoUf7DD23CzSaj5nCTBA==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + + '@tiptap/pm@3.32.0': + resolution: {integrity: sha512-H9eN+xHFboJybE7KPGVsu24S8aBlCIgYz38vCHRSnNv17nwmqm06owq/IQ5scza0n3Y7IfUfpgPOtm9SgeHmNQ==} - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tiptap/starter-kit@3.32.0': + resolution: {integrity: sha512-aPYxaevci4PgMrTLsg+baiqI7M1ICd4V9H+zTTdrqs8OUZIbAvj/pNDuHU8uWZyKMu3Dh72t2D6ZdqRu/6aSWw==} + + '@tiptap/static-renderer@3.32.0': + resolution: {integrity: sha512-sMSwLNkB2Bz8+zJvRpurhTC/kniCilyCubkJEqmN1o5prJD85YQnnLABYx5pNKdxKDtFjJGvJhYPEtTwyegSnQ==} + peerDependencies: + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + '@tiptap/suggestion@3.32.0': + resolution: {integrity: sha512-5PbouU06zaZ7n4uyYzeNN/jBFVmGsHZ6c56MvN7M33echERAhu1L1X71Up0U6GK/pJfyugX7WbluBehJDPQeSQ==} + peerDependencies: + '@floating-ui/dom': ^1.0.0 + '@tiptap/core': 3.32.0 + '@tiptap/pm': 3.32.0 - '@types/busboy@1.5.4': - resolution: {integrity: sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==} + '@tiptap/y-tiptap@3.0.10': + resolution: {integrity: sha512-vJtwYVoBBk+e8KyUVoH9WSsfUfKTXf1Uh+tk2UNTlD8wim9j7XVTuc7sakWUYuznB7DkXThT9w5uQTGH2SN0Kg==} + 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 '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/culori@4.0.1': resolution: {integrity: sha512-43M51r/22CjhbOXyGT361GZ9vncSVQ39u62x5eJdBQFviI8zWp2X5jzqg7k4M6PVgDQAClpy2bUe2dtwEgEDVQ==} - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -3214,9 +3209,6 @@ packages: '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} @@ -3226,47 +3218,21 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/lodash@4.17.24': - resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node@26.2.0': - resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/pg@8.15.6': - resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} - - '@types/react-transition-group@4.4.12': - resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} - peerDependencies: - '@types/react': '*' - - '@types/react@19.2.16': - resolution: {integrity: sha512-esJiCAnl0kfpNdE69f3So4WJUXy95dLZydX0KwK46riIHDzHM7O9Vtf9xCHW0PXIqvgqNrswl522kA/5yx+F4w==} + '@types/node@26.6.5': + resolution: {integrity: sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==} '@types/relaxed-json@1.0.4': resolution: {integrity: sha512-MulPaZU5Hh81T8ROYhsWlC7tJuuapwUT1/wX1qS8/koMI8Ypf3tyEunFZKzewoLsjutDpuf4kXVhxkF82ZtXzg==} - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/stats.js@0.17.4': resolution: {integrity: sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==} '@types/three@0.156.0': resolution: {integrity: sha512-733bXDSRdlrxqOmQuOmfC1UBRuJ2pREPk8sWnx9MtIJEVDQMx8U0NQO5MVVaOrjzDPyLI+cFPim2X/ss9v0+LQ==} - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/umami-browser@2.18.1': resolution: {integrity: sha512-djccTpTXRVodrhGaz59NSMHA9d1cb+jexVsigb+I1bdHFn+N7TTlBesKujrL8tuSWVRsdSE4WM67mTGv3FCWfQ==} @@ -3285,12 +3251,6 @@ packages: '@types/webxr@0.5.24': resolution: {integrity: sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==} - '@types/whatwg-mimetype@3.0.2': - resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} - - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typeschema/class-validator@0.3.0': resolution: {integrity: sha512-OJSFeZDIQ8EK1HTljKLT5CItM2wsbgczLN8tMEfz3I1Lmhc5TBfkZ0eikFzUC16tI3d1Nag7um6TfCgp2I2Bww==} peerDependencies: @@ -3307,105 +3267,110 @@ packages: '@types/json-schema': optional: true - '@typescript-eslint/eslint-plugin@8.67.0': - resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} + '@typescript-eslint/eslint-plugin@8.72.0': + resolution: {integrity: sha512-aysKgysPX9XOv/dk95UkvUDe++Q3n3dJPG9CEWT3RUccxfkPJ+Qn6nhKPDhZXU6Ofo9kgwGWwKyQCnZIXTgngg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.67.0 + '@typescript-eslint/parser': ^8.72.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.67.0': - resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} + '@typescript-eslint/parser@8.72.0': + resolution: {integrity: sha512-0O+x3ynciD6zuXb1CKSu165haQV6ey53DKhHHUnujP7U+XlltJG+/keT0Xhd1HXCze+IHf7Tvt39ovyepX/LNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.67.0': - resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} + '@typescript-eslint/project-service@8.72.0': + resolution: {integrity: sha512-bzHngBbmIgzj6TsTjVUCntGx6FFLgE7mPjpO0PzHycOaZHXqS43XnrkFIHRS16LLr/xO6FHSXG3GJFo/F4bSBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.67.0': - resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} + '@typescript-eslint/scope-manager@8.72.0': + resolution: {integrity: sha512-JewPyJOYcXBSAS7PIgufscHOwZqhTGyBRiQJhhuDln66tMchxvvt7nJ90JKKIoOelmdHA3kAQbm9cEUHc4JSEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.67.0': - resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} + '@typescript-eslint/tsconfig-utils@8.72.0': + resolution: {integrity: sha512-0vbxCf7xLVPSjcOdm6eQbgViH8EDJ8xnl1laLT9yoqSz2YmcSfSg5Vdl0JUvZf6rcuJ0ZivJIuMD4edTg8obaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.67.0': - resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} + '@typescript-eslint/type-utils@8.72.0': + resolution: {integrity: sha512-gEXxmmbSTSOVTC37IYYvremOM31v+UN2W772bJxmVYPhAOPSUxtacyb7wkm1EhkYKU6KzFJsdU44DCV4to0LWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.67.0': - resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} + '@typescript-eslint/types@8.72.0': + resolution: {integrity: sha512-Adfoy59kxNEjT5E5fnyrp7GpHYuWs8ONbdohu4ez6IU46qDq8LltG90tLmkucZB2uhYL8mqBjtXqGd8yhfjXqQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.67.0': - resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} + '@typescript-eslint/typescript-estree@8.72.0': + resolution: {integrity: sha512-gwLfFgWcw15tN2KXDCJvxEOQjPn+P3j/n3eSqkZ5sX4VpW9Cosodr+tWwBZRvJT3TcKx6HnPRGZMCNAiP1Xhug==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.67.0': - resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} + '@typescript-eslint/utils@8.72.0': + resolution: {integrity: sha512-0up3oArJZBYnzOaEXKo8DmI43QvMZyPoFEt9LWzRJcyl/RcJjfKKPebknN1VbTgXBf3M/KggUh5uUMdURLnseg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.67.0': - resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} + '@typescript-eslint/visitor-keys@8.72.0': + resolution: {integrity: sha512-E2mroviasaWecDzTGiGMtuEguuLVOeRggnrIn93CJuxYJzQBHbyymlT08aVQydbBal5538o+JkBKXh2sRuCyIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@valibot/to-json-schema@1.7.1': - resolution: {integrity: sha512-3qkmU6KXWh8GIThEAW3kuRHPQBMjWkKy+Ppz3WkUucx53DTpOa6siMn4xDGSOhlVyMrDaJTCTMLYPZVAIk1P0A==} + '@valibot/to-json-schema@1.8.0': + resolution: {integrity: sha512-a0M+uwCuQZEPAo65NYkFSJ14O5c213KoSZmPdoCfuFvUhfULi4T2Z6Tpjv6lTVMW9RoLm74RpRAjNEa43KcN+g==} peerDependencies: - valibot: ^1.4.0 + valibot: ^1.5.0 - '@vinejs/compiler@3.0.0': - resolution: {integrity: sha512-v9Lsv59nR56+bmy2p0+czjZxsLHwaibJ+SV5iK9JJfehlJMa501jUJQqqz4X/OqKXrxtE3uTQmSqjUqzF3B2mw==} + '@vinejs/compiler@4.2.0': + resolution: {integrity: sha512-wMQjR7fxCOFMT5Q1p6xjCsH63XgCvwPUGAGGRqiHHja7PwJwcBx6FPQ9X90WtqIcF5PqpRyHNSQ1k+tKiICVMg==} engines: {node: '>=18.0.0'} - '@vinejs/vine@3.0.1': - resolution: {integrity: sha512-ZtvYkYpZOYdvbws3uaOAvTFuvFXoQGAtmzeiXu+XSMGxi5GVsODpoI9Xu9TplEMuD/5fmAtBbKb9cQHkWkLXDQ==} + '@vinejs/vine@4.4.0': + resolution: {integrity: sha512-cfnNXjs9+f+22d3Eb8koyg2qlCbaT394XBlL4AeEr1WM+NH1omFcXwe1zrkW4hHwPDSfUd4lFUdNO6E+YnTeWQ==} engines: {node: '>=18.16.0'} - '@vitest/browser-playwright@4.1.11': - resolution: {integrity: sha512-riLBxPqwnJ0lWs2DN2WeUfYeKLoAjbP2Xx8cLQdSddzMi20sksIa6K2mPz79DyMZKKVKH2ksOC2yJvtNcZg8cg==} + '@vitest/browser-playwright@5.0.5': + resolution: {integrity: sha512-lcdThFUUcMV9mGGV1SUiZXPxfjgW4CssA7o3STxzh8WK0tT2r526kc12tZIBRZfoLMwkhxjLmMXkWXONzdsDQw==} peerDependencies: playwright: '*' - vitest: 4.1.11 + vitest: 5.0.5 - '@vitest/browser@4.1.11': - resolution: {integrity: sha512-bwMovvAeuTFOK5kIFevw4VEf+1gVEICv4SYK4k3knJOxl6b1zEWud8mYKD73e1B0odAn174h1MofURy2TPWf3w==} + '@vitest/browser@5.0.5': + resolution: {integrity: sha512-IDMoZX/iZ8rkilw7weaSgN8tJ7iZ9hUv0wYoKXyiyjWjWFwLSWAY707DcVTgxTYOudWC1E3HA9LYn7kVa9a7uQ==} peerDependencies: - vitest: 4.1.11 + vitest: 5.0.5 - '@vitest/coverage-v8@4.1.11': - resolution: {integrity: sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw==} + '@vitest/coverage-v8@5.0.5': + resolution: {integrity: sha512-4KpkGdIrSqBihx/JyP/e+S+IKB98etg1XDQiLAxksLfcShnwi1VReGeOT9NI43hLHbknosKp/1CCLn9Zgcs8mg==} peerDependencies: - '@vitest/browser': 4.1.11 - vitest: 4.1.11 + '@vitest/browser': 5.0.5 + vitest: 5.0.5 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.1.11': - resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + '@vitest/istanbul-lib-coverage@1.0.2': + resolution: {integrity: sha512-9J/JMwOf9AoJhAywhrn7ScKTL38hsWQP/qPG60OtaAFcQ5OXPwKsxZFlbnuCKmZ61m8/lGgHYnFpdyQZUvG/iA==} + engines: {node: '>=22'} + + '@vitest/istanbul-lib-report@1.0.2': + resolution: {integrity: sha512-gUsfXZJbzPamoIY5TvHFiMMoXESBrUMo+xqaj+rYrWI69+EnvRlYBlP96ZnHPY4vX8kyUpgAnFUCg5wZG/HkDQ==} + engines: {node: '>=22'} - '@vitest/mocker@4.1.11': - resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + '@vitest/mocker@5.0.5': + resolution: {integrity: sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==} peerDependencies: - msw: ^2.4.9 + msw: ^2.4.9 || ^3.0.0 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: @@ -3413,45 +3378,30 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.11': - resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - - '@vitest/runner@4.1.11': - resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} + '@vitest/pretty-format@5.0.5': + resolution: {integrity: sha512-24sSdIlMA9DVPXnYiB9siwU0bTd887Y9jX3+vabztCSsvHwo7ipvJ/a2L3Rljw8+2rK1f5fCj3h5U9I/Jsqgbw==} - '@vitest/snapshot@4.1.11': - resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} + '@vitest/spy@5.0.5': + resolution: {integrity: sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==} - '@vitest/spy@4.1.11': - resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} - - '@vitest/ui@4.1.11': - resolution: {integrity: sha512-r/rwyKoev21mWdRGSEkZOqkQ2BYy68mwjihg9M90nNRbf4NGrgzZ4cj6JNCEwlOGJkbKeMgsjlykvwKUbRr7gw==} + '@vitest/ui@5.0.5': + resolution: {integrity: sha512-dCoGUOdgmCaSB2g+WQ/spPCBkytAWdNUkFSXY4z+eYp2d8JEOY8v0uDRaJTG9qf/kTlTVZ4CuYMYMz/f1HS/qQ==} peerDependencies: - vitest: 4.1.11 + vitest: 5.0.5 - '@vitest/utils@4.1.11': - resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} + '@vitest/utils@5.0.5': + resolution: {integrity: sha512-/rBu7gzLDQI/SC79Tn98b5DwOgaHU/Gt4I9OVeP3YofzNaYtbImRCOJQmT1S6vOJg9gEIlWC+r3QxKkjuSa1nQ==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -3462,97 +3412,76 @@ packages: ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} - ansi-regex@6.3.0: - resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} engines: {node: '>=12'} ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - argue-cli@3.1.0: - resolution: {integrity: sha512-DhBpBfXL4SS2uC0N922MMajKR3CdrTG0u2or1PNYgXMsrSzViJrbtvT0nCLlLGUI0plam/ZZCs7aAauHtW9thw==} + argue-cli@3.2.0: + resolution: {integrity: sha512-VipTB0gXgGIFO2Rg9yEVN5wLt2AurJcZqDbgmYSwPwsykhLrQhs240/bfceev4w68lI8JshoOJIk9uW7tFzROw==} engines: {node: '>=22'} aria-query@5.3.1: resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} engines: {node: '>= 0.4'} - arkregex@0.0.8: - resolution: {integrity: sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ==} + arkregex@0.0.13: + resolution: {integrity: sha512-c17sqCqiiZauxyoU1KZ2zbzCgeghGmc8dR2CrdQnlEtpq3bLhRLoLrxTL52M/8yQD8e/i1/IBRpRCNAuqJa7xQ==} - arktype@2.2.3: - resolution: {integrity: sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg==} + arktype@2.2.8: + resolution: {integrity: sha512-tZyLza7kO2vN8BXBKcj4t43IVMe8/ZyqlITH0chZv7FfEw+edLovpY922tqcK4mCjTpf4oNo2xV6np7tquP1ww==} assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-v8-to-istanbul@1.0.5: - resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} + ast-v8-to-istanbul@1.0.7: + resolution: {integrity: sha512-kFL68AG6ajd8fg248zwM9GQrUWEp79gsmjum34OEXjs4yHuUMZfYKwOLW9GMmB4oNvVrj+EAGxsP7ye2UR9UlA==} - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + auth@1.7.12: + resolution: {integrity: sha512-A7kvpFgh3utL7+YtwcldA9mlkT4PGd+n9a+d8Hy0t2Thz9XFZXUIkl51kr9fbUCyfyovtn7x6B8JULdfxRmQvw==} + engines: {node: '>=22.12.0'} hasBin: true - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - auth@1.6.29: - resolution: {integrity: sha512-/VaULTixl7G8L75OK2vDtcOIyeTEEHaKZlBoZ0q80SAFD+ToLyo5cJYxxkkqyA2al0luFUMTzndSdU+RHIr/wA==} - hasBin: true + aws4fetch@1.0.20: + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.10.43: - resolution: {integrity: sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==} + baseline-browser-mapping@2.11.30: + resolution: {integrity: sha512-YJs6Pz17RMNv8HoyKREtCY38E3BV1nPkWVmIb+XN1uHC1Vqt3KZCH/uJH9ZKRoiKb/icZ6tvehyee6RZNbFfRA==} engines: {node: '>=6.0.0'} hasBin: true - better-auth@1.6.29: - resolution: {integrity: sha512-7i2kOry+Jb1mRUR14kCDVS23GCKUGWxayZRXULbNz/6nFLPT6XSuGJVrwo/d+Qfq/iubA0/4Acw2/eg/tPCCnA==} + better-auth@1.7.12: + resolution: {integrity: sha512-f1fEG0QdTslzbmFA+vOGFFW/XXCWkG4kBxLeH9n1vp1otTH9+ZzV6EJ6797GStWeiYYgS5Vnt9xqE12KwSyAAw==} peerDependencies: '@lynx-js/react': '*' '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 - '@sveltejs/kit': ^2.0.0 + '@sveltejs/kit': ^2.0.0 || ^3.0.0 '@tanstack/react-start': ^1.0.0 '@tanstack/solid-start': ^1.0.0 - better-sqlite3: ^12.0.0 - drizzle-kit: '>=0.31.4' - drizzle-orm: ^0.45.2 + drizzle-kit: '>=0.31.4 || >=1.0.0-beta.1' + drizzle-orm: ^0.45.2 || >=1.0.0-rc.1 <2.0.0 mongodb: ^6.0.0 || ^7.0.0 mysql2: ^3.0.0 next: ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -3562,7 +3491,7 @@ packages: react-dom: ^18.0.0 || ^19.0.0 solid-js: ^1.0.0 svelte: ^4.0.0 || ^5.0.0 - vitest: ^2.0.0 || ^3.0.0 || ^4.0.0 + vitest: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 vue: ^3.0.0 peerDependenciesMeta: '@lynx-js/react': @@ -3575,8 +3504,6 @@ packages: optional: true '@tanstack/solid-start': optional: true - better-sqlite3: - optional: true drizzle-kit: optional: true drizzle-orm: @@ -3604,20 +3531,16 @@ packages: vue: optional: true - better-call@1.4.0: - resolution: {integrity: sha512-bBKOT4vv1kZLDgxVePdilk/Jwkn+dtRRsmi3DzHcDP+WnswyVl6dR59l2HEeP/0cB+bDoopASAesWDPIdd/zZA==} + better-call@1.4.4: + resolution: {integrity: sha512-Gq4XdGFy4dmUxFEAX2nj0ycFcFbD9ZWh8YROouZoyXeF1M11TpYbplk0pDByTFF8Wz+MYa6W9052c9m7dD+mfw==} peerDependencies: zod: ^4.0.0 peerDependenciesMeta: zod: optional: true - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bits-ui@2.19.0: - resolution: {integrity: sha512-dHDm5Jw2NZJgLRvHAwPeuR4BnZij+AqTIq33OqVfo+qiMXontoC/yIvGT5TZaviv7OuBdJ2QUy2JPQ2yKBvF6w==} + bits-ui@2.19.5: + resolution: {integrity: sha512-TEwkLSYElE5SE0fIdcItiFPfyg9vrR67N1Mt6VvZCqZo24dwTA1MpGVV3WeyIg7rfVAaZ0So8a0/dcnPngCoew==} engines: {node: '>=20'} peerDependencies: '@internationalized/date': ^3.8.1 @@ -3626,68 +3549,59 @@ packages: blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - body-scroll-lock@4.0.0-beta.0: - resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} - - brace-expansion@5.0.9: - resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} engines: {node: 20 || >=22} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.28.6: - resolution: {integrity: sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==} + browserslist@4.29.4: + resolution: {integrity: sha512-2TcbbiwXEq+N0kD36tykpCfyyQigUXmuwNQbnPp4Xk4PX9JOqVIKjJlIDjpH7uY6tmRGoAd+apeT1p60T8wsdA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bson-objectid@2.0.4: - resolution: {integrity: sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-image-size@0.6.4: - resolution: {integrity: sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ==} - engines: {node: '>=4.0'} - - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + bundle-name@4.1.1: + resolution: {integrity: sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==} engines: {node: '>=18'} - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - c12@3.3.4: - resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} + c12@4.0.0-rc.2: + resolution: {integrity: sha512-Qfc/XXsG5yyQZRm2asHeemRRbK5zmo3D+enxiNrJZs6i6zbl9CMj7Wr0lvYGq84txPNAsUKJfe3ea2Rva8h/eA==} peerDependencies: + dotenv: '*' + giget: '>=3.1.0' + jiti: '*' magicast: '*' peerDependenciesMeta: + dotenv: + optional: true + giget: + optional: true + jiti: + optional: true magicast: optional: true - cac@7.0.0: - resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + cac@7.1.0: + resolution: {integrity: sha512-LMDU/U2yA4IPIY8KT0NsNPWEYZvAMkbgyspxJ6btJaYV+WMDOHAZCmB0lsTObiHaRS1V/ztKAl7+TSkTqXyeoA==} engines: {node: '>=20.19.0'} + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase@8.0.0: - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} - engines: {node: '>=16'} - - caniuse-lite@1.0.30001805: - resolution: {integrity: sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==} + camelcase@9.0.0: + resolution: {integrity: sha512-TO9xmyXTZ9HUHI8M1OnvExxYB0eYVS/1e5s7IDMTAoIcwUd+aNcFODs6Xk83mobk0velyHFQgA1yIrvYc6wclw==} + engines: {node: '>=20'} - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + caniuse-lite@1.0.30001817: + resolution: {integrity: sha512-uZ1JG80BwhtMalIAGPxPfmNhHyd/B/nTdr3hITWlRamSyAdUStP1Gop01e7SD5q6J90ixJvWDbvmiFVfDgn4bw==} - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + chai@6.3.0: + resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==} engines: {node: '>=18'} chalk@5.6.2: @@ -3697,27 +3611,9 @@ packages: changesets-changelog-clean@1.4.0: resolution: {integrity: sha512-tRdKNZA2vg2ZH1ADHbx4SmtI722xQlDJSzvwcTXnTORrTN1fmPcmdVXPKlAjXir0R85CKo+yfbqvyhC/UdVfGw==} - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - - chevrotain@10.5.0: - resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chevrotain@12.0.0: + resolution: {integrity: sha512-csJvb+6kEiQaqo1woTdSAuOWdN0WTLIydkKrBnS+V5gZz0oqBrp4kQ35519QgK6TpBThiG3V1vNSHlIkv4AglQ==} + engines: {node: '>=22.0.0'} chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} @@ -3727,19 +3623,12 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - ci-info@4.4.0: - resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} - engines: {node: '>=8'} - - cjs-module-lexer@2.2.1: - resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} class-validator@0.14.4: resolution: {integrity: sha512-AwNusCCam51q703dW82x95tOqQp6oC9HNUl724KxJJOfnKscI8dOloXFgyez7LbTTKWuRBA37FScqVbJEoq8Yw==} - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@9.0.1: resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} engines: {node: '>=20'} @@ -3748,12 +3637,20 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + cn@0.3.3: + resolution: {integrity: sha512-OEiyJkSpYm2kOuNOKQ+c2wmzZRG8orrb9fnObtHTbCGNx/E9KLnGcmcocItOzREKk5KzQN5I2e3BUCj563KEpw==} + engines: {node: '>=20'} + hasBin: true - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} + cn@0.4.0: + resolution: {integrity: sha512-qOAeUhPwPzBxx6jaeQdo646XIKliKHc2j1ZF7Ngb1o0pJZKH5gq8FkA0aVdUdPFUDXNXyUCXpCtoJISo6dhizg==} + engines: {node: '>=20'} + hasBin: true + + cn@0.5.0: + resolution: {integrity: sha512-JGEixZEpfFXm1P5uXwvEobOFLlHwIWi5v4tjd1ZwfiYmcEilkuD2l+054rvJcYCR1B+uVThHeUbgmNz1FwuxuA==} + engines: {node: '>=22'} + hasBin: true commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} @@ -3763,59 +3660,35 @@ packages: resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} engines: {node: '>=22.12.0'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} - confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - - console-table-printer@2.12.1: - resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} + confbox@0.3.1: + resolution: {integrity: sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==} - conventional-changelog-angular@9.3.0: - resolution: {integrity: sha512-0MWQLVUT1oVCsUGs9aAWteBVxPlLwJTn5VbQH7B0B3fDizZgrJ9QGnKl/2mp1+5P7153GCBCjO/v1aKJ6eysCg==} + conventional-changelog-angular@9.4.0: + resolution: {integrity: sha512-HdxRxuS8bBXVIuo4V82gvSwAXT0vYQUizrjs/izmPg5JdDstr8v8I5hduGL3iQbG+o310dUDxC4+LetuS5hu9w==} engines: {node: '>=22'} - conventional-changelog-conventionalcommits@10.3.0: - resolution: {integrity: sha512-qag0zFD867Qq1DK0jAWicyWlEMS1FFC/BLVLISaoeI7Y6Em6aWchk7BCkhOTsecRpMsV6qX41XmlNnghiiTmSw==} + conventional-changelog-conventionalcommits@10.4.1: + resolution: {integrity: sha512-jS1LRFSbRoAr6JbhhRy1JYfNNUj5LM3+v49hRE03CgccsiYqgdVj/RTmrw4J1rylrqijHwdOlJWiJa61JHOgHg==} engines: {node: '>=22'} - conventional-commits-parser@7.1.2: - resolution: {integrity: sha512-O+x4N2yH+ijvqWlIyTHsXTAP+algNWgGbjY2duCe8w2vUMvUB95cLRslCPfTMQyLAKlet3bhZTdu6ozn4M+QJQ==} + conventional-commits-parser@7.1.3: + resolution: {integrity: sha512-Q9oWm1o9uy/oEsZQIraoFMZ4RuPD+79KgwWj6mJVP356tazolCB0piRLZ5Kz9te9p027uSEcUW+Gu44Eh+X79g==} engines: {node: '>=22'} hasBin: true - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - cookie@1.1.1: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - cosmiconfig-typescript-loader@6.3.0: - resolution: {integrity: sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==} - engines: {node: '>=v18'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=9' - typescript: '>=5' - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} cosmiconfig@9.0.2: resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} @@ -3826,31 +3699,15 @@ packages: typescript: optional: true - croner@10.0.1: - resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==} - engines: {node: '>=18.0'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - cssfilter@0.0.10: - resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - culori@4.0.2: resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3858,23 +3715,11 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dataloader@2.2.3: - resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} - - date-fns@3.6.0: - resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - - date-fns@4.1.0: - resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - date-fns@4.4.0: resolution: {integrity: sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==} - dateformat@4.6.3: - resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - - dayjs@1.11.21: - resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -3885,9 +3730,6 @@ packages: supports-color: optional: true - decode-named-character-reference@1.3.0: - resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -3899,8 +3741,8 @@ packages: resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.5.0: - resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} engines: {node: '>=18'} define-lazy-prop@3.0.0: @@ -3921,21 +3763,22 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devalue@5.9.1: - resolution: {integrity: sha512-+17vil3EVQRzvtDJSFuTWEb8XJRvXqAiV3qZyQWD398QeXUa6CxsUyMdD1fxzEhUrd4FojitFz7lhIHBTlV4fw==} + devalue@5.9.4: + resolution: {integrity: sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==} + + devalue@6.0.3: + resolution: {integrity: sha512-3woMEITftG1wKeO/4d/QXH1DVKctTSZg3jNGPpjp9hNr5Hos8MCFF5McTML5ZtgKDObm2R591B0spRp2IVernA==} + engines: {node: '>=18'} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + discord-api-types@0.38.57: + resolution: {integrity: sha512-R1CTSSt4RshqCq23j2Xq2ZscvzB4LzG9OB1CYQdKUGdw8Ti/oF/72EEtK2mNpagG/Vj9NcBT7dw9lKLf+Dacfg==} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - - dompurify@3.2.7: - resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} - dotenv-cli@11.0.0: resolution: {integrity: sha512-r5pA8idbk7GFWuHEU7trSTflWcdBpQEK+Aw17UrSHjS6CReuhrrPcyC3zcQBPQvhArRHnBo/h6eLH1fkCvNlww==} hasBin: true @@ -3952,12 +3795,12 @@ packages: resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} engines: {node: '>=12'} - drizzle-kit@0.31.10: - resolution: {integrity: sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==} + drizzle-kit@0.31.11: + resolution: {integrity: sha512-YCYqxTLIB2OCqf6w9/Vef13baBVbwQIPcbT4Y56AfO6B9ajZhDhD8Jkveg/hJvT/iuMloKD/IYYkyMMNhr7Kqg==} hasBin: true - drizzle-orm@0.45.2: - resolution: {integrity: sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==} + drizzle-orm@0.45.4: + resolution: {integrity: sha512-NiM1YZpJ2UxyeE67DpDDZ+Tsw4YLX3trSlkNT7Tm9eKoUNb1LvaAaQzXgYQsWs+AQ9TUmmwMmBOCXuqqxUWKKQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -3965,6 +3808,7 @@ packages: '@libsql/client': '>=0.10.0' '@libsql/client-wasm': '>=0.10.0' '@neondatabase/serverless': '>=0.10.0' + '@netlify/db': '>=0.4.0' '@op-engineering/op-sqlite': '>=2' '@opentelemetry/api': ^1.4.1 '@planetscale/database': '>=1.13' @@ -4001,6 +3845,8 @@ packages: optional: true '@neondatabase/serverless': optional: true + '@netlify/db': + optional: true '@op-engineering/op-sqlite': optional: true '@opentelemetry/api': @@ -4048,30 +3894,19 @@ packages: sqlite3: optional: true - effect@3.22.1: - resolution: {integrity: sha512-TNoXushmPOBAjJlthF5d2QwnX2xBPEtcNJr5XKNKbRLbDvBcOYkXlYDfvGfSA0zriwLFuCll5MDtNMAdZL17PQ==} + effect@3.22.3: + resolution: {integrity: sha512-pQU7KTFcqHCjCbhMsiv2vFLPtCfKMspA3ChglcRfAMt/h7KlGoEtRL4eaM5Bq5chTgIysITM+fUAW87HQFKl3A==} - electron-to-chromium@1.5.389: - resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==} + electron-to-chromium@1.5.461: + resolution: {integrity: sha512-3WZFARz1By+/rYcqQ0OLj4UcEdhd6tz2LEcDtKBUq7ey77EeJ1OtetY/5hjSUxw7dC5r5mA7FfkhRbqO9vnTCg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - - enhanced-resolve@5.24.5: - resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} + enhanced-resolve@5.26.0: + resolution: {integrity: sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==} engines: {node: '>=10.13.0'} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -4082,18 +3917,11 @@ packages: error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} - es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} - es-toolkit@1.50.0: - resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} + es-toolkit@1.52.0: + resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} @@ -4119,9 +3947,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -4132,8 +3957,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-svelte@3.23.0: - resolution: {integrity: sha512-n9jRklDqy0+W834568a4ZIZTK7DHXxvvHHxxGP8nNq7N//pOZMubttskHOquyGgfTR4Z05q2NdGNlsTpIEA48w==} + eslint-plugin-svelte@3.23.1: + resolution: {integrity: sha512-+w86Jlx4IRUuuvtqD6j4njql+akx+81JnpvbN5de3AV5iq2SexvST/Jr51CiTlKeY0i+vhoKjPO/ywFKIP75sA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.1 || ^9.0.0 || ^10.0.0 @@ -4162,8 +3987,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.8.1: - resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==} + eslint@10.13.0: + resolution: {integrity: sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -4187,37 +4012,95 @@ packages: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} - esrap@2.3.5: - resolution: {integrity: sha512-KciPkeZZX8srrh6xELzLR2cBaWOzgBQ4CwggO6Dh/KMlrfOcIcfyXCVy/Vvc3/OlS5gvFOd5tcxUYuaGM8o45A==} + esrap@2.4.0: + resolution: {integrity: sha512-CQPcneEHw/czj32uwQC52nYnax8H4SXt25FCM+LIwGZ49cMIxpOj3bP8wmzcI+Z0HIy5KkClaPhRLfCySzwHPA==} peerDependencies: '@typescript-eslint/types': ^8.2.0 peerDependenciesMeta: '@typescript-eslint/types': optional: true - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + evlog@2.33.1: + resolution: {integrity: sha512-raahjdFBFXWBYRD/SMuBs/pBAcarTlV/YzuIk/iWH/Snieo5mqh1a9epfo7DOKXq1OWpHqH4xXhVxWv1JIIg+w==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@nestjs/common': '>=11.2.7' + '@nestjs/core': '>=11.2.7' + '@nuxt/kit': ^4.4.2 + '@orpc/server': '>=1.15.4' + '@tanstack/start-client-core': ^1.170.34 + ai: '>=6.0.168 <8.0.0' + effect: ^4.0.0 + elysia: '>=1.4.30' + eve: '>=0.30.0' + express: '>=5.2.1' + fastify: '>=5.12.5' + h3: ^1.15.11 + hono: '>=4.13.12' + next: '>=16.3.8' + nitro: ^3.0.260311-beta + nitropack: ^2.13.4 + ofetch: ^1.5.1 + react: '>=19.3.0' + react-router: '>=7.18.4' + vite: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@nestjs/common': + optional: true + '@nestjs/core': + optional: true + '@nuxt/kit': + optional: true + '@orpc/server': + optional: true + '@tanstack/start-client-core': + optional: true + ai: + optional: true + effect: + optional: true + elysia: + optional: true + eve: + optional: true + express: + optional: true + fastify: + optional: true + h3: + optional: true + hono: + optional: true + next: + optional: true + nitro: + optional: true + nitropack: + optional: true + ofetch: + optional: true + react: + optional: true + react-router: + optional: true + vite: + optional: true execa@9.6.1: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} @@ -4227,16 +4110,13 @@ packages: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} - exsolve@1.1.1: - resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==} + exsolve@1.1.3: + resolution: {integrity: sha512-kuzL9zherLQoqDeQaS55AiiIg1kb4KYXaSusTtgZTPlvKP2gGCI82LNmBNh5RjDVUXIcmgx+/Mx7vPwRzBbhJA==} fast-check@3.23.2: resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} engines: {node: '>=8.0.0'} - fast-copy@3.0.2: - resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4246,17 +4126,14 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-string-truncated-width@3.0.3: resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.5: - resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==} + fast-uri@3.1.9: + resolution: {integrity: sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==} fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} @@ -4280,39 +4157,19 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-type@21.3.4: - resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==} - engines: {node: '>=20'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@8.0.0: - resolution: {integrity: sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==} - engines: {node: '>=20'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} flatted@3.4.4: resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} - focus-trap@7.5.4: - resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} - formsnap@2.0.1: resolution: {integrity: sha512-iJSe4YKd/W6WhLwKDVJU9FQeaJRpEFuolhju7ZXlRpUVyDdqFdMP8AUBICgnVvQPyP41IPAlBa/v0Eo35iE6wQ==} engines: {node: '>=18', pnpm: '>=8.7.0'} @@ -4320,23 +4177,11 @@ packages: svelte: ^5.0.0 sveltekit-superforms: ^2.19.0 - fs-extra@11.4.0: - resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==} - engines: {node: '>=14.14'} - - 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] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4345,36 +4190,21 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} engines: {node: '>=18'} get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.14.2: - resolution: {integrity: sha512-XpwZALwwl/BaKTAyC6+c5T8y6kCg2jk+XGqOVrKIQmW49pNypYLMRjCUXqa28tQgJlhS2RlzP7sc+Rx7W6qsfw==} - - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - - giget@3.3.1: - resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==} - hasBin: true - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} - global-directory@5.0.0: resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} engines: {node: '>=20'} @@ -4383,102 +4213,47 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} - globals@17.11.0: - resolution: {integrity: sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==} + globals@17.13.0: + resolution: {integrity: sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg==} engines: {node: '>=18'} - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql-http@1.22.4: - resolution: {integrity: sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA==} - engines: {node: '>=12'} - peerDependencies: - graphql: '>=0.11 <=16' - - graphql-playground-html@1.6.30: - resolution: {integrity: sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==} - - graphql-scalars@1.22.2: - resolution: {integrity: sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - graphql@16.14.1: - resolution: {integrity: sha512-cQOsSMS/IrDz82PVyRDvf/Q1F/bRbBVjJlh+xYOkI1qw2bWRvWGiWc+m2O0d6l4Bt1fyY+8kzJ8JFWGJqNeDBg==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - - happy-dom@20.11.2: - resolution: {integrity: sha512-7MB+bJLkxu3SowAfBJbjW+c55kNz5tkR45gu2qzrxznezhLeN5YIlJbwUgSzlGc+qWoZ8Ykg71H5ezz69xixrw==} - engines: {node: '>=20.0.0'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} - - help-me@5.0.0: - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + highlight.js@11.11.2: + resolution: {integrity: sha512-oaXMACAU0kzOMXBjWpNcX+vlwSBCIAiZ9BHa7gA15NOTtT2L/l8OSZDuqS2XppOhZBPJ7hm4o8ep2kyuip2uEQ==} + engines: {node: '>=12.0.0'} - http-status@2.1.0: - resolution: {integrity: sha512-O5kPr7AW7wYd/BBiOezTwnVAnmSNFY+J7hlZD2X5IOxVBetjcHAiTXhzj0gMrnojQlwy+UT1/Y3H3vJ3UlmvLA==} - engines: {node: '>= 0.4.0'} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} - human-id@4.2.1: - resolution: {integrity: sha512-zPGsiS+dWoTZtZ4AtpA9Y+BdSFSNWvnouNlWNoUFyAM6xHOHmdCvqO3k8AIbdamCOv4gUFUVNPf6rJFfc4UiJw==} + human-id@4.2.2: + resolution: {integrity: sha512-Z+8unD6em/MJwyrkWQ2M3wygRGI1+MztbutiNwk1DCuEPXOZRWGjtcMPZYP1exY9iNZMhd7ZOSMQSo9WYtiQRw==} hasBin: true human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.6: - resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + ignore@7.0.13: + resolution: {integrity: sha512-2E8Q6rh+1RRSq/YdaGsNfXsEZy9FVqv6BSSrkmZJP7BnaoPnRfKL+YaofPvP+5rzdk144qSm6i4+hvPgUcbV4Q==} engines: {node: '>= 4'} - image-dimensions@2.5.1: - resolution: {integrity: sha512-It7CkTNp7IYA8jhvGgz8K18OAbHF3/Juk8RNEyTyMFfolJOIU1Y2wGDnzDQPbGCjyxVF/++pwIZE0BKJUEOb1g==} - engines: {node: '>=18'} - hasBin: true - - immutable@4.3.8: - resolution: {integrity: sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==} - import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-in-the-middle@3.3.3: - resolution: {integrity: sha512-AiohS3H80sXO6owEltjGX+glb7qXaDhBoJb9XcQVH4UI207xu/bDLUcadVKp7Qe576reg9yr/PXZjV5qx8gfbA==} - engines: {node: '>=18'} - import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} @@ -4493,33 +4268,9 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4533,28 +4284,19 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -4576,22 +4318,6 @@ packages: isomorphic.js@0.2.5: resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} - - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} - hasBin: true - jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true @@ -4599,18 +4325,11 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - joi@17.13.4: - resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==} - - jose@5.10.0: - resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} + joi@17.13.8: + resolution: {integrity: sha512-iPKOGmiRw1jxf/JOPwxmCcUQAOdF359mdzYiP2DJ+TMX0YK2zjK3D+zYOaGjpumWxOFF/l2xVWjRVK5bGSLdEw==} - jose@6.2.8: - resolution: {integrity: sha512-Bsdjwm3Qsd/P0jR+BHDe3LytDfY7WBq2HmCCLIwuVRHMuEC9ae7/R474GIUdF1NgCyZjzVo/A9DOiOBtXq8ZoQ==} - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} + jose@6.2.13: + resolution: {integrity: sha512-7TIg10ZE1x82YediN+lcrPNvGMKge9yFHQD+Qho/b8y2adfugU3AsvvHfxV0fzyFllT6l9xCjf4RWY9g/Z9PJQ==} js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} @@ -4618,8 +4337,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.3.1: - resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true jsesc@3.1.0: @@ -4627,9 +4346,6 @@ packages: engines: {node: '>=6'} hasBin: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -4637,11 +4353,6 @@ packages: resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} engines: {node: '>=16'} - json-schema-to-typescript@15.0.3: - resolution: {integrity: sha512-iOKdzTUWEVM4nlxpFudFsWyUiu/Jakkga4OZPEt7CGoSEsAsUgdOZqR6pcgx2STBek9Gm4hcarJpXSzIvZ/hKA==} - engines: {node: '>=16.0.0'} - hasBin: true - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4659,19 +4370,8 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - jsonfile@6.2.1: - resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - - jsox@1.2.121: - resolution: {integrity: sha512-9Ag50tKhpTwS6r5wh3MJSAvpSof0UBr39Pto8OnzFT32Z/pAbxAsKHzyvsyMEHVslELvHyO/4/jaQELHk8wDcw==} - hasBin: true - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -4684,35 +4384,28 @@ packages: known-css-properties@0.37.0: resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} - ky@2.0.2: - resolution: {integrity: sha512-/GmXpo9F9W+f8n4Ivr2iH+7h7wL7jLbLKWkMlpflcCRb6kGjBfTlASEXaZ9qUgNTn4VgS0P2pwxxzQ4EM6Ulgg==} + ky@2.2.0: + resolution: {integrity: sha512-4+B63kyZt+Y8snQiUGydK1vgY9xYQJZEh9K/nIAIEts+gYJzy1EiAw3BbK8xpWRuWUpN70SNCMjqRGTm75xxIA==} engines: {node: '>=22'} - kysely@0.29.5: - resolution: {integrity: sha512-ooa+eSbBNPTo3MycPEuW5jdrxQdQwdtB3LC3h43FiXQbIry5tR0C5lDG7eealK0E4D7XjrnOP5DIUg/LyjRMYQ==} + kysely@0.29.7: + resolution: {integrity: sha512-fmIq+7kv4WbFm2tcfznRzikqB4cuNpgZ40PSU2fAJ2/OO5XhojqnTPrmgrCjYSRJVwBln03XcRXJGnw9H099IQ==} engines: {node: '>=22.0.0'} - launch-editor@2.14.1: - resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} - - leven@4.1.0: - resolution: {integrity: sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + launch-editor@2.14.2: + resolution: {integrity: sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==} levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lexical@0.41.0: - resolution: {integrity: sha512-pNIm5+n+hVnJHB9gYPDYsIO5Y59dNaDU9rJmPPsfqQhP2ojKFnUoPbcRnrI9FJLXB14sSumcY8LUw7Sq70TZqA==} - - lib0@0.2.117: - resolution: {integrity: sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==} + lib0@0.2.119: + resolution: {integrity: sha512-vh+TiejVy8Xm+hCdnRfn9BthGNvNUZdEXltNjVZL3TzRIKP3s1lnQh8pWd/Q0wCgY0FPAGVVjFF4ZiHUV3LFgA==} engines: {node: '>=16'} hasBin: true - libphonenumber-js@1.13.11: - resolution: {integrity: sha512-ETER2kMaIFTI/Nh1a8Gk03dUF/SL0VZqtI+CcVHZxp5WIHYwNS7S+uiYZDYCvLy3lOR4/DAD5jf0h5WkePPpqg==} + libphonenumber-js@1.13.15: + resolution: {integrity: sha512-AHdhEQeDFEJ4GKDAQ9AwxChy+v2kUILUB3TGQRpkXMkWePjXTU/WQEzWVQoIx/Gz8fE73Wr5SEuZCy2vk8jrMQ==} lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} @@ -4869,8 +4562,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@5.0.2: - resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} + linkifyjs@4.3.3: + resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==} locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -4879,33 +4572,12 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@8.0.0: - resolution: {integrity: sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==} - engines: {node: '>=20'} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@11.5.2: - resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} - engines: {node: 20 || >=22} + lowlight@3.3.0: + resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -4913,134 +4585,28 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magic-string@1.2.0: - resolution: {integrity: sha512-ptco+HFxTLgjafSLim2LojBSwfg5feBjd+SqyiwdGkzC38UPdZy3zgrHMI2CoTf5fJL38tbHMYWVzIH8BxGqJw==} - - magicast@0.5.4: - resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + magic-string@1.4.3: + resolution: {integrity: sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==} - markdown-it@14.3.0: - resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} - hasBin: true + magicast@0.5.5: + resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} - marked@14.0.0: - resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} - engines: {node: '>= 18'} + marked@17.0.6: + resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} + engines: {node: '>= 20'} hasBin: true - md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - - mdast-util-mdx-jsx@3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdurl@2.1.0: - resolution: {integrity: sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==} - - memoize-one@6.0.0: - resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + mdsvex@0.12.8: + resolution: {integrity: sha512-v2sbRA9QWf0tpYWfREI5Kq7OqqrqoUzfmMKbgdOoWGfPDLc1JYU4EgDDF0N9WFhmjFW5agKrYwo/mDVutBKWKw==} + peerDependencies: + svelte: ^3.56.0 || ^4.0.0 || ^5.0.0-next.120 memoize-weak@1.0.2: resolution: {integrity: sha512-gj39xkrjEw7nCn4nJ1M5ms6+MyMlyiGmttzsqAUsAKn6bYKwuTHh/AO3cKPF8IBrTIYTxb0wWXFs3E//Y8VoWQ==} - meriyah@6.1.4: - resolution: {integrity: sha512-Sz8FzjzI0kN13GK/6MVEsVzMZEPvOhnmmI1lU5+/1cGOiK3QUahntrNNtdVeihrO7t9JpoH75iMNXg6R6uWflQ==} - engines: {node: '>=18.0.0'} - meshoptimizer@0.18.1: resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-mdx-jsx@3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - miniflare@5.20260917.0-alpha: resolution: {integrity: sha512-NpZyBR+h/nonVA/YO/+1/UJpIl8lTwCgpFPVp/KVzAhb8JuCRImPDfyrft040659Zna1RS3Lt2pzTs5Vwy5QSA==} engines: {node: '>=22.0.0'} @@ -5052,21 +4618,11 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - mode-watcher@1.1.0: resolution: {integrity: sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==} peerDependencies: svelte: ^5.27.0 - module-details-from-path@1.0.4: - resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} - - monaco-editor@0.55.1: - resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} - mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -5078,39 +4634,23 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.18: - resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanostores@1.4.2: - resolution: {integrity: sha512-Wxv8Roefr2nqtiRG0bnaFlpYqpIVtOEeJZHaH+4nGgOK1/7n6OHOuHCb/bhqrNQgZM8fyd0s1PqhdrJc9Ib44g==} + nanoid@5.1.16: + resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==} + engines: {node: ^18 || >=20} + hasBin: true + + nanostores@1.5.5: + resolution: {integrity: sha512-FixtE239Gl6Gz0ZGCK0WzvNwObNCIwVT+L7zQcf1QgcA6AzBxblzqe9OT88qiucNkhsjSOqiogSaF5jVbJiqSA==} engines: {node: ^20.0.0 || >=22.0.0} natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - next@16.2.7: - resolution: {integrity: sha512-eMJxgjRzBaj3olkP4cBamHDXL79A8FC6u1GcsO1D1Tsx8bw/LLXUJCaoajVxtnhD3A1IJqIT8IcRJjgBIPJq4w==} - engines: {node: '>=20.9.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.51.1 - babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true - node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} @@ -5123,13 +4663,141 @@ packages: encoding: optional: true - node-releases@2.0.51: - resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} - engines: {node: '>=18'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + node-releases@2.0.59: + resolution: {integrity: sha512-5qr2okC4ItAI0hG5SaV0HoYMpnM/Y6+Oqr7AmPYy/2uEoGvS+GbSKLeRxSS1uAdu59yz0ouzcuXievSgg///WA==} + engines: {node: '>=18'} + + node@runtime:24.22.1: + resolution: + type: variations + variants: + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-9ie20HmCnmSKS4AP+oidN9viORNQcDADDbhaqGFZGiY= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-aix-ppc64.tar.gz + targets: + - cpu: ppc64 + os: aix + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-icaCWT12zUQjP6U7FWMmTn3py7GJytFpE1xbT637wKc= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-darwin-arm64.tar.gz + targets: + - cpu: arm64 + os: darwin + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-0TJVfn7iuFrwiwyMNDOOZcZDDyI40B9ydyjvQtyDsDU= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-darwin-x64.tar.gz + targets: + - cpu: x64 + os: darwin + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-M8N74jS6i+4EGWEEexkWD019DxZOjiRveL3RD+/xSLM= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-arm64.tar.gz + targets: + - cpu: arm64 + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-nOVyhEUBaynkmtCY96M2Bhql93DRd9knJ4vCb9Ym5kM= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-ppc64le.tar.gz + targets: + - cpu: ppc64le + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-cZea6xw4W8jugxANODo7HsClIC4D35+ZanBAMwnK/7U= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-s390x.tar.gz + targets: + - cpu: s390x + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-myUNKdariuON0jAZ4sBKbWspFqsdrXIcX24dorKQHGo= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-x64-musl.tar.gz + targets: + - cpu: x64 + os: linux + libc: musl + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-62co53xXajUWLBIsRcyt8iTYn/AKvI2uRswol8YALXw= + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-x64.tar.gz + targets: + - cpu: x64 + os: linux + - resolution: + archive: zip + bin: + node: node.exe + integrity: sha256-oMgHMZ/t4kxKDY+EVkyCphm9MTsWsQwAfDg8JgnpkXE= + prefix: node-v24.22.1-win-arm64 + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-win-arm64.zip + targets: + - cpu: arm64 + os: win32 + - resolution: + archive: zip + bin: + node: node.exe + integrity: sha256-0gRtKMLD3NIRrFFFwL8w4gR++d+zBmk8jG4uzNi5X6U= + prefix: node-v24.22.1-win-x64 + type: binary + url: https://nodejs.org/download/release/v24.22.1/node-v24.22.1-win-x64.zip + targets: + - cpu: x64 + os: win32 + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-glQSWCWj5eg0vYomDatMgwP3IEZKdBUG7CeYm5uhdps= + type: binary + url: https://unofficial-builds.nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-arm64-musl.tar.gz + targets: + - cpu: arm64 + os: linux + libc: musl + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-Cp7dzi0ujzrdvpT6RtdRMlstdPf9HOYylhZNNrbfxuU= + type: binary + url: https://unofficial-builds.nodejs.org/download/release/v24.22.1/node-v24.22.1-linux-x64-musl.tar.gz + targets: + - cpu: x64 + os: linux + libc: musl + version: 24.22.1 + hasBin: true normalize-url@8.1.1: resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} @@ -5142,53 +4810,60 @@ packages: numerable@0.3.15: resolution: {integrity: sha512-Cu0dX3OjvXmqIyGveN8HuEnafCIUCz269NORa4JKAERXCa/vWr+pBRlrWxBK4psLV9RuhJ+DPoJPisu2QMW0mg==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-to-formdata@4.5.1: - resolution: {integrity: sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw==} - - obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} - ohash@2.0.12: - resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==} - - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + obug@3.0.0: + resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==} + engines: {node: '>=12.20.0'} - open@10.2.0: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} - engines: {node: '>=18'} + open@11.0.4: + resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==} + engines: {node: '>=20'} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - orval@8.24.0: - resolution: {integrity: sha512-dtrFTGJQCtTpvsFk7BEKzNsvjYW8SD0hFUyoC2dL4bWVHfKmujRWeMYgm3h9U/cJPZBpgG4UqLnfVY8/DbZpYw==} + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + + orval@8.43.0: + resolution: {integrity: sha512-0gSCXFygPF/9mx42bZw1QA8Dn4a8u/cRlAz5Essdtap1TNAoDA3GMH31Mo/SETLxx9soy3FTg7gvFSMBDjCRZg==} engines: {node: '>=22.18.0'} hasBin: true peerDependencies: prettier: '>=3.0.0' + typedoc: ^0.28.19 + typedoc-plugin-markdown: ^4.10.0 peerDependenciesMeta: prettier: optional: true + typedoc: + optional: true + typedoc-plugin-markdown: + optional: true + + oxc-parser@0.148.0: + resolution: {integrity: sha512-syxUKHeUll89RIABQADcI7sikYrwyssvA6gj4phSSIPezKVM8yMaLAiLLSc7fmzVvrwybfFGFbW5zme9sX87rg==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-parser@0.152.0: + resolution: {integrity: sha512-ZztsZgaCWmPeKYMdoTT5e0oV/oxD1NeLWNR3kAtr/G707cUPYaaozRlVDHLCGnszHJRszN9mJwmPNpqgwloC0A==} + engines: {node: ^20.19.0 || >=22.12.0} - oxfmt@0.64.0: - resolution: {integrity: sha512-XZ4GFBN/PLbXKq+0zrgpQfPKYuJlUuj+nzZJY7UpIbFMNyefNLCdN9EwViycNqnYcv0wrn0jXcQLlqJp8RCKBg==} + oxfmt@0.74.0: + resolution: {integrity: sha512-G4OP7FgwGYZR5ttRpCOOfJdyRsSyvtn34vSXnjDq6Oqed5Dufg5mB44mank+51nAdHOKuTJ0lj0mksY7L+N61A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: + '@astrojs/compiler-rs': ^0.4.0 || ^0.5.0 svelte: ^5.0.0 vite-plus: '*' peerDependenciesMeta: + '@astrojs/compiler-rs': + optional: true svelte: optional: true vite-plus: @@ -5198,20 +4873,12 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - package-manager-detector@1.8.0: - resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} paneforge@1.0.2: resolution: {integrity: sha512-KzmIXQH1wCfwZ4RsMohD/IUtEjVhteR+c+ulb/CHYJHX8SuDXoJmChtsc/Xs5Wl8NHS4L5Q7cxL8MG40gSU1bA==} @@ -5222,9 +4889,6 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -5245,86 +4909,32 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} - engines: {node: 18 || 20 || >=22} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - payload@3.88.0: - resolution: {integrity: sha512-O7zuS80bvEGLte+7xZjwN05+ox5BCsGcQT2M6+CTote07JQOOvHJoiuoyQFw6cUElcFTWGMC5dy03w7J7sTYGg==} - engines: {node: ^18.20.2 || >=20.9.0} - hasBin: true - peerDependencies: - graphql: ^16.8.1 - - perfect-debounce@2.1.0: - resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-protocol@1.14.0: - resolution: {integrity: sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} - - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - - pino-pretty@13.1.2: - resolution: {integrity: sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==} - hasBin: true - - pino-std-serializers@7.1.0: - resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} - - pino@9.14.0: - resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} - hasBin: true - - pkg-types@2.3.1: - resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + pkg-types@2.4.0: + resolution: {integrity: sha512-07Fys7iVx0X6TcviMOgogM1Lk33ZyqOezMnU79S+kffWqwolG/5W9V8EgQSeYCIfFTYVgssRbnH630Oa2+soBA==} - playwright-core@1.62.1: - resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==} + playwright-core@1.64.1: + resolution: {integrity: sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==} engines: {node: '>=20'} hasBin: true - playwright@1.62.1: - resolution: {integrity: sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==} + playwright@1.64.1: + resolution: {integrity: sha512-HCrVhHr5QQuwYoswEUGTb7gGp522yflbv/ST8nF4sFWGuLjQCt17Q/EubpGGSNKYn1tsTCPZxqHhHCfVURu7UA==} engines: {node: '>=20'} hasBin: true - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - pngjs@7.0.0: resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} engines: {node: '>=14.19.0'} @@ -5341,8 +4951,8 @@ packages: ts-node: optional: true - postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + postcss-safe-parser@7.1.0: + resolution: {integrity: sha512-1WzZxRLaAFwEh6Do+zyGpjWV3nGJNxxhuh7Ubu/q1ICImMgZJnLwhoaEpRbG4pJppp2Y1ncL9ffA2f+LhrefQg==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 @@ -5353,152 +4963,115 @@ packages: peerDependencies: postcss: ^8.4.29 - postcss-selector-parser@7.1.5: - resolution: {integrity: sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==} + postcss-selector-parser@7.1.7: + resolution: {integrity: sha512-wWBro/7hJ40ye6TPiXkUQoXKCw23xSsjriUvqd7Uls9Sso3oLiON1flc18cCdnjgCRXw4fBVqUJJeOdDTh3P3g==} engines: {node: '>=4'} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + postcss@8.5.31: + resolution: {integrity: sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.26: - resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} - engines: {node: ^10 || ^12 || >=14} - - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.1: - resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} - engines: {node: '>=0.10.0'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - postgres@3.4.9: resolution: {integrity: sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==} engines: {node: '>=12'} + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} + engines: {node: '>=20'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + prettier@3.9.10: + resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==} engines: {node: '>=14'} hasBin: true - pretty-ms@9.3.0: - resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + pretty-ms@10.0.0: + resolution: {integrity: sha512-6BWuxY2dCNgT45VnGzZcfNy7WeLqXiZqhhy4aHThTE6KI56R2ZBw9HQ7spPFKYchDizvJbPxTEknIpmW4FSmQA==} + engines: {node: '>=22'} + + pretty-ms@9.3.1: + resolution: {integrity: sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==} engines: {node: '>=18'} + prism-svelte@0.4.7: + resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==} + prismjs@1.30.0: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} - process-warning@5.0.0: - resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-expr@2.0.6: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prosemirror-changeset@2.4.4: + resolution: {integrity: sha512-Gyuz9jYdrAeA9I7AholyOes9KUmv/lEwsC5O9s5xF5VB3EgTPsXMGUxz4+H1B+wKVPdZbvRcg1Cp3x8qX+8ofA==} - pump@3.0.4: - resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + prosemirror-commands@1.7.2: + resolution: {integrity: sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw==} - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} + prosemirror-dropcursor@1.8.4: + resolution: {integrity: sha512-VmKxhcA6a+h5oPSYmfF1ZNeQqPbyYaIxqZsKqeYCyTlPtrjUgNaHL3P8vVaO19oqAV0zuaM/axkowZHrB1P3Tg==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + prosemirror-gapcursor@1.4.1: + resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + prosemirror-history@1.5.1: + resolution: {integrity: sha512-onlwnqKvgtFg6srZOmDOAhlAy1FIHQpOExORybX0S+DvJepE5tPALrB9iGet/2sqqqrelSnB10OoiOJqAvu2DA==} - qs-esm@8.0.1: - resolution: {integrity: sha512-eZ7l+0ZVy3He9c85pEM9KEBR9DFA4jrmWvIjm9wpcHvScwc/vgZDl2TNOF0pm0JsWKw24XBUZOY0Wxn7/nvJnw==} - engines: {node: '>=18'} + prosemirror-inputrules@1.5.1: + resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==} - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + prosemirror-model@1.25.12: + resolution: {integrity: sha512-Ue2gTmXMa7EhpLNhC7J+h4+ykD8ha12K6rrZFFKKJHBForfIStw5gJ6Zrf1mqqAa9NmpmEB4wp9bKmA4eUVjWg==} - rc9@3.0.1: - resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} - react-datepicker@7.6.0: - resolution: {integrity: sha512-9cQH6Z/qa4LrGhzdc3XoHbhrxNcMi9MKjZmYgF/1MNNaJwvdSjv3Xd+jjvrEEbKEf71ZgCA3n7fQbdwd70qCRw==} - peerDependencies: - react: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc - react-dom: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + prosemirror-state@1.4.4: + resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} + + prosemirror-tables@1.8.5: + resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} - react-dom@19.2.7: - resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} - peerDependencies: - react: ^19.2.7 + prosemirror-transform@1.12.2: + resolution: {integrity: sha512-PE/aY0HEY4zczvmqrilgkUK/WautF0chvMqkmM/iN5/aPHvwrCWaQZjS6CIZp+K84YrvPFqrL+YArrfJX8xX7g==} - react-error-boundary@4.1.2: - resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} - peerDependencies: - react: '>=16.13.1' + prosemirror-view@1.42.6: + resolution: {integrity: sha512-3g25f6hKV2bBxo3puH3EcYWmmVNSH0iWmNsMVT7sugDSpA025jgpOLarcDWr39SdzPjYMaiYtRdNtXialPSjEQ==} - react-error-boundary@6.1.2: - resolution: {integrity: sha512-3DpCr5HVdZ0caUjYE/kIHBEJN0mNP3ZCgf16c48uJ5TbWjorKVp+YG8W3XqlJ7vJAVNw6wNIImyPXmFydwmyng==} - peerDependencies: - react: ^18.0.0 || ^19.0.0 + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - react-image-crop@10.1.8: - resolution: {integrity: sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA==} - peerDependencies: - react: '>=16.13.1' + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + qified@0.10.1: + resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} + engines: {node: '>=20'} - react-select@5.9.0: - resolution: {integrity: sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + rc9@3.1.0: + resolution: {integrity: sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==} - react-transition-group@4.4.5: - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + react-dom@19.3.1: + resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==} peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react: ^19.3.1 - react@19.2.7: - resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} + react@19.3.1: + resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==} engines: {node: '>=0.10.0'} - 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'} @@ -5507,29 +5080,10 @@ packages: resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} engines: {node: '>= 20.19.0'} - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - - regexp-to-ast@0.5.0: - resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} - - regexparam@3.0.0: - resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} - engines: {node: '>=8'} - - remeda@2.40.0: - resolution: {integrity: sha512-Y8yxrbK8SbTao2+mTqJcjre3/eBH641nr88aAgYfOdbW5p4FH+1Jk3mMypnA+SoktEXBVA8id0o3XPbgHYvQ9Q==} - engines: {node: '>=18.0.0'} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-in-the-middle@8.0.1: - resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} - engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -5541,20 +5095,13 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} - hasBin: true - - rolldown@1.2.5: - resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} + rolldown@1.2.14: + resolution: {integrity: sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.62.4: - resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} rou3@0.9.2: resolution: {integrity: sha512-3SOzvaAg8rkHrXtRjpCvCvbyO5to9oOO27Z/XqHEYXfMRVSw/qMIVdmaOk9W2lcRLtR6dlqTjo9hDeJk70QBYQ==} @@ -5608,33 +5155,12 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - sanitize-filename@1.6.3: - resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} - - sass@1.77.4: - resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} - engines: {node: '>=14.0.0'} - hasBin: true - - scheduler@0.25.0: - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} - - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} schema-dts@1.1.5: resolution: {integrity: sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==} - secure-json-parse@4.1.0: - resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} - - semifies@1.0.0: - resolution: {integrity: sha512-xXR3KGeoxTNWPD4aBvL5NUpMTT7WMANr3EWnaS190QVkY52lqqcVRD7Q05UVbBhiWDGWMlJEUam9m7uFFGVScw==} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5644,19 +5170,15 @@ packages: engines: {node: '>=10'} hasBin: true - set-cookie-parser@3.1.2: - resolution: {integrity: sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==} + set-cookie-parser@3.1.4: + resolution: {integrity: sha512-iEmdEew+Tn1BwMGMP8LzGBEPC7Mf1sySjglCeEPb/Vchm9bnGezePvacYcId+fGprQzIng+TBkzqfJ/qS7AsBg==} - shadcn-svelte@1.5.0: - resolution: {integrity: sha512-fcxTeUwEIvELkL/h0Vg2i/9Sf6exAmLG5u3GXc0aN8CA+3fNffKQnfrTdMgkjUEmx9XP619I+wcJOvlr5aDWYQ==} + shadcn-svelte@1.7.0: + resolution: {integrity: sha512-AK3ZsYOL8PN/RxcEBCHGvQj2TrLfaaBsbw0QohyEb3nn/yPNDRC/+9iSjnTp/uKEe+tAi0tBxB/Yhzno0N7EEg==} hasBin: true peerDependencies: svelte: ^5.0.0 - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.35.4: resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} engines: {node: '>=20.9.0'} @@ -5674,24 +5196,18 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.10.0: - resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} + shell-quote@1.12.0: + resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==} 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'} - simple-git-hooks@2.13.1: - resolution: {integrity: sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==} + simple-git-hooks@2.14.0: + resolution: {integrity: sha512-kkTORPAuxQz2g1QUuN0J8yGWT28tjGBfPOdJ4xT7Vbeu30veKUZQIoID2qGgCDAakaQn59UeZJJ4cFGB8PVP2A==} hasBin: true - simple-wcswidth@1.1.2: - resolution: {integrity: sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==} - sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} @@ -5705,50 +5221,19 @@ packages: skinview3d@3.4.2: resolution: {integrity: sha512-nwxTmT+OWCckDu5CsbjFnyOqthNjl9Fahjqzyy55qcl6jXHIjMrmvDj0b1VZFvT39UKYuO1gnzAQicQ1TH4hvg==} - sonic-boom@4.2.1: - resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} - - sonner@1.7.4: - resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==} - peerDependencies: - react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc - react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc - - sorcery@1.0.0: - resolution: {integrity: sha512-5ay9oJE+7sNmhzl3YNG18jEEEf4AOQCM/FAqR5wMmzqd1FtRorFbJXn3w3SKOhbiQaVgHM+Q1lszZspjri7bpA==} - hasBin: true - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - state-local@1.0.7: - resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - - std-env@4.2.0: - resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} + std-env@4.3.0: + resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -5758,13 +5243,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.2.2: - resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} engines: {node: '>=20'} - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@7.2.0: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} @@ -5773,33 +5255,9 @@ packages: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} - strip-json-comments@5.0.3: - resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} - engines: {node: '>=14.16'} - - strtok3@10.3.5: - resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} - engines: {node: '>=18'} - style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - styled-jsx@5.1.6: - resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - super-sitemap@2.0.6: resolution: {integrity: sha512-SnwRkm5X9+Jq2HDPbFemZwxGya1+r4nJQw30UTu/2jdW1J6HfEz5hrXhy2ktbW/esmv+wOr5xN7s/kojYtAXkg==} @@ -5811,25 +5269,17 @@ packages: 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-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svelte-check@4.7.6: - resolution: {integrity: sha512-t2scM//ZuVbSY/T2w6FSBw1v9s2NEmh/g+sy1lqtosW5ylBV5AF4wFb1Ts9Kf3MbfPDUDJDZ9L436YT0SPTdvw==} + svelte-check@4.7.7: + resolution: {integrity: sha512-Ge2IMdeTpbJuzNFGRiiMg0RWgbScysKQu7xwcyFJ22+DU9F5nPX51+Q3gHmGqRxYQMx2knreVWt5oCtfe0vf2g==} engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: ^5.0.0 || ^6.0.0 - svelte-eslint-parser@1.8.0: - resolution: {integrity: sha512-mikR1qwIVy3t5WthUoAXkMwxkXvabZP9FJgdx35Ei7EbGWmctva1Pih16Koeor/bdNNq8NXHlwKGS6NkYTawLg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.34.1} + svelte-eslint-parser@1.9.0: + resolution: {integrity: sha512-aKdKQAZP7MobfVcQNyy5Yk0QjlC9m5T1lTS0qA7+0EIsFzFX3WgbGHfb8267QK+4hI8Az9+2f+hk5sp39op8sg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.34.6} peerDependencies: svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: @@ -5887,21 +5337,22 @@ packages: peerDependencies: svelte: ^5.30.2 - svelte@5.56.10: - resolution: {integrity: sha512-Lcxbj8I/KAbpY+VjtY4ENQBV0dDCipfGAhqb51XQZ67CIQqXgsv/8dPkbILaj4Fb6/b6JAEM/PIVbILXgDQy2g==} + svelte@5.57.2: + resolution: {integrity: sha512-1YiPCAXT0Ct6g1vOMmSLa0Nsc3QRMvtDF32ihgglGVrugIuIK38RyDiFNXVDhtQ81TJjSO57NdMw6DyYLqSGDQ==} engines: {node: '>=18'} - sveltekit-superforms@2.30.2: - resolution: {integrity: sha512-6sR70ZfjFMAfdNure/Bu26o1rY32+WGxebko1L8jUFS+qZw5fxIHBPkUaTpNBkOIlJZ/UJwoNCYCm5xK2Z7Kqw==} + sveltekit-superforms@3.0.0: + resolution: {integrity: sha512-fnMV7pb96yYDD8jgoOZshob3c2jgcgtsNhYAYv9atBbkYQJRINOqptRGTK/iYdLaCnzvUqJDPSYHUVAtbmeXbA==} peerDependencies: - '@sveltejs/kit': 1.x || 2.x - svelte: 3.x || 4.x || >=5.0.0-next.51 + '@sveltejs/kit': ^2.12.0 || ^3.0.0 + svelte: ^5.56.4 tabbable@6.5.0: resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} - tailwind-merge@3.6.0: - resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} tailwind-variants@3.3.1: resolution: {integrity: sha512-4pAvwUtM4HKBiRZftncAbpn6V9Hhwoa5Fl7O2u5zbp7Z5Cvu+/o/6+176WY3WCEES209543quG8zFIcXCsc5Jw==} @@ -5923,53 +5374,40 @@ packages: tailwindcss@4.3.3: resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==} - takumi-js@2.10.0: - resolution: {integrity: sha512-SdaoNkuifjgJgWbsNBdm94mkgxw36iGeaUGFxsEk+HfkJBHW4LOCdaq4Bz9p7pQlVXlkxLj633uOWE4A1GRc2Q==} - engines: {node: '>=18'} + takumi-js@2.17.1: + resolution: {integrity: sha512-Hluthn8J3AVG+SiZinuj3ewJIwbHqcUftnSR4pgKcIQKe6LQqafdsJ4jAEy85XOE1ujWaVV1E4qgKHhTAJM5aA==} + engines: {node: '>=20.19'} tapable@2.3.3: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - thread-stream@3.2.0: - resolution: {integrity: sha512-zLBvqpwr4Esa0kRjcrzGU6zL25lePWaCLMx0RQFrmteozIfeNdaMLpG5U7PeHzvlFkAWaRKA9/KVW4F60iB+qw==} - three@0.156.1: resolution: {integrity: sha512-kP7H0FK9d/k6t/XvQ9FO6i+QrePoDcNhwl0I02+wmUJRNSLCUIDMcfObnzQvxb37/0Uc9TDT0T1HgsRRrO6SYQ==} tiny-case@1.0.3: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinybench@6.2.2: + resolution: {integrity: sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA==} + engines: {node: '>=20.0.0'} - tinyexec@1.3.0: - resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinypool@2.1.0: - resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + tinypool@2.2.0: + resolution: {integrity: sha512-jBrmx4lYmaC9k/mgPbylxs7kBUxHtD8256up+HjLaDFfXScKJQyil+SWXSvhAtT7XHo+yTVlpB81PGmHP8oLSQ==} engines: {node: ^20.0.0 || >=22.0.0} - tinyrainbow@3.1.1: - resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + tinyrainbow@3.2.0: + resolution: {integrity: sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A==} engines: {node: '>=14.0.0'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - token-types@6.1.2: - resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} - engines: {node: '>=14.16'} - toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} @@ -5980,9 +5418,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - truncate-utf8-bytes@1.0.2: - resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - ts-algebra@2.0.0: resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} @@ -5996,26 +5431,16 @@ packages: resolution: {integrity: sha512-133O+10nJmVI8w5xeVZPEv5PIrv7iaUae07wv1aH8XJH95Ur6YIhWAPhPyP1YPlbPS9fCVcNIZTu7m8urRVF0A==} engines: {node: '>=14.13.1'} - ts-essentials@10.0.3: - resolution: {integrity: sha512-/FrVAZ76JLTWxJOERk04fm8hYENDo0PWSP3YLQKxevLwWtxemGcl5JJEzN4iqfDlRve0ckyfFaOBu4xbNH/wZw==} - peerDependencies: - typescript: '>=4.5.0' - peerDependenciesMeta: - typescript: - optional: true - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.22.4: - resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} + tsx@4.23.15: + resolution: {integrity: sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==} engines: {node: '>=18.0.0'} hasBin: true - tsx@4.23.12: - resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==} - engines: {node: '>=18.0.0'} - hasBin: true + turnstile-types@1.2.3: + resolution: {integrity: sha512-EDjhDB9TDwda2JRbhzO/kButPio3JgrC3gXMVAMotxldybTCJQVMvPNJ89rcAiN9vIrCb2i1E+VNBCqB8wue0A==} tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} @@ -6028,30 +5453,15 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - typebox@1.3.14: - resolution: {integrity: sha512-uD3FHZb4St/7E7eY0YANSt+yZABDDlbeJbXhUU17x2GZLyHUiQ6+mxSpZhZtnJSjKy/7PZ49r7SDZHG4F3JsLw==} - - typedoc-plugin-coverage@4.0.3: - resolution: {integrity: sha512-baim3wyMkqpX7rBzL/6iZ7wzKJuSr9ffP16RHOsdTUNoHUZeXLIZHSUBtUhXmNHaUNRgfqdmKLBwyggbJjGdeQ==} - engines: {node: '>= 18'} - peerDependencies: - typedoc: 0.28.x - - typedoc-plugin-markdown@4.12.0: - resolution: {integrity: sha512-eJDEMAfxCmede22c/Jw7d0FA13ggAQv+KkwQYKYCdqI02cin6Rc9QRwbG/7XvvHWinuFejySnZVUWDtvGk3Vbg==} - engines: {node: '>= 18'} - peerDependencies: - typedoc: 0.28.x + type-fest@5.10.0: + resolution: {integrity: sha512-NoSdpq/WEiAg5sjmBkmV/hfxv6HJH4NqPNrqjtSO5CwRmpsDfaf4begxW34KdJykH/l1yHtwBWQkCRdoXO8mPA==} + engines: {node: '>=20'} - typedoc@0.28.20: - resolution: {integrity: sha512-uSKqkh8Cr48vllnEy+jdaAgOeR6Y+QCBW7usgUsKj7gJEfR7stw9U/fE49LBnj2tPRKPY0c0EBJSWe9Appmplg==} - engines: {node: '>= 18', pnpm: '>= 10'} - hasBin: true - peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x + typebox@1.4.2: + resolution: {integrity: sha512-eSoZzgSIyOKDtTH9MI7XMAxMaiXq7UiSFWarysN1ka66baTLDxAVdQ6WkWn6qDqsJFVrcjzvuP+CqHo9yrlQpg==} - typescript-eslint@8.67.0: - resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} + typescript-eslint@8.72.0: + resolution: {integrity: sha512-r26Fkc8As+mZvqp7SLsMmNFyYUup/6CjK7/eHBHmhOw6GH6n6YFxHVFrG0jN1c5CMpDzelLPxvgeCOzx7BjN+A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -6062,20 +5472,21 @@ packages: engines: {node: '>=14.17'} hasBin: true - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - uint8array-extras@1.5.0: - resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} - engines: {node: '>=18'} - - undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} undici@7.29.0: resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} engines: {node: '>=20.18.1'} + undici@7.29.1: + resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} + engines: {node: '>=20.18.1'} + + undici@7.30.1: + resolution: {integrity: sha512-03KrMbjIFDWQR5RNPrSw3bd1r12JpyFQl9/yxjUbJtqkjmllqC5lFjZh6ujeuJCKr8EOQvRW872Oy/az+nLYxg==} + engines: {node: '>=20.18.1'} + unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} @@ -6083,27 +5494,20 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + update-browserslist-db@1.3.4: + resolution: {integrity: sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -6111,33 +5515,15 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - use-context-selector@2.0.0: - resolution: {integrity: sha512-owfuSmUNd3eNp3J9CdDl0kMgfidV+MkDvHPpvthN5ThqM+ibMccNE0k+Iq7TWC6JPFvGZqanqiGCuQx6DyV24g==} - peerDependencies: - react: '>=18.0.0' - scheduler: '>=0.19.0' - - use-isomorphic-layout-effect@1.2.1: - resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - utf8-byte-length@1.0.5: - resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@13.0.2: - resolution: {integrity: sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==} + uuid@14.0.3: + resolution: {integrity: sha512-Sc5u1VVln93y1Xnz4R+CunOZc7R9LUcTmhj7Rc7Eg3HVcf7rVn2FOoa812fe0W8p3jD7xeoGSYbfqCGGH2B6xw==} hasBin: true - valibot@1.4.2: - resolution: {integrity: sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg==} + valibot@1.5.0: + resolution: {integrity: sha512-nil6AkP2TChWL43Z5uJ6GTxX01CUA+g8LWUM+N/rB9NBbkUMaUsi9PUNzlUPgoKASgmx9f7eGOYpJ04/fSa6FQ==} peerDependencies: typescript: '>=5' peerDependenciesMeta: @@ -6154,16 +5540,20 @@ packages: peerDependencies: svelte: ^5.0.0 - vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + verkit@0.5.0: + resolution: {integrity: sha512-u4J1hr6Y+C/hit34GwL3eIcUf3wngT8TlYUjK7tk0jxydKLAq3sYvifjdTDA6U3KCKRcQCQDGf/srjxfZF3l7g==} + engines: {node: '>=18.12.0'} + + vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - vite@8.2.2: - resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==} + vite@8.3.4: + resolution: {integrity: sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.4.0 || ^0.5.0 + '@vitejs/devtools': ^0.7.1 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -6208,29 +5598,29 @@ packages: vite: optional: true - vitest-browser-svelte@3.0.0: - resolution: {integrity: sha512-BKM9iBGNsEQzigWuSZFAiw6AJDqQqMttApoD8gM8LTI6vxfd423rDMN8GqUHJyGbhH3XcOo9N9u/4hu47Nxhsw==} + vitest-browser-svelte@3.1.0: + resolution: {integrity: sha512-+EBXSed6NArmzOC2DY4v9sI5n9TMIyfkMnewbXNQ7sR5IckQTCx7g1BbLdkH7kzm/tkgG/eEbRYlMWSbVfBtWA==} peerDependencies: svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 - vitest: ^4.0.0 + vitest: ^4.0.0 || ^5.0.0 - vitest@4.1.11: - resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.5: + resolution: {integrity: sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.11 - '@vitest/browser-preview': 4.1.11 - '@vitest/browser-webdriverio': 4.1.11 - '@vitest/coverage-istanbul': 4.1.11 - '@vitest/coverage-v8': 4.1.11 - '@vitest/ui': 4.1.11 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.5 + '@vitest/browser-preview': 5.0.5 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.5 + '@vitest/coverage-v8': 5.0.5 + '@vitest/ui': 5.0.5 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -6255,13 +5645,12 @@ packages: jsdom: optional: true + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -6270,9 +5659,9 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + why-is-node-running@3.2.1: + resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==} + engines: {node: '>=20.11'} hasBin: true word-wrap@1.2.5: @@ -6284,10 +5673,6 @@ packages: engines: {node: '>=16'} hasBin: true - worktop@0.8.0-next.18: - resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==} - engines: {node: '>=12'} - wrangler@4.134.0: resolution: {integrity: sha512-65JbYVGSt0XpPH8O/y6pNuS0t+AvvwVv+VRPbqYsNI5NMF9oFiJxVoS5GYU47ooamF9ucSXWvGyQ6QnAtXLgRA==} engines: {node: '>=22.0.0'} @@ -6302,9 +5687,6 @@ packages: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.21.0: resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} @@ -6317,18 +5699,27 @@ packages: utf-8-validate: optional: true - wsl-utils@0.1.0: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} - engines: {node: '>=18'} + ws@8.22.0: + resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==} + 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 - xss@1.0.15: - resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} - engines: {node: '>= 0.10.0'} - hasBin: true + wsl-utils@1.0.1: + resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} + engines: {node: '>=20'} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + 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==} @@ -6341,8 +5732,8 @@ packages: resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} - yaml@2.9.0: - resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} engines: {node: '>= 14.6'} hasBin: true @@ -6350,24 +5741,20 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@18.1.0: - resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yjs@13.6.31: - resolution: {integrity: sha512-Eq+5BRfbeGyqGVrTJL3bEcr8gKkxPuyuoHmAwpk52fDb8kOVMrfVSTRPd6yiGgX5Fskb96qCRjzjbRjrL4YEnw==} + yjs@13.6.33: + resolution: {integrity: sha512-q/UYvr1gOk4XII+Cu1CW2dINjYqJJFifTzogEaIARznrvX7uOlHsdTEXcnOBMuIsrCGEEKdNxi74kyMLZlKVfw==} 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'} - - yocto-spinner@0.2.3: - resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} + yocto-spinner@1.2.2: + resolution: {integrity: sha512-DODGl1wJjA/s5pnJFKau9lIYHT81lnhob1i3e1TjxZRxEhWRKl74nTbWE6H5KlkViQQTo/Z29YFdxzTZAMY3ng==} engines: {node: '>=18.19'} yoctocolors@2.2.0: @@ -6383,58 +5770,25 @@ packages: yup@1.7.1: resolution: {integrity: sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==} - zimmerframe@1.1.4: - resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + zimmerframe@1.1.5: + resolution: {integrity: sha512-msJxIvYDYcoNL+PJsu+7qmpDWsYmAxTY+2TNYXXF0hzBzBk0BMecOqDOG/EckUoKCuKwObfbugIl8QpqHDXeFA==} zod-v3-to-json-schema@4.0.0: resolution: {integrity: sha512-KixLrhX/uPmRFnDgsZrzrk4x5SSJA+PmaE5adbfID9+3KPJcdxqRobaHU397EfWBqfQircrjKqvEqZ/mW5QH6w==} peerDependencies: zod: ^3.25 || ^4.0.14 - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + zod@4.6.7: + resolution: {integrity: sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==} snapshots: - '@apidevtools/json-schema-ref-parser@11.9.3': - dependencies: - '@jsdevtools/ono': 7.1.3 - '@types/json-schema': 7.0.15 - js-yaml: 4.3.1 - - '@apm-js-collab/code-transformer-bundler-plugins@0.7.4': - dependencies: - '@apm-js-collab/code-transformer': 0.18.1 - es-module-lexer: 2.3.1 - magic-string: 0.30.21 - module-details-from-path: 1.0.4 - - '@apm-js-collab/code-transformer@0.18.1': - dependencies: - '@types/estree': 1.0.9 - astring: 1.9.0 - esquery: 1.7.0 - meriyah: 6.1.4 - semifies: 1.0.0 - source-map: 0.6.1 - - '@apm-js-collab/tracing-hooks@0.13.0': - dependencies: - '@apm-js-collab/code-transformer': 0.18.1 - debug: 4.4.3(supports-color@7.2.0) - module-details-from-path: 1.0.4 - transitivePeerDependencies: - - supports-color - - '@ark/schema@0.56.2': + '@ark/schema@0.56.7': dependencies: - '@ark/util': 0.56.2 + '@ark/util': 0.56.7 optional: true - '@ark/util@0.56.2': + '@ark/util@0.56.7': optional: true '@babel/code-frame@7.29.7': @@ -6451,10 +5805,10 @@ snapshots: '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/helpers': 7.29.10 + '@babel/parser': 7.29.9 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -6467,7 +5821,7 @@ snapshots: '@babel/generator@7.29.8': dependencies: - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -6481,7 +5835,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.6 + browserslist: 4.29.4 lru-cache: 5.1.1 semver: 6.3.1 @@ -6493,7 +5847,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6502,14 +5856,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -6519,7 +5873,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -6534,13 +5888,13 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2) '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -6551,12 +5905,12 @@ snapshots: '@babel/helper-validator-option@7.29.7': {} - '@babel/helpers@7.29.7': + '@babel/helpers@7.29.10': dependencies: '@babel/template': 7.29.7 '@babel/types': 7.29.8 - '@babel/parser@7.29.8': + '@babel/parser@7.29.9': dependencies: '@babel/types': 7.29.8 @@ -6607,7 +5961,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-transform-typescript@7.29.9(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 @@ -6637,24 +5991,25 @@ snapshots: '@babel/helper-validator-option': 7.29.7 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-typescript': 7.29.9(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/runtime@7.29.7': {} + '@babel/runtime@7.29.10': + optional: true '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - '@babel/traverse@7.29.8(supports-color@10.2.2)': + '@babel/traverse@7.29.10(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/template': 7.29.7 '@babel/types': 7.29.8 debug: 4.4.3(supports-color@10.2.2) @@ -6668,82 +6023,92 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@better-auth/api-key@1.6.29(b8697cce37a9876f9b0dbea1e5f702b4)': + '@better-auth/api-key@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(better-auth@1.7.12(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5))(better-call@1.4.4(zod@4.6.7))': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 - better-auth: 1.6.29(@opentelemetry/api@1.9.1)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11) - better-call: 1.4.0(zod@4.4.3) - zod: 4.4.3 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 + better-auth: 1.7.12(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5) + better-call: 1.4.4(zod@4.6.7) + zod: 4.6.7 - '@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2)': + '@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5)': dependencies: - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - '@opentelemetry/semantic-conventions': 1.43.0 + '@better-auth/utils': 0.5.0 + '@better-fetch/fetch': 1.3.2 '@standard-schema/spec': 1.1.0 - better-call: 1.4.0(zod@4.4.3) - jose: 6.2.8 - kysely: 0.29.5 - nanostores: 1.4.2 - zod: 4.4.3 - optionalDependencies: - '@opentelemetry/api': 1.9.1 + better-call: 1.4.4(zod@4.6.7) + jose: 6.2.13 + kysely: 0.29.7 + nanostores: 1.5.5 + zod: 4.6.7 - '@better-auth/drizzle-adapter@1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))': + '@better-auth/drizzle-adapter@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 optionalDependencies: - drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9) + drizzle-orm: 0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9) - '@better-auth/kysely-adapter@1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.5)': + '@better-auth/kysely-adapter@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(kysely@0.29.7)': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 optionalDependencies: - kysely: 0.29.5 + kysely: 0.29.7 - '@better-auth/memory-adapter@1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)': + '@better-auth/memory-adapter@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 - '@better-auth/mongo-adapter@1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)': + '@better-auth/mongo-adapter@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 - '@better-auth/prisma-adapter@1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)': + '@better-auth/prisma-adapter@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 - '@better-auth/telemetry@1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)': + '@better-auth/telemetry@1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)': dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/utils': 0.5.0 + '@better-fetch/fetch': 1.3.2 - '@better-auth/utils@0.4.2': + '@better-auth/utils@0.5.0': dependencies: - '@noble/hashes': 2.3.0 + '@noble/hashes': 2.4.0 - '@better-auth/utils@0.5.0': + '@better-captcha/core@0.8.0': {} + + '@better-captcha/svelte@0.8.0(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - '@noble/hashes': 2.3.0 + '@better-captcha/core': 0.8.0 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + + '@better-fetch/fetch@1.3.2': {} - '@better-fetch/fetch@1.3.1': {} + '@blazediff/core@1.10.0': {} - '@blazediff/core@1.9.1': {} + '@cacheable/memory@2.2.0': + dependencies: + '@cacheable/utils': 2.5.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 - '@borewit/text-codec@0.2.2': {} + '@cacheable/utils@2.5.0': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 - '@changesets/apply-release-plan@8.0.0': + '@changesets/apply-release-plan@8.1.1': dependencies: - '@changesets/config': 4.0.0 + '@changesets/config': 4.0.1 '@changesets/format': 0.1.2 - '@changesets/git': 4.0.0 + '@changesets/git': 4.0.1 '@changesets/should-skip-package': 1.0.0 '@changesets/types': 7.0.0 import-meta-resolve: 4.2.0 @@ -6762,44 +6127,44 @@ snapshots: dependencies: '@changesets/types': 7.0.0 - '@changesets/cli@3.0.1': + '@changesets/cli@3.0.3': dependencies: - '@changesets/apply-release-plan': 8.0.0 + '@changesets/apply-release-plan': 8.1.1 '@changesets/assemble-release-plan': 7.0.0 '@changesets/changelog-git': 1.0.0 - '@changesets/config': 4.0.0 + '@changesets/config': 4.0.1 '@changesets/errors': 1.0.0 '@changesets/get-dependents-graph': 3.0.0 - '@changesets/git': 4.0.0 + '@changesets/git': 4.0.1 '@changesets/pre': 3.0.0 - '@changesets/read': 1.0.0 + '@changesets/read': 1.0.1 '@changesets/should-skip-package': 1.0.0 '@changesets/types': 7.0.0 '@changesets/write': 1.0.1 - '@clack/prompts': 1.7.0 + '@clack/prompts': 1.8.1 '@manypkg/get-packages': 3.1.0 '@pnpm/deps.graph-sequencer': 1100.0.1 - cac: 7.0.0 + cac: 7.1.0 import-meta-resolve: 4.2.0 - launch-editor: 2.14.1 - package-manager-detector: 1.8.0 + launch-editor: 2.14.2 + package-manager-detector: 1.9.0 semver: 7.8.5 - tinyexec: 1.3.0 + tinyexec: 1.3.1 - '@changesets/config@4.0.0': + '@changesets/config@4.0.1': dependencies: '@changesets/get-dependents-graph': 3.0.0 '@changesets/should-skip-package': 1.0.0 '@changesets/types': 7.0.0 '@manypkg/get-packages': 3.1.0 - picomatch: 4.0.5 + picomatch: 4.0.7 '@changesets/errors@1.0.0': {} '@changesets/format@0.1.2': dependencies: - package-manager-detector: 1.8.0 - tinyexec: 1.3.0 + package-manager-detector: 1.9.0 + tinyexec: 1.3.1 '@changesets/get-dependents-graph@3.0.0': dependencies: @@ -6813,18 +6178,18 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/git@4.0.0': + '@changesets/git@4.0.1': dependencies: '@changesets/errors': 1.0.0 '@changesets/types': 7.0.0 '@manypkg/get-packages': 3.1.0 - picomatch: 4.0.5 - tinyexec: 1.3.0 + picomatch: 4.0.7 + tinyexec: 1.3.1 '@changesets/parse@1.0.0': dependencies: '@changesets/types': 7.0.0 - yaml: 2.9.0 + yaml: 2.9.1 '@changesets/pre@3.0.0': dependencies: @@ -6832,9 +6197,9 @@ snapshots: '@changesets/types': 7.0.0 '@manypkg/get-packages': 3.1.0 - '@changesets/read@1.0.0': + '@changesets/read@1.0.1': dependencies: - '@changesets/git': 4.0.0 + '@changesets/git': 4.0.1 '@changesets/parse': 1.0.0 '@changesets/types': 7.0.0 @@ -6850,31 +6215,31 @@ snapshots: dependencies: '@changesets/format': 0.1.2 '@changesets/types': 7.0.0 - human-id: 4.2.1 + human-id: 4.2.2 - '@chevrotain/cst-dts-gen@10.5.0': + '@chevrotain/cst-dts-gen@12.0.0': dependencies: - '@chevrotain/gast': 10.5.0 - '@chevrotain/types': 10.5.0 - lodash: 4.17.21 + '@chevrotain/gast': 12.0.0 + '@chevrotain/types': 12.0.0 - '@chevrotain/gast@10.5.0': + '@chevrotain/gast@12.0.0': dependencies: - '@chevrotain/types': 10.5.0 - lodash: 4.17.21 + '@chevrotain/types': 12.0.0 - '@chevrotain/types@10.5.0': {} + '@chevrotain/regexp-to-ast@12.0.0': {} - '@chevrotain/utils@10.5.0': {} + '@chevrotain/types@12.0.0': {} - '@clack/core@1.4.3': + '@chevrotain/utils@12.0.0': {} + + '@clack/core@1.5.1': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.7.0': + '@clack/prompts@1.8.1': dependencies: - '@clack/core': 1.4.3 + '@clack/core': 1.5.1 fast-string-width: 3.0.2 fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 @@ -6902,109 +6267,107 @@ snapshots: '@cloudflare/workerd-windows-64@1.20260917.1': optional: true - '@cloudflare/workers-types@4.20260702.1': {} + '@cloudflare/workers-types@5.20261019.1': {} '@commander-js/extra-typings@15.0.0(commander@15.0.0)': dependencies: commander: 15.0.0 - '@commitlint/cli@21.2.2(@types/node@26.2.0)(conventional-commits-parser@7.1.2)(typescript@6.0.3)': + '@commitlint/cli@21.2.4(conventional-commits-parser@7.1.3)(typescript@6.0.3)': dependencies: - '@commitlint/config-conventional': 21.2.2 - '@commitlint/format': 21.2.2 - '@commitlint/lint': 21.2.2 - '@commitlint/load': 21.2.2(@types/node@26.2.0)(typescript@6.0.3) - '@commitlint/read': 21.2.1(conventional-commits-parser@7.1.2) - '@commitlint/types': 21.2.0 - tinyexec: 1.3.0 - yargs: 18.1.0 + '@commitlint/config-conventional': 21.2.4 + '@commitlint/format': 21.2.3 + '@commitlint/lint': 21.2.4 + '@commitlint/load': 21.2.4(typescript@6.0.3) + '@commitlint/read': 21.2.3(conventional-commits-parser@7.1.3) + '@commitlint/types': 21.2.3 + tinyexec: 1.3.1 + yargs: 18.2.0 transitivePeerDependencies: - - '@types/node' - conventional-commits-filter - conventional-commits-parser - typescript - '@commitlint/config-conventional@21.2.2': + '@commitlint/config-conventional@21.2.4': dependencies: - '@commitlint/types': 21.2.0 - conventional-changelog-conventionalcommits: 10.3.0 + '@commitlint/types': 21.2.3 + conventional-changelog-conventionalcommits: 10.4.1 - '@commitlint/config-validator@21.2.0': + '@commitlint/config-validator@21.2.3': dependencies: - '@commitlint/types': 21.2.0 + '@commitlint/types': 21.2.3 ajv: 8.20.0 - '@commitlint/ensure@21.2.0': + '@commitlint/ensure@21.2.4': dependencies: - '@commitlint/types': 21.2.0 - es-toolkit: 1.50.0 + '@commitlint/types': 21.2.3 + es-toolkit: 1.52.0 '@commitlint/execute-rule@21.0.1': {} - '@commitlint/format@21.2.2': + '@commitlint/format@21.2.3': dependencies: - '@commitlint/types': 21.2.0 + '@commitlint/types': 21.2.3 picocolors: 1.1.1 - '@commitlint/is-ignored@21.2.2': + '@commitlint/is-ignored@21.2.3': dependencies: - '@commitlint/types': 21.2.0 + '@commitlint/types': 21.2.3 semver: 7.8.5 - '@commitlint/lint@21.2.2': + '@commitlint/lint@21.2.4': dependencies: - '@commitlint/is-ignored': 21.2.2 - '@commitlint/parse': 21.2.2 - '@commitlint/rules': 21.2.2 - '@commitlint/types': 21.2.0 + '@commitlint/is-ignored': 21.2.3 + '@commitlint/parse': 21.2.3 + '@commitlint/rules': 21.2.4 + '@commitlint/types': 21.2.3 - '@commitlint/load@21.2.2(@types/node@26.2.0)(typescript@6.0.3)': + '@commitlint/load@21.2.4(typescript@6.0.3)': dependencies: - '@commitlint/config-validator': 21.2.0 + '@commitlint/config-validator': 21.2.3 '@commitlint/execute-rule': 21.0.1 - '@commitlint/resolve-extends': 21.2.2 - '@commitlint/types': 21.2.0 + '@commitlint/resolve-extends': 21.2.3 + '@commitlint/types': 21.2.3 cosmiconfig: 9.0.2(typescript@6.0.3) - cosmiconfig-typescript-loader: 6.3.0(@types/node@26.2.0)(cosmiconfig@9.0.2(typescript@6.0.3))(typescript@6.0.3) - es-toolkit: 1.50.0 + es-toolkit: 1.52.0 is-plain-obj: 4.1.0 + jiti: 2.7.0 picocolors: 1.1.1 transitivePeerDependencies: - - '@types/node' - typescript '@commitlint/message@21.2.0': {} - '@commitlint/parse@21.2.2': + '@commitlint/parse@21.2.3': dependencies: - '@commitlint/types': 21.2.0 - conventional-changelog-angular: 9.3.0 - conventional-commits-parser: 7.1.2 + '@commitlint/types': 21.2.3 + conventional-changelog-angular: 9.4.0 + conventional-commits-parser: 7.1.3 - '@commitlint/read@21.2.1(conventional-commits-parser@7.1.2)': + '@commitlint/read@21.2.3(conventional-commits-parser@7.1.3)': dependencies: '@commitlint/top-level': 21.2.0 - '@commitlint/types': 21.2.0 - '@conventional-changelog/git-client': 3.1.2(conventional-commits-parser@7.1.2) - tinyexec: 1.3.0 + '@commitlint/types': 21.2.3 + '@conventional-changelog/git-client': 3.2.0(conventional-commits-parser@7.1.3) + tinyexec: 1.3.1 transitivePeerDependencies: - conventional-commits-filter - conventional-commits-parser - '@commitlint/resolve-extends@21.2.2': + '@commitlint/resolve-extends@21.2.3': dependencies: - '@commitlint/config-validator': 21.2.0 - '@commitlint/types': 21.2.0 - es-toolkit: 1.50.0 + '@commitlint/config-validator': 21.2.3 + '@commitlint/types': 21.2.3 + es-toolkit: 1.52.0 global-directory: 5.0.0 resolve-from: 5.0.0 - '@commitlint/rules@21.2.2': + '@commitlint/rules@21.2.4': dependencies: - '@commitlint/ensure': 21.2.0 + '@commitlint/ensure': 21.2.4 '@commitlint/message': 21.2.0 '@commitlint/to-lines': 21.0.1 - '@commitlint/types': 21.2.0 + '@commitlint/types': 21.2.3 '@commitlint/to-lines@21.0.1': {} @@ -7012,179 +6375,78 @@ snapshots: dependencies: escalade: 3.2.0 - '@commitlint/types@21.2.0': + '@commitlint/types@21.2.3': dependencies: - conventional-commits-parser: 7.1.2 + conventional-commits-parser: 7.1.3 picocolors: 1.1.1 - '@conventional-changelog/git-client@3.1.2(conventional-commits-parser@7.1.2)': + '@conventional-changelog/git-client@3.2.0(conventional-commits-parser@7.1.3)': dependencies: '@simple-libs/child-process-utils': 2.0.0 '@simple-libs/stream-utils': 2.0.0 - semver: 7.8.5 + verkit: 0.5.0 optionalDependencies: - conventional-commits-parser: 7.1.2 + conventional-commits-parser: 7.1.3 - '@conventional-changelog/template@1.3.0': {} + '@conventional-changelog/template@1.4.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@date-fns/tz@1.2.0': {} - '@date-fns/tz@1.5.0': {} - '@dnd-kit/abstract@0.5.0': - dependencies: - '@dnd-kit/geometry': 0.5.0 - '@dnd-kit/state': 0.5.0 - tslib: 2.8.1 - - '@dnd-kit/accessibility@3.1.1(react@19.2.7)': - dependencies: - react: 19.2.7 - tslib: 2.8.1 - - '@dnd-kit/collision@0.5.0': - dependencies: - '@dnd-kit/abstract': 0.5.0 - '@dnd-kit/geometry': 0.5.0 - tslib: 2.8.1 - - '@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.7) - '@dnd-kit/utilities': 3.2.2(react@19.2.7) - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - tslib: 2.8.1 - - '@dnd-kit/dom@0.5.0': + '@dnd-kit/abstract@0.5.1': dependencies: - '@dnd-kit/abstract': 0.5.0 - '@dnd-kit/collision': 0.5.0 - '@dnd-kit/geometry': 0.5.0 - '@dnd-kit/state': 0.5.0 + '@dnd-kit/geometry': 0.5.1 + '@dnd-kit/state': 0.5.1 tslib: 2.8.1 - '@dnd-kit/geometry@0.5.0': + '@dnd-kit/collision@0.5.1': dependencies: - '@dnd-kit/state': 0.5.0 + '@dnd-kit/abstract': 0.5.1 + '@dnd-kit/geometry': 0.5.1 tslib: 2.8.1 - '@dnd-kit/helpers@0.5.0': + '@dnd-kit/dom@0.5.1': dependencies: - '@dnd-kit/abstract': 0.5.0 + '@dnd-kit/abstract': 0.5.1 + '@dnd-kit/collision': 0.5.1 + '@dnd-kit/geometry': 0.5.1 + '@dnd-kit/state': 0.5.1 tslib: 2.8.1 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': + '@dnd-kit/geometry@0.5.1': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@dnd-kit/utilities': 3.2.2(react@19.2.7) - react: 19.2.7 + '@dnd-kit/state': 0.5.1 tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': + '@dnd-kit/helpers@0.5.1': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@dnd-kit/utilities': 3.2.2(react@19.2.7) - react: 19.2.7 + '@dnd-kit/abstract': 0.5.1 tslib: 2.8.1 - '@dnd-kit/state@0.5.0': + '@dnd-kit/state@0.5.1': dependencies: '@preact/signals-core': 1.14.4 tslib: 2.8.1 - '@dnd-kit/svelte@0.5.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))': + '@dnd-kit/svelte@0.5.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - '@dnd-kit/abstract': 0.5.0 - '@dnd-kit/dom': 0.5.0 - '@dnd-kit/state': 0.5.0 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - tslib: 2.8.1 - - '@dnd-kit/utilities@3.2.2(react@19.2.7)': - dependencies: - react: 19.2.7 + '@dnd-kit/abstract': 0.5.1 + '@dnd-kit/dom': 0.5.1 + '@dnd-kit/state': 0.5.1 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) tslib: 2.8.1 '@drizzle-team/brocli@0.10.2': {} - '@emnapi/runtime@1.11.1': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true - '@emotion/babel-plugin@11.13.5(supports-color@10.2.2)': - dependencies: - '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@babel/runtime': 7.29.7 - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/serialize': 1.3.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/cache@11.14.0': - dependencies: - '@emotion/memoize': 0.9.0 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - stylis: 4.2.0 - - '@emotion/hash@0.9.2': {} - - '@emotion/memoize@0.9.0': {} - - '@emotion/react@11.14.0(@types/react@19.2.16)(react@19.2.7)(supports-color@10.2.2)': - dependencies: - '@babel/runtime': 7.29.7 - '@emotion/babel-plugin': 11.13.5(supports-color@10.2.2) - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.7) - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - hoist-non-react-statics: 3.3.2 - react: 19.2.7 - optionalDependencies: - '@types/react': 19.2.16 - transitivePeerDependencies: - - supports-color - - '@emotion/serialize@1.3.3': - dependencies: - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.10.0 - '@emotion/utils': 1.4.2 - csstype: 3.2.3 - - '@emotion/sheet@1.4.0': {} - - '@emotion/unitless@0.10.0': {} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@emotion/utils@1.4.2': {} - - '@emotion/weak-memoize@0.4.0': {} + '@emoji-mart/data@1.2.1': {} '@esbuild-kit/core-utils@3.3.2': dependencies: @@ -7194,7 +6456,7 @@ snapshots: '@esbuild-kit/esm-loader@2.6.5': dependencies: '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.14.2 + get-tsconfig: 4.14.3 '@esbuild/aix-ppc64@0.25.12': optional: true @@ -7496,17 +6758,17 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.5(supports-color@7.2.0)': + '@eslint/config-array@0.23.5(supports-color@10.2.2)': dependencies: '@eslint/object-schema': 3.0.5 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 transitivePeerDependencies: - supports-color @@ -7515,41 +6777,40 @@ snapshots: dependencies: '@eslint/core': 1.2.1 + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint/js@10.0.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))': optionalDependencies: - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) '@eslint/object-schema@3.0.5': {} - '@eslint/plugin-kit@0.7.2': + '@eslint/plugin-kit@0.7.3': dependencies: '@eslint/core': 1.2.1 levn: 0.4.1 - '@exodus/schemasafe@1.3.0': - optional: true - - '@faceless-ui/modal@3.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@evlog/cli@0.11.0(evlog@2.33.1(react@19.3.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))': dependencies: - body-scroll-lock: 4.0.0-beta.0 - focus-trap: 7.5.4 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-transition-group: 4.4.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@clack/prompts': 1.8.1 + '@evlog/telemetry': 0.3.5 + citty: 0.2.2 + evlog: 2.33.1(react@19.3.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + oxc-parser: 0.152.0 - '@faceless-ui/scroll-info@2.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@evlog/telemetry@0.3.5': dependencies: - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) + citty: 0.2.2 + std-env: 4.3.0 - '@faceless-ui/window-info@3.0.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) + '@exodus/schemasafe@1.3.0': + optional: true '@floating-ui/core@1.8.0': dependencies: @@ -7560,20 +6821,6 @@ snapshots: '@floating-ui/core': 1.8.0 '@floating-ui/utils': 0.2.12 - '@floating-ui/react-dom@2.1.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - '@floating-ui/dom': 1.8.0 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - - '@floating-ui/react@0.27.20(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - '@floating-ui/react-dom': 2.1.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@floating-ui/utils': 0.2.12 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - tabbable: 6.5.0 - '@floating-ui/utils@0.2.12': {} '@fontsource-variable/geist-mono@5.3.0': {} @@ -7582,14 +6829,6 @@ snapshots: '@fontsource/unifontex@5.3.0': {} - '@gerrit0/mini-shiki@3.23.0': - dependencies: - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@hapi/hoek@9.3.0': optional: true @@ -7616,21 +6855,11 @@ snapshots: '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - optional: true - '@img/sharp-darwin-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.3.3 optional: true - '@img/sharp-darwin-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - optional: true - '@img/sharp-darwin-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.3.3 @@ -7641,151 +6870,76 @@ snapshots: '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': - optional: true - '@img/sharp-libvips-darwin-arm64@1.3.3': optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': - optional: true - '@img/sharp-libvips-darwin-x64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': - optional: true - '@img/sharp-libvips-linux-arm64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': - optional: true - '@img/sharp-libvips-linux-arm@1.3.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': - optional: true - '@img/sharp-libvips-linux-ppc64@1.3.3': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': - optional: true - '@img/sharp-libvips-linux-riscv64@1.3.3': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': - optional: true - - '@img/sharp-libvips-linux-s390x@1.3.3': - optional: true - - '@img/sharp-libvips-linux-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.3.3': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + '@img/sharp-libvips-linux-x64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': optional: true '@img/sharp-libvips-linuxmusl-x64@1.3.3': optional: true - '@img/sharp-linux-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - optional: true - '@img/sharp-linux-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.3.3 optional: true - '@img/sharp-linux-arm@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - optional: true - '@img/sharp-linux-arm@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.3.3 optional: true - '@img/sharp-linux-ppc64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - optional: true - '@img/sharp-linux-ppc64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.3.3 optional: true - '@img/sharp-linux-riscv64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - optional: true - '@img/sharp-linux-riscv64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-riscv64': 1.3.3 optional: true - '@img/sharp-linux-s390x@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - optional: true - '@img/sharp-linux-s390x@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.3.3 optional: true - '@img/sharp-linux-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - optional: true - '@img/sharp-linux-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.3.3 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - optional: true - '@img/sharp-linuxmusl-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - optional: true - '@img/sharp-linuxmusl-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.3.3 optional: true - '@img/sharp-wasm32@0.34.5': - dependencies: - '@emnapi/runtime': 1.11.1 - optional: true - '@img/sharp-wasm32@0.35.4': dependencies: '@emnapi/runtime': 1.11.3 @@ -7796,31 +6950,22 @@ snapshots: '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-win32-arm64@0.34.5': - optional: true - '@img/sharp-win32-arm64@0.35.4': optional: true - '@img/sharp-win32-ia32@0.34.5': - optional: true - '@img/sharp-win32-ia32@0.35.4': optional: true - '@img/sharp-win32-x64@0.34.5': - optional: true - '@img/sharp-win32-x64@0.35.4': optional: true - '@internationalized/date@3.12.3': + '@internationalized/date@3.12.4': dependencies: '@swc/helpers': 0.5.23 '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -7830,190 +6975,29 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@jsdevtools/ono@7.1.3': {} - - '@lexical/clipboard@0.41.0': - dependencies: - '@lexical/html': 0.41.0 - '@lexical/list': 0.41.0 - '@lexical/selection': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/code@0.41.0': - dependencies: - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - prismjs: 1.30.0 - - '@lexical/devtools-core@0.41.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - '@lexical/html': 0.41.0 - '@lexical/link': 0.41.0 - '@lexical/mark': 0.41.0 - '@lexical/table': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - - '@lexical/dragon@0.41.0': - dependencies: - '@lexical/extension': 0.41.0 - lexical: 0.41.0 - - '@lexical/extension@0.41.0': - dependencies: - '@lexical/utils': 0.41.0 - '@preact/signals-core': 1.14.4 - lexical: 0.41.0 - - '@lexical/hashtag@0.41.0': - dependencies: - '@lexical/text': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/headless@0.41.0': - dependencies: - happy-dom: 20.11.2 - lexical: 0.41.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@lexical/history@0.41.0': - dependencies: - '@lexical/extension': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/html@0.41.0': - dependencies: - '@lexical/selection': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/link@0.41.0': - dependencies: - '@lexical/extension': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/list@0.41.0': - dependencies: - '@lexical/extension': 0.41.0 - '@lexical/selection': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/mark@0.41.0': - dependencies: - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/markdown@0.41.0': - dependencies: - '@lexical/code': 0.41.0 - '@lexical/link': 0.41.0 - '@lexical/list': 0.41.0 - '@lexical/rich-text': 0.41.0 - '@lexical/text': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/offset@0.41.0': - dependencies: - lexical: 0.41.0 - - '@lexical/overflow@0.41.0': - dependencies: - lexical: 0.41.0 - - '@lexical/plain-text@0.41.0': - dependencies: - '@lexical/clipboard': 0.41.0 - '@lexical/dragon': 0.41.0 - '@lexical/selection': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/react@0.41.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(yjs@13.6.31)': - dependencies: - '@floating-ui/react': 0.27.20(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@lexical/devtools-core': 0.41.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@lexical/dragon': 0.41.0 - '@lexical/extension': 0.41.0 - '@lexical/hashtag': 0.41.0 - '@lexical/history': 0.41.0 - '@lexical/link': 0.41.0 - '@lexical/list': 0.41.0 - '@lexical/mark': 0.41.0 - '@lexical/markdown': 0.41.0 - '@lexical/overflow': 0.41.0 - '@lexical/plain-text': 0.41.0 - '@lexical/rich-text': 0.41.0 - '@lexical/table': 0.41.0 - '@lexical/text': 0.41.0 - '@lexical/utils': 0.41.0 - '@lexical/yjs': 0.41.0(yjs@13.6.31) - lexical: 0.41.0 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-error-boundary: 6.1.2(react@19.2.7) - transitivePeerDependencies: - - yjs - - '@lexical/rich-text@0.41.0': - dependencies: - '@lexical/clipboard': 0.41.0 - '@lexical/dragon': 0.41.0 - '@lexical/selection': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 + '@jridgewell/sourcemap-codec': 1.6.0 - '@lexical/selection@0.41.0': + '@keyv/bigmap@1.3.1(keyv@5.6.0)': dependencies: - lexical: 0.41.0 + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 - '@lexical/table@0.41.0': - dependencies: - '@lexical/clipboard': 0.41.0 - '@lexical/extension': 0.41.0 - '@lexical/utils': 0.41.0 - lexical: 0.41.0 - - '@lexical/text@0.41.0': - dependencies: - lexical: 0.41.0 - - '@lexical/utils@0.41.0': - dependencies: - '@lexical/selection': 0.41.0 - lexical: 0.41.0 - - '@lexical/yjs@0.41.0(yjs@13.6.31)': - dependencies: - '@lexical/offset': 0.41.0 - '@lexical/selection': 0.41.0 - lexical: 0.41.0 - yjs: 13.6.31 + '@keyv/serialize@1.1.1': {} - '@lucide/svelte@1.33.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))': + '@lucide/svelte@1.60.0(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) '@manypkg/find-root@3.1.0': dependencies: @@ -8028,847 +7012,453 @@ snapshots: dependencies: jju: 1.4.0 tinyglobby: 0.2.17 - yaml: 2.9.0 - - '@monaco-editor/loader@1.7.0': - dependencies: - state-local: 1.0.7 - - '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - '@monaco-editor/loader': 1.7.0 - monaco-editor: 0.55.1 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) + yaml: 2.9.1 - '@mrleebo/prisma-ast@0.13.1': + '@mrleebo/prisma-ast@0.16.0': dependencies: - chevrotain: 10.5.0 + chevrotain: 12.0.0 lilconfig: 2.1.0 - '@napi-rs/lzma-linux-x64-gnu@1.5.1': - optional: true - - '@next/env@15.5.19': {} - - '@next/env@16.2.7': {} - - '@next/swc-darwin-arm64@16.2.7': - optional: true - - '@next/swc-darwin-x64@16.2.7': - optional: true - - '@next/swc-linux-arm64-gnu@16.2.7': - optional: true - - '@next/swc-linux-arm64-musl@16.2.7': - optional: true - - '@next/swc-linux-x64-gnu@16.2.7': - optional: true - - '@next/swc-linux-x64-musl@16.2.7': - optional: true - - '@next/swc-win32-arm64-msvc@16.2.7': - optional: true - - '@next/swc-win32-x64-msvc@16.2.7': - optional: true - - '@noble/ciphers@2.3.0': {} - - '@noble/hashes@2.3.0': {} + '@noble/ciphers@2.4.0': {} - '@opentelemetry/api-logs@0.220.0': - dependencies: - '@opentelemetry/api': 1.9.1 - - '@opentelemetry/api@1.9.1': {} - - '@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.43.0 - - '@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1)(supports-color@7.2.0)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.220.0 - import-in-the-middle: 3.3.3 - require-in-the-middle: 8.0.1(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color + '@noble/hashes@2.4.0': {} - '@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1)': + '@orval/angular@8.43.0': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - - '@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - - '@opentelemetry/sdk-trace@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - - '@opentelemetry/semantic-conventions@1.43.0': {} - - '@orval/angular@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/axios@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/axios@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/core@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/core@8.43.0': dependencies: - '@scalar/openapi-types': 0.9.4 - acorn: 8.18.0 + '@scalar/openapi-types': 0.9.7 + acorn: 8.19.0 compare-versions: 6.1.1 - debug: 4.4.3(supports-color@10.2.2) esbuild: 0.28.2 esutils: 2.0.3 - fs-extra: 11.4.0 jiti: 2.7.0 jsesc: 3.1.0 - remeda: 2.40.0 tinyglobby: 0.2.17 - typedoc: 0.28.20(typescript@6.0.3) - transitivePeerDependencies: - - supports-color - - typescript - '@orval/effect@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/effect@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - remeda: 2.40.0 + '@orval/core': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/fetch@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/fetch@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/hono@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/hono@8.43.0(typescript@6.0.3)(zod@4.6.7)': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/zod': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - fs-extra: 11.4.0 + '@orval/core': 8.43.0 + '@orval/zod': 8.43.0(zod@4.6.7) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - '@faker-js/faker' - - supports-color + - '@modelcontextprotocol/server' + - zod - '@orval/mcp@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/mcp@8.43.0(zod@4.6.7)': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/fetch': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/zod': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 + '@orval/fetch': 8.43.0 + '@orval/zod': 8.43.0(zod@4.6.7) transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - zod + + '@orval/mock@8.43.0': + dependencies: + '@orval/core': 8.43.0 + transitivePeerDependencies: + - '@modelcontextprotocol/server' - '@orval/mock@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/pinia-colada@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - remeda: 2.40.0 + '@orval/axios': 8.43.0 + '@orval/core': 8.43.0 + '@orval/fetch': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/query@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/query@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/fetch': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - remeda: 2.40.0 + '@orval/core': 8.43.0 + '@orval/fetch': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/solid-start@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/solid-start@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/swr@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/swr@8.43.0': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/fetch': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 + '@orval/fetch': 8.43.0 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' - '@orval/zod@8.24.0(supports-color@10.2.2)(typescript@6.0.3)': + '@orval/zod@8.43.0(zod@4.6.7)': dependencies: - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) + '@orval/core': 8.43.0 jsesc: 3.1.0 - remeda: 2.40.0 + optionalDependencies: + zod: 4.6.7 transitivePeerDependencies: - '@faker-js/faker' - - supports-color - - typescript + - '@modelcontextprotocol/server' '@oslojs/encoding@1.1.0': {} - '@oxc-project/types@0.146.0': {} - - '@oxfmt/binding-android-arm-eabi@0.64.0': + '@oxc-parser/binding-android-arm-eabi@0.148.0': optional: true - '@oxfmt/binding-android-arm64@0.64.0': + '@oxc-parser/binding-android-arm-eabi@0.152.0': optional: true - '@oxfmt/binding-darwin-arm64@0.64.0': + '@oxc-parser/binding-android-arm64@0.148.0': optional: true - '@oxfmt/binding-darwin-x64@0.64.0': + '@oxc-parser/binding-android-arm64@0.152.0': optional: true - '@oxfmt/binding-freebsd-x64@0.64.0': + '@oxc-parser/binding-darwin-arm64@0.148.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.64.0': + '@oxc-parser/binding-darwin-arm64@0.152.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.64.0': + '@oxc-parser/binding-darwin-x64@0.148.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.64.0': + '@oxc-parser/binding-darwin-x64@0.152.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.64.0': + '@oxc-parser/binding-freebsd-x64@0.148.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.64.0': + '@oxc-parser/binding-freebsd-x64@0.152.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.64.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.148.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.64.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.152.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.64.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.148.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.64.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.152.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.64.0': + '@oxc-parser/binding-linux-arm64-gnu@0.148.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.64.0': + '@oxc-parser/binding-linux-arm64-gnu@0.152.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.64.0': + '@oxc-parser/binding-linux-arm64-musl@0.148.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.64.0': + '@oxc-parser/binding-linux-arm64-musl@0.152.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.64.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.148.0': optional: true - '@payloadcms/graphql@3.88.0(graphql@16.14.1)(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(typescript@6.0.3)': - dependencies: - graphql: 16.14.1 - graphql-scalars: 1.22.2(graphql@16.14.1) - payload: 3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3) - pluralize: 8.0.0 - ts-essentials: 10.0.3(typescript@6.0.3) - tsx: 4.22.4 - transitivePeerDependencies: - - typescript - - '@payloadcms/next@3.88.0(@types/react@19.2.16)(graphql@16.14.1)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@dnd-kit/modifiers': 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) - '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) - '@payloadcms/graphql': 3.88.0(graphql@16.14.1)(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(typescript@6.0.3) - '@payloadcms/translations': 3.88.0 - '@payloadcms/ui': 3.88.0(@types/react@19.2.16)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3) - busboy: 1.6.0 - dequal: 2.0.3 - file-type: 21.3.4(supports-color@10.2.2) - graphql: 16.14.1 - graphql-http: 1.22.4(graphql@16.14.1) - graphql-playground-html: 1.6.30 - http-status: 2.1.0 - next: 16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4) - path-to-regexp: 6.3.0 - payload: 3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3) - qs-esm: 8.0.1 - sass: 1.77.4 - uuid: 13.0.2 - transitivePeerDependencies: - - '@types/react' - - monaco-editor - - react - - react-dom - - supports-color - - typescript - - ? '@payloadcms/richtext-lexical@3.88.0(@faceless-ui/modal@3.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@faceless-ui/scroll-info@2.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@payloadcms/next@3.88.0(@types/react@19.2.16)(graphql@16.14.1)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3))(@types/react@19.2.16)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3)(yjs@13.6.31)' - : dependencies: - '@faceless-ui/modal': 3.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@faceless-ui/scroll-info': 2.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@lexical/clipboard': 0.41.0 - '@lexical/headless': 0.41.0 - '@lexical/html': 0.41.0 - '@lexical/link': 0.41.0 - '@lexical/list': 0.41.0 - '@lexical/mark': 0.41.0 - '@lexical/react': 0.41.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(yjs@13.6.31) - '@lexical/rich-text': 0.41.0 - '@lexical/selection': 0.41.0 - '@lexical/table': 0.41.0 - '@lexical/utils': 0.41.0 - '@payloadcms/next': 3.88.0(@types/react@19.2.16)(graphql@16.14.1)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3) - '@payloadcms/translations': 3.88.0 - '@payloadcms/ui': 3.88.0(@types/react@19.2.16)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3) - acorn: 8.16.0 - bson-objectid: 2.0.4 - csstype: 3.1.3 - dequal: 2.0.3 - escape-html: 1.0.3 - jsox: 1.2.121 - lexical: 0.41.0 - mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) - mdast-util-mdx-jsx: 3.1.3(supports-color@10.2.2) - micromark-extension-mdx-jsx: 3.0.1 - payload: 3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3) - qs-esm: 8.0.1 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-error-boundary: 4.1.2(react@19.2.7) - ts-essentials: 10.0.3(typescript@6.0.3) - uuid: 13.0.2 - transitivePeerDependencies: - - '@types/react' - - bufferutil - - monaco-editor - - next - - supports-color - - typescript - - utf-8-validate - - yjs - - '@payloadcms/translations@3.88.0': - dependencies: - date-fns: 4.1.0 - - '@payloadcms/ui@3.88.0(@types/react@19.2.16)(monaco-editor@0.55.1)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@date-fns/tz': 1.2.0 - '@dnd-kit/core': 6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) - '@dnd-kit/utilities': 3.2.2(react@19.2.7) - '@faceless-ui/modal': 3.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@faceless-ui/scroll-info': 2.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@faceless-ui/window-info': 3.0.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@monaco-editor/react': 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@payloadcms/translations': 3.88.0 - bson-objectid: 2.0.4 - date-fns: 4.1.0 - dequal: 2.0.3 - md5: 2.3.0 - next: 16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4) - object-to-formdata: 4.5.1 - payload: 3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3) - qs-esm: 8.0.1 - react: 19.2.7 - react-datepicker: 7.6.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - react-dom: 19.2.7(react@19.2.7) - react-image-crop: 10.1.8(react@19.2.7) - react-select: 5.9.0(@types/react@19.2.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2) - scheduler: 0.25.0 - sonner: 1.7.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - ts-essentials: 10.0.3(typescript@6.0.3) - use-context-selector: 2.0.0(react@19.2.7)(scheduler@0.25.0) - uuid: 13.0.2 - transitivePeerDependencies: - - '@types/react' - - monaco-editor - - supports-color - - typescript - - '@pinojs/redact@0.4.0': {} - - '@playwright/test@1.62.1': - dependencies: - playwright: 1.62.1 - - '@pnpm/deps.graph-sequencer@1100.0.1': {} - - '@polka/url@1.0.0-next.29': {} - - '@poppinss/colors@4.1.6': - dependencies: - kleur: 4.1.5 - - '@poppinss/dumper@0.6.5': - dependencies: - '@poppinss/colors': 4.1.6 - '@sindresorhus/is': 7.2.0 - supports-color: 10.2.2 - - '@poppinss/exception@1.2.3': {} - - '@poppinss/macroable@1.1.2': + '@oxc-parser/binding-linux-ppc64-gnu@0.152.0': optional: true - '@preact/signals-core@1.14.4': {} - - '@rolldown/binding-android-arm-eabi@1.2.5': + '@oxc-parser/binding-linux-riscv64-gnu@0.148.0': optional: true - '@rolldown/binding-android-arm64@1.2.5': + '@oxc-parser/binding-linux-riscv64-gnu@0.152.0': optional: true - '@rolldown/binding-darwin-arm64@1.2.5': + '@oxc-parser/binding-linux-riscv64-musl@0.148.0': optional: true - '@rolldown/binding-darwin-x64@1.2.5': + '@oxc-parser/binding-linux-riscv64-musl@0.152.0': optional: true - '@rolldown/binding-freebsd-x64@1.2.5': + '@oxc-parser/binding-linux-s390x-gnu@0.148.0': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': + '@oxc-parser/binding-linux-s390x-gnu@0.152.0': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.5': + '@oxc-parser/binding-linux-x64-gnu@0.148.0': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.5': + '@oxc-parser/binding-linux-x64-gnu@0.152.0': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.5': + '@oxc-parser/binding-linux-x64-musl@0.148.0': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.5': + '@oxc-parser/binding-linux-x64-musl@0.152.0': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.5': + '@oxc-parser/binding-openharmony-arm64@0.148.0': optional: true - '@rolldown/binding-linux-x64-musl@1.2.5': + '@oxc-parser/binding-openharmony-arm64@0.152.0': optional: true - '@rolldown/binding-openharmony-arm64@1.2.5': + '@oxc-parser/binding-win32-arm64-msvc@0.148.0': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.5': + '@oxc-parser/binding-win32-arm64-msvc@0.152.0': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.5': + '@oxc-parser/binding-win32-ia32-msvc@0.148.0': optional: true - '@rolldown/pluginutils@1.0.1': {} - - '@rollup/plugin-commonjs@29.0.3(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.5) - is-reference: 1.2.1 - magic-string: 0.30.21 - picomatch: 4.0.5 - optionalDependencies: - rollup: 4.62.4 - - '@rollup/plugin-json@6.1.0(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - optionalDependencies: - rollup: 4.62.4 - - '@rollup/plugin-node-resolve@16.0.3(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.12 - optionalDependencies: - rollup: 4.62.4 - - '@rollup/plugin-replace@6.0.3(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - magic-string: 0.30.21 - optionalDependencies: - rollup: 4.62.4 - - '@rollup/pluginutils@5.4.0(rollup@4.62.4)': - dependencies: - '@types/estree': 1.0.9 - estree-walker: 2.0.2 - picomatch: 4.0.5 - optionalDependencies: - rollup: 4.62.4 - - '@rollup/rollup-android-arm-eabi@4.62.4': + '@oxc-parser/binding-win32-ia32-msvc@0.152.0': optional: true - '@rollup/rollup-android-arm64@4.62.4': + '@oxc-parser/binding-win32-x64-msvc@0.148.0': optional: true - '@rollup/rollup-darwin-arm64@4.62.4': + '@oxc-parser/binding-win32-x64-msvc@0.152.0': optional: true - '@rollup/rollup-darwin-x64@4.62.4': + '@oxc-project/types@0.148.0': optional: true - '@rollup/rollup-freebsd-arm64@4.62.4': - optional: true + '@oxc-project/types@0.152.0': {} - '@rollup/rollup-freebsd-x64@4.62.4': - optional: true + '@oxc-project/types@0.154.0': {} - '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + '@oxfmt/binding-android-arm-eabi@0.74.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.62.4': + '@oxfmt/binding-android-arm64@0.74.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.62.4': + '@oxfmt/binding-darwin-arm64@0.74.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.62.4': + '@oxfmt/binding-darwin-x64@0.74.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.62.4': + '@oxfmt/binding-freebsd-x64@0.74.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.62.4': + '@oxfmt/binding-linux-arm-gnueabihf@0.74.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.62.4': + '@oxfmt/binding-linux-arm-musleabihf@0.74.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.62.4': + '@oxfmt/binding-linux-arm64-gnu@0.74.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.62.4': + '@oxfmt/binding-linux-arm64-musl@0.74.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.62.4': + '@oxfmt/binding-linux-ppc64-gnu@0.74.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.62.4': + '@oxfmt/binding-linux-riscv64-gnu@0.74.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.62.4': + '@oxfmt/binding-linux-riscv64-musl@0.74.0': optional: true - '@rollup/rollup-linux-x64-musl@4.62.4': + '@oxfmt/binding-linux-s390x-gnu@0.74.0': optional: true - '@rollup/rollup-openbsd-x64@4.62.4': + '@oxfmt/binding-linux-x64-gnu@0.74.0': optional: true - '@rollup/rollup-openharmony-arm64@4.62.4': + '@oxfmt/binding-linux-x64-musl@0.74.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.62.4': + '@oxfmt/binding-openharmony-arm64@0.74.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.62.4': + '@oxfmt/binding-win32-arm64-msvc@0.74.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.62.4': + '@oxfmt/binding-win32-ia32-msvc@0.74.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.62.4': + '@oxfmt/binding-win32-x64-msvc@0.74.0': optional: true - '@scalar/helpers@0.10.0': {} - - '@scalar/json-magic@0.12.20': + '@playwright/test@1.64.1': dependencies: - '@scalar/helpers': 0.10.0 - pathe: 2.0.3 - yaml: 2.9.0 + playwright: 1.64.1 + + '@pnpm/deps.graph-sequencer@1100.0.1': {} + + '@polka/url@1.0.0-next.29': {} - '@scalar/json-magic@0.13.0': + '@poppinss/colors@4.1.6': dependencies: - '@scalar/helpers': 0.10.0 - pathe: 2.0.3 - yaml: 2.9.0 + kleur: 4.1.5 - '@scalar/openapi-parser@0.28.14': + '@poppinss/dumper@0.6.5': dependencies: - '@scalar/helpers': 0.10.0 - '@scalar/json-magic': 0.13.0 - '@scalar/openapi-types': 0.9.4 - '@scalar/openapi-upgrader': 0.2.13 - ajv: 8.20.0 - ajv-draft-04: 1.0.0(ajv@8.20.0) - ajv-formats: 3.0.1(ajv@8.20.0) - jsonpointer: 5.0.1 - leven: 4.1.0 - yaml: 2.9.0 + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.2.0 + supports-color: 10.2.2 - '@scalar/openapi-types@0.9.4': {} + '@poppinss/exception@1.2.3': {} - '@scalar/openapi-upgrader@0.2.13': - dependencies: - '@scalar/openapi-types': 0.9.4 + '@poppinss/macroable@1.1.2': + optional: true + + '@poppinss/types@1.2.1': + optional: true + + '@preact/signals-core@1.14.4': {} + + '@rolldown/binding-android-arm-eabi@1.2.14': + optional: true - '@sec-ant/readable-stream@0.4.1': {} + '@rolldown/binding-android-arm64@1.2.14': + optional: true - '@selemondev/svgl-svelte@2.17.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))': - dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + '@rolldown/binding-darwin-arm64@1.2.14': + optional: true - '@sentry/browser-utils@10.70.0': - dependencies: - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 + '@rolldown/binding-darwin-x64@1.2.14': + optional: true - '@sentry/browser@10.70.0': - dependencies: - '@sentry/browser-utils': 10.70.0 - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 - '@sentry/feedback': 10.70.0 - '@sentry/replay': 10.70.0 - '@sentry/replay-canvas': 10.70.0 + '@rolldown/binding-freebsd-x64@1.2.14': + optional: true - '@sentry/bundler-plugins@10.70.0(rollup@4.62.4)(supports-color@7.2.0)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@sentry/cli': 2.58.6(supports-color@7.2.0) - '@sentry/core': 10.70.0 - dotenv: 17.4.2 - find-up: 5.0.0 - glob: 13.0.6 - magic-string: 0.30.21 - optionalDependencies: - rollup: 4.62.4 - transitivePeerDependencies: - - encoding - - supports-color + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + optional: true - '@sentry/cli-darwin@2.58.6': + '@rolldown/binding-linux-arm64-gnu@1.2.14': optional: true - '@sentry/cli-linux-arm64@2.58.6': + '@rolldown/binding-linux-arm64-musl@1.2.14': optional: true - '@sentry/cli-linux-arm@2.58.6': + '@rolldown/binding-linux-ppc64-gnu@1.2.14': optional: true - '@sentry/cli-linux-i686@2.58.6': + '@rolldown/binding-linux-s390x-gnu@1.2.14': optional: true - '@sentry/cli-linux-x64@2.58.6': + '@rolldown/binding-linux-x64-gnu@1.2.14': optional: true - '@sentry/cli-win32-arm64@2.58.6': + '@rolldown/binding-linux-x64-musl@1.2.14': optional: true - '@sentry/cli-win32-i686@2.58.6': + '@rolldown/binding-openharmony-arm64@1.2.14': optional: true - '@sentry/cli-win32-x64@2.58.6': + '@rolldown/binding-win32-arm64-msvc@1.2.14': optional: true - '@sentry/cli@2.58.6(supports-color@7.2.0)': - dependencies: - https-proxy-agent: 5.0.1(supports-color@7.2.0) - node-fetch: 2.7.0 - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - optionalDependencies: - '@sentry/cli-darwin': 2.58.6 - '@sentry/cli-linux-arm': 2.58.6 - '@sentry/cli-linux-arm64': 2.58.6 - '@sentry/cli-linux-i686': 2.58.6 - '@sentry/cli-linux-x64': 2.58.6 - '@sentry/cli-win32-arm64': 2.58.6 - '@sentry/cli-win32-i686': 2.58.6 - '@sentry/cli-win32-x64': 2.58.6 - transitivePeerDependencies: - - encoding - - supports-color + '@rolldown/binding-win32-x64-msvc@1.2.14': + optional: true - '@sentry/cloudflare@10.70.0(wrangler@4.134.0(@types/node@26.2.0))': - dependencies: - '@opentelemetry/api': 1.9.1 - '@sentry/core': 10.70.0 - '@sentry/server-utils': 10.70.0 - magic-string: 0.30.21 - optionalDependencies: - wrangler: 4.134.0(@types/node@26.2.0) - transitivePeerDependencies: - - supports-color + '@rolldown/pluginutils@1.0.1': {} - '@sentry/conventions@0.16.0': {} + '@scalar/helpers@0.16.3': {} - '@sentry/core@10.70.0': - dependencies: - '@sentry/conventions': 0.16.0 + '@scalar/helpers@0.16.4': {} - '@sentry/feedback@10.70.0': + '@scalar/json-magic@0.15.7': dependencies: - '@sentry/core': 10.70.0 + '@scalar/helpers': 0.16.3 + pathe: 2.0.3 + undici: 7.29.1 + yaml: 2.9.1 - '@sentry/node-core@10.70.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1)(supports-color@7.2.0))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))': + '@scalar/json-magic@0.16.1': dependencies: - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 - '@sentry/opentelemetry': 10.70.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)) - import-in-the-middle: 3.3.3 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)(supports-color@7.2.0) - '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1) - - '@sentry/node@10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(supports-color@7.2.0)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)(supports-color@7.2.0) - '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1) - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 - '@sentry/node-core': 10.70.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1)(supports-color@7.2.0))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)) - '@sentry/opentelemetry': 10.70.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)) - '@sentry/server-utils': 10.70.0 - import-in-the-middle: 3.3.3 - transitivePeerDependencies: - - '@opentelemetry/core' - - '@opentelemetry/exporter-trace-otlp-http' - - supports-color + '@scalar/helpers': 0.16.4 + pathe: 2.0.3 + undici: 7.30.1 + yaml: 2.9.1 - '@sentry/opentelemetry@10.70.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))': + '@scalar/json-schema-validator@0.1.13': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1) - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 + '@scalar/helpers': 0.16.4 + '@scalar/types': 0.24.0 + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) + ajv-formats: 3.0.1 + yaml: 2.9.1 - '@sentry/replay-canvas@10.70.0': + '@scalar/openapi-parser@0.29.15': dependencies: - '@sentry/core': 10.70.0 - '@sentry/replay': 10.70.0 + '@scalar/helpers': 0.16.4 + '@scalar/json-magic': 0.16.1 + '@scalar/openapi-types': 0.9.8 + '@scalar/openapi-upgrader': 0.4.5 + '@scalar/openapi-validator': 0.1.13 + '@scalar/types': 0.24.0 + yaml: 2.9.1 - '@sentry/replay@10.70.0': - dependencies: - '@sentry/browser-utils': 10.70.0 - '@sentry/core': 10.70.0 + '@scalar/openapi-types@0.9.7': {} - '@sentry/server-utils@10.70.0': - dependencies: - '@apm-js-collab/code-transformer-bundler-plugins': 0.7.4 - '@apm-js-collab/tracing-hooks': 0.13.0 - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 - meriyah: 6.1.4 - transitivePeerDependencies: - - supports-color + '@scalar/openapi-types@0.9.8': {} - '@sentry/svelte@10.70.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))': + '@scalar/openapi-upgrader@0.4.5': dependencies: - '@sentry/browser': 10.70.0 - '@sentry/core': 10.70.0 - magic-string: 0.30.21 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - - '@sentry/sveltekit@10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(rollup@4.62.4)(supports-color@7.2.0)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(wrangler@4.134.0(@types/node@26.2.0))': - dependencies: - '@sentry/cloudflare': 10.70.0(wrangler@4.134.0(@types/node@26.2.0)) - '@sentry/conventions': 0.16.0 - '@sentry/core': 10.70.0 - '@sentry/node': 10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(supports-color@7.2.0) - '@sentry/svelte': 10.70.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - '@sentry/vite-plugin': 5.4.0(rollup@4.62.4)(supports-color@7.2.0) - '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - acorn: 8.18.0 - magic-string: 0.30.21 - sorcery: 1.0.0 - optionalDependencies: - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) - transitivePeerDependencies: - - '@cloudflare/workers-types' - - '@opentelemetry/core' - - '@opentelemetry/exporter-trace-otlp-http' - - encoding - - rollup - - supports-color - - svelte - - webpack - - wrangler + '@scalar/helpers': 0.16.4 + '@scalar/openapi-types': 0.9.8 - '@sentry/vite-plugin@5.4.0(rollup@4.62.4)(supports-color@7.2.0)': + '@scalar/openapi-validator@0.1.13': dependencies: - '@sentry/bundler-plugins': 10.70.0(rollup@4.62.4)(supports-color@7.2.0) - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - webpack + '@scalar/helpers': 0.16.4 + '@scalar/json-schema-validator': 0.1.13 + '@scalar/types': 0.24.0 + yaml: 2.9.1 - '@shikijs/engine-oniguruma@3.23.0': + '@scalar/types@0.24.0': dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 + '@scalar/helpers': 0.16.4 + nanoid: 5.1.16 + type-fest: 5.10.0 + zod: 4.6.7 - '@shikijs/langs@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 + '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/themes@3.23.0': + '@selemondev/svgl-svelte@2.17.0(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - '@shikijs/types': 3.23.0 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - '@shikijs/types@3.23.0': + '@shadcn/lint@0.2.3(@typescript-eslint/parser@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - '@shikijs/vscode-textmate@10.0.2': {} + '@eslint/core': 0.17.0 + cn: 0.4.0 + optionalDependencies: + '@typescript-eslint/parser': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) + oxc-parser: 0.148.0 '@sideway/address@4.1.5': dependencies: @@ -8895,61 +7485,47 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@sveltejs/acorn-typescript@1.0.13(acorn@8.18.0)': + '@sveltejs/acorn-typescript@1.0.13(acorn@8.19.0)': dependencies: - acorn: 8.18.0 + acorn: 8.19.0 - '@sveltejs/adapter-cloudflare@7.2.9(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(wrangler@4.134.0(@types/node@26.2.0))': + '@sveltejs/adapter-cloudflare@8.0.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(wrangler@4.134.0(@cloudflare/workers-types@5.20261019.1)(@types/node@26.6.5))': dependencies: - '@cloudflare/workers-types': 4.20260702.1 - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - worktop: 0.8.0-next.18 - wrangler: 4.134.0(@types/node@26.2.0) + '@cloudflare/workers-types': 5.20261019.1 + '@rolldown/pluginutils': 1.0.1 + '@sveltejs/kit': 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + wrangler: 4.134.0(@cloudflare/workers-types@5.20261019.1)(@types/node@26.6.5) - '@sveltejs/adapter-node@5.5.7(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))': + '@sveltejs/adapter-node@6.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))': dependencies: - '@rollup/plugin-commonjs': 29.0.3(rollup@4.62.4) - '@rollup/plugin-json': 6.1.0(rollup@4.62.4) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.4) - '@rollup/plugin-replace': 6.0.3(rollup@4.62.4) - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - rollup: 4.62.4 + '@sveltejs/kit': 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) - '@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))': + '@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: + '@rolldown/pluginutils': 1.0.1 '@standard-schema/spec': 1.1.0 - '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) - '@sveltejs/vite-plugin-svelte': 7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - '@types/cookie': 0.6.0 - acorn: 8.18.0 - cookie: 0.6.0 - devalue: 5.9.1 + '@sveltejs/vite-plugin-svelte': 7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + cookie: 2.0.1 + devalue: 5.9.4 esm-env: 1.2.2 - kleur: 4.1.5 - magic-string: 0.30.21 + magic-string: 1.4.3 mrmime: 2.0.1 - set-cookie-parser: 3.1.2 sirv: 3.0.2 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) optionalDependencies: - '@opentelemetry/api': 1.9.1 typescript: 6.0.3 '@sveltejs/load-config@0.2.3': {} - '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))': + '@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: deepmerge: 4.3.1 - magic-string: 1.2.0 - obug: 2.1.4 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) - vitefu: 1.1.3(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 + magic-string: 1.4.3 + obug: 2.2.1 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) + vitefu: 1.1.3(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@swc/helpers@0.5.23': dependencies: @@ -8958,11 +7534,11 @@ snapshots: '@tailwindcss/node@4.3.3': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.24.5 + enhanced-resolve: 5.26.0 jiti: 2.7.0 lightningcss: 1.32.0 magic-string: 0.30.21 - source-map-js: 1.2.1 + source-map-js: 1.2.2 tailwindcss: 4.3.3 '@tailwindcss/oxide-android-arm64@4.3.3': @@ -9016,153 +7592,364 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))': + '@tailwindcss/vite@4.3.3(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) - '@takumi-rs/core-darwin-arm64@2.10.0': + '@takumi-rs/core-darwin-arm64@2.17.1': optional: true - '@takumi-rs/core-darwin-x64@2.10.0': + '@takumi-rs/core-darwin-x64@2.17.1': optional: true - '@takumi-rs/core-linux-arm64-gnu@2.10.0': + '@takumi-rs/core-linux-arm64-gnu@2.17.1': optional: true - '@takumi-rs/core-linux-arm64-musl@2.10.0': + '@takumi-rs/core-linux-arm64-musl@2.17.1': optional: true - '@takumi-rs/core-linux-x64-gnu@2.10.0': {} + '@takumi-rs/core-linux-x64-gnu@2.17.1': {} - '@takumi-rs/core-linux-x64-musl@2.10.0': + '@takumi-rs/core-linux-x64-musl@2.17.1': optional: true - '@takumi-rs/core-win32-arm64-msvc@2.10.0': + '@takumi-rs/core-win32-arm64-msvc@2.17.1': optional: true - '@takumi-rs/core-win32-x64-msvc@2.10.0': + '@takumi-rs/core-win32-x64-msvc@2.17.1': optional: true - '@takumi-rs/core@2.10.0(csstype@3.2.3)(react@19.2.7)': + '@takumi-rs/core@2.17.1(react@19.3.1)': dependencies: - '@takumi-rs/helpers': 2.10.0(react@19.2.7) + '@takumi-rs/helpers': 2.17.1(react@19.3.1) optionalDependencies: - '@takumi-rs/core-darwin-arm64': 2.10.0 - '@takumi-rs/core-darwin-x64': 2.10.0 - '@takumi-rs/core-linux-arm64-gnu': 2.10.0 - '@takumi-rs/core-linux-arm64-musl': 2.10.0 - '@takumi-rs/core-linux-x64-gnu': 2.10.0 - '@takumi-rs/core-linux-x64-musl': 2.10.0 - '@takumi-rs/core-win32-arm64-msvc': 2.10.0 - '@takumi-rs/core-win32-x64-msvc': 2.10.0 - csstype: 3.2.3 + '@takumi-rs/core-darwin-arm64': 2.17.1 + '@takumi-rs/core-darwin-x64': 2.17.1 + '@takumi-rs/core-linux-arm64-gnu': 2.17.1 + '@takumi-rs/core-linux-arm64-musl': 2.17.1 + '@takumi-rs/core-linux-x64-gnu': 2.17.1 + '@takumi-rs/core-linux-x64-musl': 2.17.1 + '@takumi-rs/core-win32-arm64-msvc': 2.17.1 + '@takumi-rs/core-win32-x64-msvc': 2.17.1 transitivePeerDependencies: - preact - react - '@takumi-rs/helpers@2.10.0(react@19.2.7)': + '@takumi-rs/helpers@2.17.1(react@19.3.1)': optionalDependencies: - react: 19.2.7 + react: 19.3.1 - '@takumi-rs/wasm@2.10.0(csstype@3.2.3)(react@19.2.7)': + '@takumi-rs/wasm@2.17.1(react@19.3.1)': dependencies: - '@takumi-rs/helpers': 2.10.0(react@19.2.7) - optionalDependencies: - csstype: 3.2.3 + '@takumi-rs/helpers': 2.17.1(react@19.3.1) transitivePeerDependencies: - preact - react - '@testing-library/svelte-core@1.1.3(svelte@5.56.10(@typescript-eslint/types@8.67.0))': + '@tanstack/store@0.11.2': {} + + '@tanstack/svelte-store@0.12.3(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + '@tanstack/store': 0.11.2 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - '@tokenizer/inflate@0.4.1(supports-color@10.2.2)': + '@tanstack/svelte-table@9.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - debug: 4.4.3(supports-color@10.2.2) - token-types: 6.1.2 - transitivePeerDependencies: - - supports-color + '@tanstack/svelte-store': 0.12.3(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + '@tanstack/table-core': 9.3.1 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - '@tokenizer/token@0.3.0': {} + '@tanstack/table-core@9.3.1': + dependencies: + '@tanstack/store': 0.11.2 - '@types/acorn@4.0.6': + '@testing-library/svelte-core@1.1.3(svelte@5.57.2(@typescript-eslint/types@8.72.0))': dependencies: - '@types/estree': 1.0.9 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - '@types/busboy@1.5.4': + '@tiptap/core@3.32.0(@tiptap/pm@3.32.0)': dependencies: - '@types/node': 26.2.0 + '@tiptap/pm': 3.32.0 - '@types/chai@5.2.3': + '@tiptap/extension-blockquote@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 - '@types/cookie@0.6.0': {} + '@tiptap/extension-bold@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/culori@4.0.1': {} + '@tiptap/extension-bubble-menu@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@floating-ui/dom': 1.8.0 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 - '@types/debug@4.1.13': + '@tiptap/extension-bullet-list@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))': dependencies: - '@types/ms': 2.1.0 + '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) - '@types/deep-eql@4.0.2': {} + '@tiptap/extension-code-block-lowlight@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/extension-code-block@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(highlight.js@11.11.2)(lowlight@3.3.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/extension-code-block': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + highlight.js: 11.11.2 + lowlight: 3.3.0 - '@types/eslint@9.6.1': + '@tiptap/extension-code-block@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': dependencies: - '@types/estree': 1.0.9 - '@types/json-schema': 7.0.15 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 - '@types/esrecurse@4.3.1': {} + '@tiptap/extension-code@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/estree-jsx@1.0.5': + '@tiptap/extension-collaboration@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33))(yjs@13.6.33)': dependencies: - '@types/estree': 1.0.9 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + '@tiptap/y-tiptap': 3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33) + yjs: 13.6.33 - '@types/estree@1.0.9': {} + '@tiptap/extension-document@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/hast@3.0.5': + '@tiptap/extension-drag-handle@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/extension-collaboration@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33))(yjs@13.6.33))(@tiptap/extension-node-range@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33))': dependencies: - '@types/unist': 3.0.3 + '@floating-ui/dom': 1.8.0 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/extension-collaboration': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33))(yjs@13.6.33) + '@tiptap/extension-node-range': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + '@tiptap/y-tiptap': 3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33) - '@types/json-schema@7.0.15': {} + '@tiptap/extension-dropcursor@3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + + '@tiptap/extension-gapcursor@3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) - '@types/lodash@4.17.24': {} + '@tiptap/extension-hard-break@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/mdast@4.0.4': + '@tiptap/extension-heading@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': dependencies: - '@types/unist': 3.0.3 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/ms@2.1.0': {} + '@tiptap/extension-highlight@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/node@26.2.0': + '@tiptap/extension-horizontal-rule@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': dependencies: - undici-types: 8.3.0 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 - '@types/parse-json@4.0.2': {} + '@tiptap/extension-image@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/pg@8.15.6': + '@tiptap/extension-italic@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': dependencies: - '@types/node': 26.2.0 - pg-protocol: 1.14.0 - pg-types: 2.2.0 - optional: true + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) - '@types/react-transition-group@4.4.12(@types/react@19.2.16)': + '@tiptap/extension-link@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': dependencies: - '@types/react': 19.2.16 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + linkifyjs: 4.3.3 - '@types/react@19.2.16': + '@tiptap/extension-list-item@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))': dependencies: - csstype: 3.2.3 + '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) - '@types/relaxed-json@1.0.4': {} + '@tiptap/extension-list-keymap@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + + '@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-node-range@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-ordered-list@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + + '@tiptap/extension-paragraph@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extension-strike@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extension-subscript@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-superscript@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-table-of-contents@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + uuid: 14.0.3 + + '@tiptap/extension-table@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/extension-text-align@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extension-text-style@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extension-text@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extension-typography@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extension-underline@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + + '@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/markdown@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + marked: 17.0.6 + + '@tiptap/pm@3.32.0': + dependencies: + prosemirror-changeset: 2.4.4 + prosemirror-commands: 1.7.2 + prosemirror-dropcursor: 1.8.4 + prosemirror-gapcursor: 1.4.1 + prosemirror-history: 1.5.1 + prosemirror-inputrules: 1.5.1 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.12 + prosemirror-schema-list: 1.5.1 + prosemirror-state: 1.4.4 + prosemirror-tables: 1.8.5 + prosemirror-transform: 1.12.2 + prosemirror-view: 1.42.6 + + '@tiptap/starter-kit@3.32.0': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/extension-blockquote': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-bold': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-bullet-list': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)) + '@tiptap/extension-code': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-code-block': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-document': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-dropcursor': 3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)) + '@tiptap/extension-gapcursor': 3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)) + '@tiptap/extension-hard-break': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-heading': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-horizontal-rule': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-italic': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-link': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/extension-list-item': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)) + '@tiptap/extension-list-keymap': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)) + '@tiptap/extension-ordered-list': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)) + '@tiptap/extension-paragraph': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-strike': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-text': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extension-underline': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)) + '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/static-renderer@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + + '@tiptap/suggestion@3.32.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)': + dependencies: + '@floating-ui/dom': 1.8.0 + '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0) + '@tiptap/pm': 3.32.0 + + '@tiptap/y-tiptap@3.0.10(prosemirror-model@1.25.12)(prosemirror-state@1.4.4)(prosemirror-view@1.42.6)(y-protocols@1.0.7(yjs@13.6.33))(yjs@13.6.33)': + dependencies: + lib0: 0.2.119 + prosemirror-model: 1.25.12 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 + prosemirror-view: 1.42.6 + y-protocols: 1.0.7(yjs@13.6.33) + yjs: 13.6.33 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/culori@4.0.1': {} + + '@types/deep-eql@4.0.2': {} + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.9 + '@types/json-schema': 7.0.15 + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.9': {} + + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 2.0.11 - '@types/resolve@1.20.2': {} + '@types/node@26.6.5': + dependencies: + undici-types: 8.9.0 + + '@types/relaxed-json@1.0.4': {} '@types/stats.js@0.17.4': {} @@ -9173,8 +7960,6 @@ snapshots: fflate: 0.6.11 meshoptimizer: 0.18.1 - '@types/trusted-types@2.0.7': {} - '@types/umami-browser@2.18.1': {} '@types/unist@2.0.11': {} @@ -9188,12 +7973,6 @@ snapshots: '@types/webxr@0.5.24': {} - '@types/whatwg-mimetype@3.0.2': {} - - '@types/ws@8.18.1': - dependencies: - '@types/node': 26.2.0 - '@typeschema/class-validator@0.3.0(@types/json-schema@7.0.15)(class-validator@0.14.4)': dependencies: '@typeschema/core': 0.14.0(@types/json-schema@7.0.15) @@ -9208,72 +7987,72 @@ snapshots: '@types/json-schema': 7.0.15 optional: true - '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.72.0(@typescript-eslint/parser@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/type-utils': 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.67.0 - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) - ignore: 7.0.6 + '@typescript-eslint/parser': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.72.0 + '@typescript-eslint/type-utils': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.72.0 + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) + ignore: 7.0.13 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.67.0 - debug: 4.4.3(supports-color@7.2.0) - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/scope-manager': 8.72.0 + '@typescript-eslint/types': 8.72.0 + '@typescript-eslint/typescript-estree': 8.72.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.72.0 + debug: 4.4.3(supports-color@10.2.2) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.67.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/project-service@8.72.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) - '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/tsconfig-utils': 8.72.0(typescript@6.0.3) + '@typescript-eslint/types': 8.72.0 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.67.0': + '@typescript-eslint/scope-manager@8.72.0': dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 + '@typescript-eslint/types': 8.72.0 + '@typescript-eslint/visitor-keys': 8.72.0 - '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.72.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - debug: 4.4.3(supports-color@7.2.0) - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/types': 8.72.0 + '@typescript-eslint/typescript-estree': 8.72.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + debug: 4.4.3(supports-color@10.2.2) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.67.0': {} + '@typescript-eslint/types@8.72.0': {} - '@typescript-eslint/typescript-estree@8.67.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.72.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 + '@typescript-eslint/project-service': 8.72.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.72.0(typescript@6.0.3) + '@typescript-eslint/types': 8.72.0 + '@typescript-eslint/visitor-keys': 8.72.0 debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 semver: 7.8.5 @@ -9283,160 +8062,138 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.72.0 + '@typescript-eslint/types': 8.72.0 + '@typescript-eslint/typescript-estree': 8.72.0(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.67.0': + '@typescript-eslint/visitor-keys@8.72.0': dependencies: - '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/types': 8.72.0 eslint-visitor-keys: 5.0.1 - '@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@6.0.3))': + '@valibot/to-json-schema@1.8.0(valibot@1.5.0(typescript@6.0.3))': dependencies: - valibot: 1.4.2(typescript@6.0.3) + valibot: 1.5.0(typescript@6.0.3) optional: true - '@vinejs/compiler@3.0.0': + '@vinejs/compiler@4.2.0': optional: true - '@vinejs/vine@3.0.1': + '@vinejs/vine@4.4.0': dependencies: '@poppinss/macroable': 1.1.2 + '@poppinss/types': 1.2.1 + '@standard-schema/spec': 1.1.0 '@types/validator': 13.15.10 - '@vinejs/compiler': 3.0.0 - camelcase: 8.0.0 - dayjs: 1.11.21 + '@vinejs/compiler': 4.2.0 + camelcase: 9.0.0 + dayjs: 1.11.23 dlv: 1.1.3 normalize-url: 8.1.1 validator: 13.15.35 optional: true - '@vitest/browser-playwright@4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11)': + '@vitest/browser-playwright@5.0.5(playwright@1.64.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))(vitest@5.0.5)': dependencies: - '@vitest/browser': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11) - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - playwright: 1.62.1 - tinyrainbow: 3.1.1 - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + '@vitest/browser': 5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))(vitest@5.0.5) + '@vitest/mocker': 5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + playwright: 1.64.1 + tinyrainbow: 3.2.0 + vitest: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11)': + '@vitest/browser@5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))(vitest@5.0.5)': dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + '@vitest/ui': 5.0.5(vitest@5.0.5) + '@vitest/utils': 5.0.5 + magic-string: 1.4.3 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.1 - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - ws: 8.21.0 + tinyrainbow: 3.2.0 + vitest: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + ws: 8.22.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/coverage-v8@4.1.11(@vitest/browser@4.1.11)(vitest@4.1.11)': + '@vitest/coverage-v8@5.0.5(@vitest/browser@5.0.5)(vitest@5.0.5)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.11 - ast-v8-to-istanbul: 1.0.5 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.2.0 - magicast: 0.5.4 - obug: 2.1.4 - std-env: 4.2.0 - tinyrainbow: 3.1.1 - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + '@vitest/istanbul-lib-coverage': 1.0.2 + '@vitest/istanbul-lib-report': 1.0.2 + ast-v8-to-istanbul: 1.0.7 + magicast: 0.5.5 + obug: 3.0.0 + std-env: 4.3.0 + tinyrainbow: 3.2.0 + vitest: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) optionalDependencies: - '@vitest/browser': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11) + '@vitest/browser': 5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))(vitest@5.0.5) - '@vitest/expect@4.1.11': + '@vitest/istanbul-lib-coverage@1.0.2': {} + + '@vitest/istanbul-lib-report@1.0.2': dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - chai: 6.2.2 - tinyrainbow: 3.1.1 + '@vitest/istanbul-lib-coverage': 1.0.2 - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))': + '@vitest/mocker@5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: - '@vitest/spy': 4.1.11 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.5 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.4.3 optionalDependencies: - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) - - '@vitest/pretty-format@4.1.11': - dependencies: - tinyrainbow: 3.1.1 - - '@vitest/runner@4.1.11': - dependencies: - '@vitest/utils': 4.1.11 - pathe: 2.0.3 + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) - '@vitest/snapshot@4.1.11': + '@vitest/pretty-format@5.0.5': dependencies: - '@vitest/pretty-format': 4.1.11 - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 - pathe: 2.0.3 + tinyrainbow: 3.2.0 - '@vitest/spy@4.1.11': {} + '@vitest/spy@5.0.5': {} - '@vitest/ui@4.1.11(vitest@4.1.11)': + '@vitest/ui@5.0.5(vitest@5.0.5)': dependencies: - '@vitest/utils': 4.1.11 + '@vitest/utils': 5.0.5 fflate: 0.8.3 flatted: 3.4.4 pathe: 2.0.3 sirv: 3.0.2 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + tinyrainbow: 3.2.0 + vitest: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) - '@vitest/utils@4.1.11': + '@vitest/utils@5.0.5': dependencies: - '@vitest/pretty-format': 4.1.11 + '@vitest/pretty-format': 5.0.5 convert-source-map: 2.0.0 - tinyrainbow: 3.1.1 + tinyrainbow: 3.2.0 - acorn-jsx@5.3.2(acorn@8.18.0): + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.18.0 - - acorn@8.16.0: {} + acorn: 8.19.0 - acorn@8.18.0: {} - - agent-base@6.0.2(supports-color@7.2.0): - dependencies: - debug: 4.4.3(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color + acorn@8.19.0: {} ajv-draft-04@1.0.0(ajv@8.20.0): optionalDependencies: ajv: 8.20.0 - ajv-formats@3.0.1(ajv@8.20.0): - optionalDependencies: + ajv-formats@3.0.1: + dependencies: ajv: 8.20.0 ajv@6.15.0: @@ -9446,84 +8203,68 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.5 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.5 + fast-uri: 3.1.9 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-regex@6.3.0: {} + ansi-regex@6.4.0: {} ansi-styles@6.2.3: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.2 - argparse@2.0.1: {} - argue-cli@3.1.0: {} + argue-cli@3.2.0: {} aria-query@5.3.1: {} - arkregex@0.0.8: + arkregex@0.0.13: dependencies: - '@ark/util': 0.56.2 + '@ark/util': 0.56.7 optional: true - arktype@2.2.3: + arktype@2.2.8: dependencies: - '@ark/schema': 0.56.2 - '@ark/util': 0.56.2 - arkregex: 0.0.8 + '@ark/schema': 0.56.7 + '@ark/util': 0.56.7 + arkregex: 0.0.13 optional: true assertion-error@2.0.1: {} - ast-v8-to-istanbul@1.0.5: + ast-v8-to-istanbul@1.0.7: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 js-tokens: 10.0.0 - astring@1.9.0: {} - - atomic-sleep@1.0.0: {} - - auth@1.6.29(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(better-call@1.4.0(zod@4.4.3))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))(jose@6.2.8)(kysely@0.29.5)(magicast@0.5.4)(nanostores@1.4.2)(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11): + auth@1.7.12(@better-fetch/fetch@1.3.2)(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(better-call@1.4.4(zod@4.6.7))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(jose@6.2.13)(kysely@0.29.7)(magicast@0.5.5)(nanostores@1.5.5)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(supports-color@10.2.2)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/preset-react': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/telemetry': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) - '@better-auth/utils': 0.4.2 - '@clack/prompts': 1.7.0 - '@mrleebo/prisma-ast': 0.13.1 - better-auth: 1.6.29(@opentelemetry/api@1.9.1)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11) - c12: 3.3.4(magicast@0.5.4) + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/telemetry': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2) + '@better-auth/utils': 0.5.0 + '@clack/prompts': 1.8.1 + '@mrleebo/prisma-ast': 0.16.0 + better-auth: 1.7.12(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5) + c12: 4.0.0-rc.2(dotenv@17.4.2)(jiti@2.7.0)(magicast@0.5.5) chalk: 5.6.2 - commander: 12.1.0 + commander: 15.0.0 dotenv: 17.4.2 - get-tsconfig: 4.14.2 - open: 10.2.0 - prettier: 3.9.6 + get-tsconfig: 4.14.3 + jiti: 2.7.0 + open: 11.0.4 + prettier: 3.9.10 prompts: 2.4.2 semver: 7.8.5 - yocto-spinner: 0.2.3 - zod: 4.4.3 + yocto-spinner: 1.2.2 + zod: 4.6.7 transitivePeerDependencies: - '@better-fetch/fetch' - - '@cloudflare/workers-types' - '@lynx-js/react' - '@opentelemetry/api' - '@prisma/client' @@ -9531,9 +8272,9 @@ snapshots: - '@tanstack/react-start' - '@tanstack/solid-start' - better-call - - better-sqlite3 - drizzle-kit - drizzle-orm + - giget - jose - kysely - magicast @@ -9551,139 +8292,117 @@ snapshots: - vitest - vue - axobject-query@4.1.0: {} + aws4fetch@1.0.20: {} - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.29.7 - cosmiconfig: 7.1.0 - resolve: 1.22.12 + axobject-query@4.1.0: {} balanced-match@4.0.4: {} - baseline-browser-mapping@2.10.43: {} - - better-auth@1.6.29(@opentelemetry/api@1.9.1)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9))(next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11): - dependencies: - '@better-auth/core': 1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) - '@better-auth/drizzle-adapter': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9)) - '@better-auth/kysely-adapter': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.5) - '@better-auth/memory-adapter': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2) - '@better-auth/mongo-adapter': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2) - '@better-auth/prisma-adapter': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2) - '@better-auth/telemetry': 1.6.29(@better-auth/core@1.6.29(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - '@noble/ciphers': 2.3.0 - '@noble/hashes': 2.3.0 - better-call: 1.4.0(zod@4.4.3) + baseline-browser-mapping@2.11.30: {} + + better-auth@1.7.12(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(drizzle-kit@0.31.11)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5): + dependencies: + '@better-auth/core': 1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5) + '@better-auth/drizzle-adapter': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9)) + '@better-auth/kysely-adapter': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(kysely@0.29.7) + '@better-auth/memory-adapter': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0) + '@better-auth/mongo-adapter': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0) + '@better-auth/prisma-adapter': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0) + '@better-auth/telemetry': 1.7.12(@better-auth/core@1.7.12(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2)(better-call@1.4.4(zod@4.6.7))(jose@6.2.13)(kysely@0.29.7)(nanostores@1.5.5))(@better-auth/utils@0.5.0)(@better-fetch/fetch@1.3.2) + '@better-auth/utils': 0.5.0 + '@better-fetch/fetch': 1.3.2 + '@noble/ciphers': 2.4.0 + '@noble/hashes': 2.4.0 + better-call: 1.4.4(zod@4.6.7) defu: 6.1.7 - jose: 6.2.8 - kysely: 0.29.5 - nanostores: 1.4.2 - zod: 4.4.3 + jose: 6.2.13 + kysely: 0.29.7 + nanostores: 1.5.5 + zod: 4.6.7 optionalDependencies: - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - drizzle-kit: 0.31.10 - drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9) - next: 16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4) - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + '@sveltejs/kit': 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + drizzle-kit: 0.31.11 + drizzle-orm: 0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9) + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + vitest: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) transitivePeerDependencies: - - '@cloudflare/workers-types' - '@opentelemetry/api' - better-call@1.4.0(zod@4.4.3): + better-call@1.4.4(zod@4.6.7): dependencies: '@better-auth/utils': 0.5.0 - '@better-fetch/fetch': 1.3.1 + '@better-fetch/fetch': 1.3.2 rou3: 0.9.2 - set-cookie-parser: 3.1.2 + set-cookie-parser: 3.1.4 optionalDependencies: - zod: 4.4.3 - - binary-extensions@2.3.0: {} + zod: 4.6.7 - bits-ui@2.19.0(@internationalized/date@3.12.3)(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + bits-ui@2.19.5(@internationalized/date@3.12.4)(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: '@floating-ui/core': 1.8.0 '@floating-ui/dom': 1.8.0 - '@internationalized/date': 3.12.3 + '@internationalized/date': 3.12.4 esm-env: 1.2.2 - runed: 0.35.1(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - svelte-toolbelt: 0.10.6(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + runed: 0.35.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + svelte-toolbelt: 0.10.6(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)) tabbable: 6.5.0 transitivePeerDependencies: - '@sveltejs/kit' blake3-wasm@2.1.5: {} - body-scroll-lock@4.0.0-beta.0: {} - - brace-expansion@5.0.9: + brace-expansion@5.0.12: dependencies: balanced-match: 4.0.4 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.28.6: + browserslist@4.29.4: dependencies: - baseline-browser-mapping: 2.10.43 - caniuse-lite: 1.0.30001805 - electron-to-chromium: 1.5.389 - node-releases: 2.0.51 - update-browserslist-db: 1.2.3(browserslist@4.28.6) - - bson-objectid@2.0.4: {} + baseline-browser-mapping: 2.11.30 + caniuse-lite: 1.0.30001817 + electron-to-chromium: 1.5.461 + node-releases: 2.0.59 + update-browserslist-db: 1.3.4(browserslist@4.29.4) buffer-from@1.1.2: {} - buffer-image-size@0.6.4: - dependencies: - '@types/node': 26.2.0 - - bundle-name@4.1.0: + bundle-name@4.1.1: dependencies: run-applescript: 7.1.0 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - c12@3.3.4(magicast@0.5.4): + c12@4.0.0-rc.2(dotenv@17.4.2)(jiti@2.7.0)(magicast@0.5.5): dependencies: - chokidar: 5.0.0 - confbox: 0.2.4 + confbox: 0.3.1 defu: 6.1.7 - dotenv: 17.4.2 - exsolve: 1.1.1 - giget: 3.3.1 - jiti: 2.7.0 - ohash: 2.0.12 + exsolve: 1.1.3 pathe: 2.0.3 - perfect-debounce: 2.1.0 - pkg-types: 2.3.1 - rc9: 3.0.1 + pkg-types: 2.4.0 + rc9: 3.1.0 optionalDependencies: - magicast: 0.5.4 + dotenv: 17.4.2 + jiti: 2.7.0 + magicast: 0.5.5 + + cac@7.1.0: {} - cac@7.0.0: {} + cacheable@2.5.0: + dependencies: + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.10.1 callsites@3.1.0: {} - camelcase@8.0.0: + camelcase@9.0.0: optional: true - caniuse-lite@1.0.30001805: {} - - ccount@2.0.1: {} + caniuse-lite@1.0.30001817: {} - chai@6.2.2: {} + chai@6.3.0: {} chalk@5.6.2: {} @@ -9694,36 +8413,13 @@ snapshots: transitivePeerDependencies: - encoding - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - charenc@0.0.2: {} - - chevrotain@10.5.0: - dependencies: - '@chevrotain/cst-dts-gen': 10.5.0 - '@chevrotain/gast': 10.5.0 - '@chevrotain/types': 10.5.0 - '@chevrotain/utils': 10.5.0 - lodash: 4.17.21 - regexp-to-ast: 0.5.0 - - chokidar@3.6.0: + chevrotain@12.0.0: dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + '@chevrotain/cst-dts-gen': 12.0.0 + '@chevrotain/gast': 12.0.0 + '@chevrotain/regexp-to-ast': 12.0.0 + '@chevrotain/types': 12.0.0 + '@chevrotain/utils': 12.0.0 chokidar@4.0.3: dependencies: @@ -9733,19 +8429,15 @@ snapshots: dependencies: readdirp: 5.1.1 - ci-info@4.4.0: {} - - cjs-module-lexer@2.2.1: {} + citty@0.2.2: {} class-validator@0.14.4: dependencies: '@types/validator': 13.15.10 - libphonenumber-js: 1.13.11 + libphonenumber-js: 1.13.15 validator: 13.15.35 optional: true - client-only@0.0.1: {} - cliui@9.0.1: dependencies: string-width: 7.2.0 @@ -9754,104 +8446,63 @@ snapshots: clsx@2.1.1: {} - colorette@2.0.20: {} + cn@0.3.3: {} - commander@12.1.0: {} + cn@0.4.0: {} + + cn@0.5.0: {} commander@14.0.3: {} commander@15.0.0: {} - commander@2.20.3: {} - - commondir@1.0.1: {} - compare-versions@6.1.1: {} - confbox@0.2.4: {} - - console-table-printer@2.12.1: - dependencies: - simple-wcswidth: 1.1.2 + confbox@0.3.1: {} - conventional-changelog-angular@9.3.0: + conventional-changelog-angular@9.4.0: dependencies: - '@conventional-changelog/template': 1.3.0 + '@conventional-changelog/template': 1.4.0 - conventional-changelog-conventionalcommits@10.3.0: + conventional-changelog-conventionalcommits@10.4.1: dependencies: - '@conventional-changelog/template': 1.3.0 + '@conventional-changelog/template': 1.4.0 - conventional-commits-parser@7.1.2: + conventional-commits-parser@7.1.3: dependencies: '@simple-libs/stream-utils': 2.0.0 - argue-cli: 3.1.0 - - convert-source-map@1.9.0: {} + argue-cli: 3.2.0 convert-source-map@2.0.0: {} - cookie@0.6.0: {} - cookie@1.1.1: {} - cosmiconfig-typescript-loader@6.3.0(@types/node@26.2.0)(cosmiconfig@9.0.2(typescript@6.0.3))(typescript@6.0.3): - dependencies: - '@types/node': 26.2.0 - cosmiconfig: 9.0.2(typescript@6.0.3) - jiti: 2.6.1 - typescript: 6.0.3 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.3 + cookie@2.0.1: {} cosmiconfig@9.0.2(typescript@6.0.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.3.1 + js-yaml: 4.3.2 parse-json: 5.2.0 optionalDependencies: typescript: 6.0.3 - croner@10.0.1: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypt@0.0.2: {} - cssesc@3.0.0: {} - cssfilter@0.0.10: {} - - csstype@3.1.3: {} - - csstype@3.2.3: {} - culori@4.0.2: {} dataloader@1.4.0: {} - dataloader@2.2.3: {} - - date-fns@3.6.0: {} - - date-fns@4.1.0: {} - date-fns@4.4.0: {} - dateformat@4.6.3: {} - - dayjs@1.11.21: + dayjs@1.11.23: optional: true debug@4.4.3(supports-color@10.2.2): @@ -9860,25 +8511,15 @@ snapshots: optionalDependencies: supports-color: 10.2.2 - debug@4.4.3(supports-color@7.2.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 7.2.0 - - decode-named-character-reference@1.3.0: - dependencies: - character-entities: 2.0.2 - deep-is@0.1.4: {} deepmerge@4.3.1: {} default-browser-id@5.0.1: {} - default-browser@5.5.0: + default-browser@5.5.1: dependencies: - bundle-name: 4.1.0 + bundle-name: 4.1.1 default-browser-id: 5.0.1 define-lazy-prop@3.0.0: {} @@ -9891,24 +8532,19 @@ snapshots: detect-libc@2.1.2: {} - devalue@5.9.1: {} + devalue@5.9.4: {} + + devalue@6.0.3: {} devlop@1.1.0: dependencies: dequal: 2.0.3 + discord-api-types@0.38.57: {} + dlv@1.1.3: optional: true - dom-helpers@5.2.1: - dependencies: - '@babel/runtime': 7.29.7 - csstype: 3.2.3 - - dompurify@3.2.7: - optionalDependencies: - '@types/trusted-types': 2.0.7 - dotenv-cli@11.0.0: dependencies: cross-spawn: 7.0.6 @@ -9924,43 +8560,34 @@ snapshots: dotenv@17.4.2: {} - drizzle-kit@0.31.10: + drizzle-kit@0.31.11: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 esbuild: 0.25.12 - tsx: 4.23.12 + tsx: 4.23.15 - drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(kysely@0.29.5)(postgres@3.4.9): + drizzle-orm@0.45.4(@cloudflare/workers-types@5.20261019.1)(kysely@0.29.7)(postgres@3.4.9): optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/pg': 8.15.6 - kysely: 0.29.5 + '@cloudflare/workers-types': 5.20261019.1 + kysely: 0.29.7 postgres: 3.4.9 - effect@3.22.1: + effect@3.22.3: dependencies: '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 optional: true - electron-to-chromium@1.5.389: {} + electron-to-chromium@1.5.461: {} emoji-regex@10.6.0: {} - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - - enhanced-resolve@5.24.5: + enhanced-resolve@5.26.0: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 - entities@4.5.0: {} - - entities@7.0.1: {} - env-paths@2.2.1: {} error-ex@1.3.4: @@ -9969,13 +8596,9 @@ snapshots: error-stack-parser-es@1.0.5: {} - es-errors@1.3.0: {} - - es-module-lexer@2.3.1: {} - es-module-lexer@2.3.2: {} - es-toolkit@1.50.0: {} + es-toolkit@1.52.0: {} esbuild@0.18.20: optionalDependencies: @@ -10091,29 +8714,27 @@ snapshots: escalade@3.2.0: {} - escape-html@1.0.3: {} - escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)): + eslint-config-prettier@10.1.8(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-plugin-svelte@3.23.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + eslint-plugin-svelte@3.23.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) - '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)) + '@jridgewell/sourcemap-codec': 1.6.0 + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) esutils: 2.0.3 globals: 16.5.0 known-css-properties: 0.37.0 - postcss: 8.5.26 - postcss-load-config: 3.1.4(postcss@8.5.26) - postcss-safe-parser: 7.0.1(postcss@8.5.26) + postcss: 8.5.31 + postcss-load-config: 3.1.4(postcss@8.5.31) + postcss-safe-parser: 7.1.0(postcss@8.5.31) semver: 7.8.5 - svelte-eslint-parser: 1.8.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + svelte-eslint-parser: 1.9.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) optionalDependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) transitivePeerDependencies: - ts-node @@ -10135,21 +8756,21 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0): + eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5(supports-color@7.2.0) + '@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-helpers': 0.7.0 '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 + '@eslint/plugin-kit': 0.7.3 '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3(supports-color@10.2.2) escape-string-regexp: 4.0.0 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 @@ -10157,7 +8778,7 @@ snapshots: esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 + file-entry-cache: 11.1.5 find-up: 5.0.0 glob-parent: 6.0.2 ignore: 5.3.2 @@ -10176,25 +8797,25 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 4.2.1 espree@11.2.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 5.0.1 esquery@1.7.0: dependencies: estraverse: 5.3.0 - esrap@2.3.5(@typescript-eslint/types@8.67.0): + esrap@2.4.0(@typescript-eslint/types@8.72.0): dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 optionalDependencies: - '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/types': 8.72.0 esrecurse@4.3.0: dependencies: @@ -10202,21 +8823,17 @@ snapshots: estraverse@5.3.0: {} - estree-util-is-identifier-name@3.0.0: {} - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.9 esutils@2.0.3: {} + evlog@2.33.1(react@19.3.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): + optionalDependencies: + react: 19.3.1 + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) + execa@9.6.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -10227,45 +8844,41 @@ snapshots: is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 6.0.0 - pretty-ms: 9.3.0 + pretty-ms: 9.3.1 signal-exit: 4.1.0 strip-final-newline: 4.0.0 yoctocolors: 2.2.0 expect-type@1.4.0: {} - exsolve@1.1.1: {} + exsolve@1.1.3: {} fast-check@3.23.2: dependencies: pure-rand: 6.1.0 optional: true - fast-copy@3.0.2: {} - fast-deep-equal@3.1.3: {} fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-safe-stringify@2.1.1: {} - fast-string-truncated-width@3.0.3: {} fast-string-width@3.0.2: dependencies: fast-string-truncated-width: 3.0.3 - fast-uri@3.1.5: {} + fast-uri@3.1.9: {} fast-wrap-ansi@0.2.2: dependencies: fast-string-width: 3.0.2 - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 fflate@0.6.11: {} @@ -10275,191 +8888,84 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-type@21.3.4(supports-color@10.2.2): - dependencies: - '@tokenizer/inflate': 0.4.1(supports-color@10.2.2) - strtok3: 10.3.5 - token-types: 6.1.2 - uint8array-extras: 1.5.0 - transitivePeerDependencies: - - supports-color - - fill-range@7.1.1: + file-entry-cache@11.1.5: dependencies: - to-regex-range: 5.0.1 - - find-root@1.1.0: {} + flat-cache: 6.1.23 find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@8.0.0: - dependencies: - locate-path: 8.0.0 - unicorn-magic: 0.3.0 - - flat-cache@4.0.1: + flat-cache@6.1.23: dependencies: + cacheable: 2.5.0 flatted: 3.4.4 - keyv: 4.5.4 + hookified: 1.15.1 flatted@3.4.4: {} - focus-trap@7.5.4: - dependencies: - tabbable: 6.5.0 - - formsnap@2.0.1(svelte@5.56.10(@typescript-eslint/types@8.67.0))(sveltekit-superforms@2.30.2(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(@types/json-schema@7.0.15)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)): - dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - svelte-toolbelt: 0.5.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - sveltekit-superforms: 2.30.2(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(@types/json-schema@7.0.15)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3) - - fs-extra@11.4.0: + formsnap@2.0.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(sveltekit-superforms@3.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(@types/json-schema@7.0.15)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)): dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.1 - universalify: 2.0.1 - - fsevents@2.3.2: - optional: true + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + svelte-toolbelt: 0.5.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + sveltekit-superforms: 3.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(@types/json-schema@7.0.15)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3) fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} - get-east-asian-width@1.6.0: {} + get-east-asian-width@1.7.0: {} get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.14.2: + get-tsconfig@4.14.3: dependencies: resolve-pkg-maps: 1.0.0 - get-tsconfig@4.8.1: - dependencies: - resolve-pkg-maps: 1.0.0 - - giget@3.3.1: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - glob@13.0.6: - dependencies: - minimatch: 10.2.6 - minipass: 7.1.3 - path-scurry: 2.0.2 - global-directory@5.0.0: dependencies: ini: 6.0.0 globals@16.5.0: {} - globals@17.11.0: {} - - globalyzer@0.1.0: {} - - globrex@0.1.2: {} + globals@17.13.0: {} graceful-fs@4.2.11: {} - graphql-http@1.22.4(graphql@16.14.1): - dependencies: - graphql: 16.14.1 - - graphql-playground-html@1.6.30: - dependencies: - xss: 1.0.15 - - graphql-scalars@1.22.2(graphql@16.14.1): - dependencies: - graphql: 16.14.1 - tslib: 2.8.1 - - graphql@16.14.1: {} - - happy-dom@20.11.2: - dependencies: - '@types/node': 26.2.0 - '@types/whatwg-mimetype': 3.0.2 - '@types/ws': 8.18.1 - buffer-image-size: 0.6.4 - entities: 7.0.1 - whatwg-mimetype: 3.0.0 - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - has-flag@4.0.0: {} - - hasown@2.0.4: - dependencies: - function-bind: 1.1.2 - - help-me@5.0.0: {} - - hoist-non-react-statics@3.3.2: + hashery@1.5.1: dependencies: - react-is: 16.13.1 + hookified: 1.15.1 - html-escaper@2.0.2: {} + highlight.js@11.11.2: {} - http-status@2.1.0: {} + hookified@1.15.1: {} - https-proxy-agent@5.0.1(supports-color@7.2.0): - dependencies: - agent-base: 6.0.2(supports-color@7.2.0) - debug: 4.4.3(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color + hookified@2.2.0: {} - human-id@4.2.1: {} + human-id@4.2.2: {} human-signals@8.0.1: {} - ieee754@1.2.1: {} - ignore@5.3.2: {} - ignore@7.0.6: {} - - image-dimensions@2.5.1: {} - - immutable@4.3.8: {} + ignore@7.0.13: {} import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@3.3.3: - dependencies: - cjs-module-lexer: 2.2.1 - es-module-lexer: 2.3.1 - module-details-from-path: 1.0.4 - import-meta-resolve@4.2.0: {} imurmurhash@0.1.4: {} @@ -10468,29 +8974,8 @@ snapshots: inline-style-parser@0.2.7: {} - ipaddr.js@2.2.0: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - is-arrayish@0.2.1: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-buffer@1.1.6: {} - - is-core-module@2.16.2: - dependencies: - hasown: 2.0.4 - - is-decimal@2.0.1: {} - is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -10499,22 +8984,14 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} + is-in-ssh@1.0.0: {} is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 - is-module@1.0.0: {} - - is-number@7.0.0: {} - is-plain-obj@4.1.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.9 - is-reference@3.0.3: dependencies: '@types/estree': 1.0.9 @@ -10531,26 +9008,11 @@ snapshots: isomorphic.js@0.2.5: {} - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - jiti@2.6.1: {} - jiti@2.7.0: {} jju@1.4.0: {} - joi@17.13.4: + joi@17.13.8: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -10559,44 +9021,26 @@ snapshots: '@sideway/pinpoint': 2.0.0 optional: true - jose@5.10.0: {} - - jose@6.2.8: {} - - joycon@3.1.1: {} + jose@6.2.13: {} js-tokens@10.0.0: {} js-tokens@4.0.0: {} - js-yaml@4.3.1: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 jsesc@3.1.0: {} - json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: {} json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 ts-algebra: 2.0.0 optional: true - json-schema-to-typescript@15.0.3: - dependencies: - '@apidevtools/json-schema-ref-parser': 11.9.3 - '@types/json-schema': 7.0.15 - '@types/lodash': 4.17.24 - is-glob: 4.0.3 - js-yaml: 4.3.1 - lodash: 4.18.1 - minimist: 1.2.8 - prettier: 3.9.6 - tinyglobby: 0.2.17 - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -10607,19 +9051,9 @@ snapshots: jsonc-parser@3.3.1: {} - jsonfile@6.2.1: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonpointer@5.0.1: {} - - jsox@1.2.121: {} - - keyv@4.5.4: + keyv@5.6.0: dependencies: - json-buffer: 3.0.1 + '@keyv/serialize': 1.1.1 kleur@3.0.3: {} @@ -10627,29 +9061,25 @@ snapshots: known-css-properties@0.37.0: {} - ky@2.0.2: {} + ky@2.2.0: {} - kysely@0.29.5: {} + kysely@0.29.7: {} - launch-editor@2.14.1: + launch-editor@2.14.2: dependencies: picocolors: 1.1.1 - shell-quote: 1.10.0 - - leven@4.1.0: {} + shell-quote: 1.12.0 levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - lexical@0.41.0: {} - - lib0@0.2.117: + lib0@0.2.119: dependencies: isomorphic.js: 0.2.5 - libphonenumber-js@1.13.11: + libphonenumber-js@1.13.15: optional: true lightningcss-android-arm64@1.32.0: @@ -10743,341 +9173,71 @@ snapshots: lightningcss-darwin-x64: 1.33.0 lightningcss-freebsd-x64: 1.33.0 lightningcss-linux-arm-gnueabihf: 1.33.0 - lightningcss-linux-arm64-gnu: 1.33.0 - lightningcss-linux-arm64-musl: 1.33.0 - lightningcss-linux-x64-gnu: 1.33.0 - lightningcss-linux-x64-musl: 1.33.0 - lightningcss-win32-arm64-msvc: 1.33.0 - lightningcss-win32-x64-msvc: 1.33.0 - - lilconfig@2.1.0: {} - - lines-and-columns@1.2.4: {} - - linkify-it@5.0.2: - dependencies: - uc.micro: 2.1.0 - - locate-character@3.0.0: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - locate-path@8.0.0: - dependencies: - p-locate: 6.0.0 - - lodash@4.17.21: {} - - lodash@4.18.1: {} - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@11.5.2: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lunr@2.3.9: {} - - lz-string@1.5.0: {} - - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - magic-string@1.2.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - magicast@0.5.4: - dependencies: - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 - source-map-js: 1.2.1 - - make-dir@4.0.0: - dependencies: - semver: 7.8.5 - - markdown-it@14.3.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.2 - mdurl: 2.1.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - marked@14.0.0: {} - - md5@2.3.0: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - - mdast-util-from-markdown@2.0.2(supports-color@10.2.2): - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2(supports-color@10.2.2) - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-from-markdown@2.0.3(supports-color@10.2.2): - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2(supports-color@10.2.2) - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.1.3(supports-color@10.2.2): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.1 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.1.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdurl@2.1.0: {} - - memoize-one@6.0.0: {} - - memoize-weak@1.0.2: {} - - meriyah@6.1.4: {} - - meshoptimizer@0.18.1: {} - - micromark-core-commonmark@2.0.3: - dependencies: - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.1: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.9 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-mdx-expression@2.0.3: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + lilconfig@2.1.0: {} - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + lines-and-columns@1.2.4: {} - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 + linkifyjs@4.3.3: {} - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + locate-character@3.0.0: {} - micromark-util-combine-extensions@2.0.1: + locate-path@6.0.0: dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 + p-locate: 5.0.0 - micromark-util-decode-numeric-character-reference@2.0.2: + lowlight@3.3.0: dependencies: - micromark-util-symbol: 2.0.1 + '@types/hast': 3.0.5 + devlop: 1.1.0 + highlight.js: 11.11.2 - micromark-util-decode-string@2.0.1: + lru-cache@5.1.1: dependencies: - decode-named-character-reference: 1.3.0 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 + yallist: 3.1.1 - micromark-util-encode@2.0.1: {} + lz-string@1.5.0: {} - micromark-util-events-to-acorn@2.0.3: + magic-string@0.30.21: dependencies: - '@types/estree': 1.0.9 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 + '@jridgewell/sourcemap-codec': 1.6.0 - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: + magic-string@1.4.3: dependencies: - micromark-util-symbol: 2.0.1 + '@jridgewell/sourcemap-codec': 1.6.0 - micromark-util-resolve-all@2.0.1: + magicast@0.5.5: dependencies: - micromark-util-types: 2.0.2 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + source-map-js: 1.2.2 - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 + marked@17.0.6: {} - micromark-util-subtokenize@2.1.0: + mdsvex@0.12.8(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-symbol@2.0.1: {} + '@types/mdast': 4.0.4 + '@types/unist': 2.0.11 + prism-svelte: 0.4.7 + prismjs: 1.30.0 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + unist-util-visit: 2.0.3 + vfile-message: 2.0.4 - micromark-util-types@2.0.2: {} + memoize-weak@1.0.2: {} - micromark@4.0.2(supports-color@10.2.2): - dependencies: - '@types/debug': 4.1.13 - debug: 4.4.3(supports-color@10.2.2) - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color + meshoptimizer@0.18.1: {} - miniflare@5.20260917.0-alpha(@types/node@26.2.0): + miniflare@5.20260917.0-alpha(@types/node@26.6.5): dependencies: '@cspotcode/source-map-support': 0.8.1 - sharp: 0.35.4(@types/node@26.2.0) + sharp: 0.35.4(@types/node@26.6.5) undici: 7.29.0 workerd: 1.20260917.1 ws: 8.21.0 @@ -11089,24 +9249,15 @@ snapshots: minimatch@10.2.6: dependencies: - brace-expansion: 5.0.9 + brace-expansion: 5.0.12 minimist@1.2.8: {} - minipass@7.1.3: {} - - mode-watcher@1.1.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + mode-watcher@1.1.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - runed: 0.25.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - svelte-toolbelt: 0.7.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - - module-details-from-path@1.0.4: {} - - monaco-editor@0.55.1: - dependencies: - dompurify: 3.2.7 - marked: 14.0.0 + runed: 0.25.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + svelte-toolbelt: 0.7.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)) mri@1.2.0: {} @@ -11114,38 +9265,13 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.18: {} + nanoid@3.3.20: {} - nanostores@1.4.2: {} + nanoid@5.1.16: {} - natural-compare@1.4.0: {} + nanostores@1.5.5: {} - next@16.2.7(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(@playwright/test@1.62.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.4): - dependencies: - '@next/env': 16.2.7 - '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.43 - caniuse-lite: 1.0.30001805 - postcss: 8.4.31 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(babel-plugin-macros@3.1.0)(react@19.2.7) - optionalDependencies: - '@next/swc-darwin-arm64': 16.2.7 - '@next/swc-darwin-x64': 16.2.7 - '@next/swc-linux-arm64-gnu': 16.2.7 - '@next/swc-linux-arm64-musl': 16.2.7 - '@next/swc-linux-x64-gnu': 16.2.7 - '@next/swc-linux-x64-musl': 16.2.7 - '@next/swc-win32-arm64-msvc': 16.2.7 - '@next/swc-win32-x64-msvc': 16.2.7 - '@opentelemetry/api': 1.9.1 - '@playwright/test': 1.62.1 - sass: 1.77.4 - sharp: 0.34.5 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros + natural-compare@1.4.0: {} node-fetch-native@1.6.7: {} @@ -11153,9 +9279,9 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.51: {} + node-releases@2.0.59: {} - normalize-path@3.0.0: {} + node@runtime:24.22.1: {} normalize-url@8.1.1: optional: true @@ -11167,26 +9293,18 @@ snapshots: numerable@0.3.15: {} - object-assign@4.1.1: {} + obug@2.2.1: {} - object-to-formdata@4.5.1: {} + obug@3.0.0: {} - obug@2.1.4: {} - - ohash@2.0.12: {} - - on-exit-leak-free@2.1.2: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - open@10.2.0: + open@11.0.4: dependencies: - default-browser: 5.5.0 + default-browser: 5.5.1 define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 is-inside-container: 1.0.0 - wsl-utils: 0.1.0 + powershell-utils: 0.2.1 + wsl-utils: 1.0.1 optionator@0.9.4: dependencies: @@ -11197,107 +9315,146 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - orval@8.24.0(prettier@3.9.6)(supports-color@10.2.2)(typescript@6.0.3): + orderedmap@2.1.1: {} + + orval@8.43.0(prettier@3.9.10)(typescript@6.0.3)(zod@4.6.7): dependencies: '@commander-js/extra-typings': 15.0.0(commander@15.0.0) - '@orval/angular': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/axios': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/core': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/effect': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/fetch': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/hono': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/mcp': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/mock': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/query': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/solid-start': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/swr': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@orval/zod': 8.24.0(supports-color@10.2.2)(typescript@6.0.3) - '@scalar/json-magic': 0.12.20 - '@scalar/openapi-parser': 0.28.14 - '@scalar/openapi-types': 0.9.4 + '@orval/angular': 8.43.0 + '@orval/axios': 8.43.0 + '@orval/core': 8.43.0 + '@orval/effect': 8.43.0 + '@orval/fetch': 8.43.0 + '@orval/hono': 8.43.0(typescript@6.0.3)(zod@4.6.7) + '@orval/mcp': 8.43.0(zod@4.6.7) + '@orval/mock': 8.43.0 + '@orval/pinia-colada': 8.43.0 + '@orval/query': 8.43.0 + '@orval/solid-start': 8.43.0 + '@orval/swr': 8.43.0 + '@orval/zod': 8.43.0(zod@4.6.7) + '@scalar/json-magic': 0.15.7 + '@scalar/openapi-parser': 0.29.15 + '@scalar/openapi-types': 0.9.7 chokidar: 5.0.0 commander: 15.0.0 execa: 9.6.1 - find-up: 8.0.0 - fs-extra: 11.4.0 - get-tsconfig: 4.14.2 + get-tsconfig: 4.14.3 jiti: 2.7.0 - js-yaml: 4.3.1 - remeda: 2.40.0 + js-yaml: 4.3.2 + json5: 2.2.3 string-argv: 0.3.2 - typedoc: 0.28.20(typescript@6.0.3) - typedoc-plugin-coverage: 4.0.3(typedoc@0.28.20(typescript@6.0.3)) - typedoc-plugin-markdown: 4.12.0(typedoc@0.28.20(typescript@6.0.3)) optionalDependencies: - prettier: 3.9.6 + prettier: 3.9.10 transitivePeerDependencies: - '@faker-js/faker' - - supports-color + - '@modelcontextprotocol/server' + - '@pinia/colada' + - '@tanstack/angular-query-experimental' + - '@tanstack/react-query' + - '@tanstack/solid-query' + - '@tanstack/svelte-query' + - '@tanstack/vue-query' + - effect + - msw + - swr - typescript + - zod - oxfmt@0.64.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + oxc-parser@0.148.0: dependencies: - tinypool: 2.1.0 + '@oxc-project/types': 0.148.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.148.0 + '@oxc-parser/binding-android-arm64': 0.148.0 + '@oxc-parser/binding-darwin-arm64': 0.148.0 + '@oxc-parser/binding-darwin-x64': 0.148.0 + '@oxc-parser/binding-freebsd-x64': 0.148.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.148.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.148.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.148.0 + '@oxc-parser/binding-linux-arm64-musl': 0.148.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.148.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.148.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.148.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.148.0 + '@oxc-parser/binding-linux-x64-gnu': 0.148.0 + '@oxc-parser/binding-linux-x64-musl': 0.148.0 + '@oxc-parser/binding-openharmony-arm64': 0.148.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.148.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.148.0 + '@oxc-parser/binding-win32-x64-msvc': 0.148.0 + optional: true + + oxc-parser@0.152.0: + dependencies: + '@oxc-project/types': 0.152.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.64.0 - '@oxfmt/binding-android-arm64': 0.64.0 - '@oxfmt/binding-darwin-arm64': 0.64.0 - '@oxfmt/binding-darwin-x64': 0.64.0 - '@oxfmt/binding-freebsd-x64': 0.64.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.64.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.64.0 - '@oxfmt/binding-linux-arm64-gnu': 0.64.0 - '@oxfmt/binding-linux-arm64-musl': 0.64.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.64.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.64.0 - '@oxfmt/binding-linux-riscv64-musl': 0.64.0 - '@oxfmt/binding-linux-s390x-gnu': 0.64.0 - '@oxfmt/binding-linux-x64-gnu': 0.64.0 - '@oxfmt/binding-linux-x64-musl': 0.64.0 - '@oxfmt/binding-openharmony-arm64': 0.64.0 - '@oxfmt/binding-win32-arm64-msvc': 0.64.0 - '@oxfmt/binding-win32-ia32-msvc': 0.64.0 - '@oxfmt/binding-win32-x64-msvc': 0.64.0 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + '@oxc-parser/binding-android-arm-eabi': 0.152.0 + '@oxc-parser/binding-android-arm64': 0.152.0 + '@oxc-parser/binding-darwin-arm64': 0.152.0 + '@oxc-parser/binding-darwin-x64': 0.152.0 + '@oxc-parser/binding-freebsd-x64': 0.152.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.152.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.152.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.152.0 + '@oxc-parser/binding-linux-arm64-musl': 0.152.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.152.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.152.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.152.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.152.0 + '@oxc-parser/binding-linux-x64-gnu': 0.152.0 + '@oxc-parser/binding-linux-x64-musl': 0.152.0 + '@oxc-parser/binding-openharmony-arm64': 0.152.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.152.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.152.0 + '@oxc-parser/binding-win32-x64-msvc': 0.152.0 + + oxfmt@0.74.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): + dependencies: + tinypool: 2.2.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.74.0 + '@oxfmt/binding-android-arm64': 0.74.0 + '@oxfmt/binding-darwin-arm64': 0.74.0 + '@oxfmt/binding-darwin-x64': 0.74.0 + '@oxfmt/binding-freebsd-x64': 0.74.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.74.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.74.0 + '@oxfmt/binding-linux-arm64-gnu': 0.74.0 + '@oxfmt/binding-linux-arm64-musl': 0.74.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.74.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.74.0 + '@oxfmt/binding-linux-riscv64-musl': 0.74.0 + '@oxfmt/binding-linux-s390x-gnu': 0.74.0 + '@oxfmt/binding-linux-x64-gnu': 0.74.0 + '@oxfmt/binding-linux-x64-musl': 0.74.0 + '@oxfmt/binding-openharmony-arm64': 0.74.0 + '@oxfmt/binding-win32-arm64-msvc': 0.74.0 + '@oxfmt/binding-win32-ia32-msvc': 0.74.0 + '@oxfmt/binding-win32-x64-msvc': 0.74.0 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.2 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - package-manager-detector@1.8.0: {} + package-manager-detector@1.9.0: {} - paneforge@1.0.2(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + paneforge@1.0.2(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - runed: 0.23.4(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - svelte-toolbelt: 0.9.3(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + runed: 0.23.4(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + svelte-toolbelt: 0.9.3(svelte@5.57.2(@typescript-eslint/types@8.72.0)) parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.3.0 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.29.7 @@ -11313,500 +9470,276 @@ snapshots: path-key@4.0.0: {} - path-parse@1.0.7: {} - - path-scurry@2.0.2: - dependencies: - lru-cache: 11.5.2 - minipass: 7.1.3 - path-to-regexp@6.3.0: {} - path-type@4.0.0: {} - pathe@2.0.3: {} - payload@3.88.0(graphql@16.14.1)(supports-color@10.2.2)(typescript@6.0.3): - dependencies: - '@next/env': 15.5.19 - '@payloadcms/translations': 3.88.0 - '@types/busboy': 1.5.4 - ajv: 8.18.0 - bson-objectid: 2.0.4 - busboy: 1.6.0 - ci-info: 4.4.0 - console-table-printer: 2.12.1 - croner: 10.0.1 - dataloader: 2.2.3 - deepmerge: 4.3.1 - file-type: 21.3.4(supports-color@10.2.2) - get-tsconfig: 4.8.1 - graphql: 16.14.1 - http-status: 2.1.0 - image-dimensions: 2.5.1 - ipaddr.js: 2.2.0 - jose: 5.10.0 - json-schema-to-typescript: 15.0.3 - minimist: 1.2.8 - path-to-regexp: 6.3.0 - pino: 9.14.0 - pino-pretty: 13.1.2 - pluralize: 8.0.0 - qs-esm: 8.0.1 - range-parser: 1.2.1 - sanitize-filename: 1.6.3 - ts-essentials: 10.0.3(typescript@6.0.3) - tsx: 4.22.4 - undici: 7.29.0 - uuid: 13.0.2 - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate - - perfect-debounce@2.1.0: {} - - pg-int8@1.0.1: - optional: true - - pg-protocol@1.14.0: - optional: true - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.1 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - optional: true - picocolors@1.1.1: {} - picomatch@2.3.2: {} - - picomatch@4.0.5: {} - - pino-abstract-transport@2.0.0: - dependencies: - split2: 4.2.0 + picomatch@4.0.7: {} - pino-pretty@13.1.2: + pkg-types@2.4.0: dependencies: - colorette: 2.0.20 - dateformat: 4.6.3 - fast-copy: 3.0.2 - fast-safe-stringify: 2.1.1 - help-me: 5.0.0 - joycon: 3.1.1 - minimist: 1.2.8 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pump: 3.0.4 - secure-json-parse: 4.1.0 - sonic-boom: 4.2.1 - strip-json-comments: 5.0.3 - - pino-std-serializers@7.1.0: {} - - pino@9.14.0: - dependencies: - '@pinojs/redact': 0.4.0 - atomic-sleep: 1.0.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.1.0 - process-warning: 5.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 4.2.1 - thread-stream: 3.2.0 - - pkg-types@2.3.1: - dependencies: - confbox: 0.2.4 - exsolve: 1.1.1 + confbox: 0.3.1 + exsolve: 1.1.3 pathe: 2.0.3 - playwright-core@1.62.1: {} + playwright-core@1.64.1: {} - playwright@1.62.1: + playwright@1.64.1: dependencies: - playwright-core: 1.62.1 - optionalDependencies: - fsevents: 2.3.2 - - pluralize@8.0.0: {} + playwright-core: 1.64.1 pngjs@7.0.0: {} - postcss-load-config@3.1.4(postcss@8.5.26): + postcss-load-config@3.1.4(postcss@8.5.31): dependencies: lilconfig: 2.1.0 yaml: 1.10.3 optionalDependencies: - postcss: 8.5.26 + postcss: 8.5.31 - postcss-safe-parser@7.0.1(postcss@8.5.26): + postcss-safe-parser@7.1.0(postcss@8.5.31): dependencies: - postcss: 8.5.26 + postcss: 8.5.31 - postcss-scss@4.0.9(postcss@8.5.26): + postcss-scss@4.0.9(postcss@8.5.31): dependencies: - postcss: 8.5.26 + postcss: 8.5.31 - postcss-selector-parser@7.1.5: + postcss-selector-parser@7.1.7: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.31: - dependencies: - nanoid: 3.3.18 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postcss@8.5.26: + postcss@8.5.31: dependencies: - nanoid: 3.3.18 + nanoid: 3.3.20 picocolors: 1.1.1 - source-map-js: 1.2.1 - - postgres-array@2.0.0: - optional: true - - postgres-bytea@1.0.1: - optional: true - - postgres-date@1.0.7: - optional: true - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - optional: true + source-map-js: 1.2.2 postgres@3.4.9: {} + powershell-utils@0.2.1: {} + prelude-ls@1.2.1: {} - prettier@3.9.6: {} + prettier@3.9.10: {} - pretty-ms@9.3.0: + pretty-ms@10.0.0: {} + + pretty-ms@9.3.1: dependencies: parse-ms: 4.0.0 - prismjs@1.30.0: {} - - process-warning@5.0.0: {} + prism-svelte@0.4.7: {} - progress@2.0.3: {} + prismjs@1.30.0: {} prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - property-expr@2.0.6: optional: true - proxy-from-env@1.1.0: {} - - pump@3.0.4: + prosemirror-changeset@2.4.4: dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 + prosemirror-transform: 1.12.2 - punycode.js@2.3.1: {} + prosemirror-commands@1.7.2: + dependencies: + prosemirror-model: 1.25.12 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 - punycode@2.3.1: {} + prosemirror-dropcursor@1.8.4: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 + prosemirror-view: 1.42.6 - pure-rand@6.1.0: - optional: true + prosemirror-gapcursor@1.4.1: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.12 + prosemirror-state: 1.4.4 + prosemirror-view: 1.42.6 - qs-esm@8.0.1: {} + prosemirror-history@1.5.1: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 + prosemirror-view: 1.42.6 + rope-sequence: 1.3.4 - quick-format-unescaped@4.0.4: {} + prosemirror-inputrules@1.5.1: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 - range-parser@1.2.1: {} + prosemirror-keymap@1.2.3: + dependencies: + prosemirror-state: 1.4.4 + w3c-keyname: 2.2.8 - rc9@3.0.1: + prosemirror-model@1.25.12: dependencies: - defu: 6.1.7 - destr: 2.0.5 + orderedmap: 2.1.1 - react-datepicker@7.6.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + prosemirror-schema-list@1.5.1: dependencies: - '@floating-ui/react': 0.27.20(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - clsx: 2.1.1 - date-fns: 3.6.0 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) + prosemirror-model: 1.25.12 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 - react-dom@19.2.7(react@19.2.7): + prosemirror-state@1.4.4: dependencies: - react: 19.2.7 - scheduler: 0.27.0 + prosemirror-model: 1.25.12 + prosemirror-transform: 1.12.2 + prosemirror-view: 1.42.6 - react-error-boundary@4.1.2(react@19.2.7): + prosemirror-tables@1.8.5: dependencies: - '@babel/runtime': 7.29.7 - react: 19.2.7 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.12 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 + prosemirror-view: 1.42.6 - react-error-boundary@6.1.2(react@19.2.7): + prosemirror-transform@1.12.2: dependencies: - react: 19.2.7 + prosemirror-model: 1.25.12 - react-image-crop@10.1.8(react@19.2.7): + prosemirror-view@1.42.6: dependencies: - react: 19.2.7 + prosemirror-model: 1.25.12 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.2 + + punycode@2.3.1: {} - react-is@16.13.1: {} + pure-rand@6.1.0: + optional: true - react-select@5.9.0(@types/react@19.2.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2): + qified@0.10.1: dependencies: - '@babel/runtime': 7.29.7 - '@emotion/cache': 11.14.0 - '@emotion/react': 11.14.0(@types/react@19.2.16)(react@19.2.7)(supports-color@10.2.2) - '@floating-ui/dom': 1.8.0 - '@types/react-transition-group': 4.4.12(@types/react@19.2.16) - memoize-one: 6.0.0 - prop-types: 15.8.1 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-transition-group: 4.4.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.16)(react@19.2.7) - transitivePeerDependencies: - - '@types/react' - - supports-color + hookified: 2.2.0 - react-transition-group@4.4.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + rc9@3.1.0: dependencies: - '@babel/runtime': 7.29.7 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - - react@19.2.7: {} + defu: 6.1.7 + destr: 2.0.5 - readdirp@3.6.0: + react-dom@19.3.1(react@19.3.1): dependencies: - picomatch: 2.3.2 + react: 19.3.1 + scheduler: 0.28.0 + + react@19.3.1: {} readdirp@4.1.2: {} readdirp@5.1.1: {} - real-require@0.2.0: {} - - regexp-to-ast@0.5.0: {} - - regexparam@3.0.0: {} - - remeda@2.40.0: {} - require-from-string@2.0.2: {} - require-in-the-middle@8.0.1(supports-color@7.2.0): - dependencies: - debug: 4.4.3(supports-color@7.2.0) - module-details-from-path: 1.0.4 - transitivePeerDependencies: - - supports-color - resolve-from@4.0.0: {} resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} - resolve@1.22.12: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - rolldown@1.2.5: + rolldown@1.2.14: dependencies: - '@oxc-project/types': 0.146.0 + '@oxc-project/types': 0.154.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.5 - '@rolldown/binding-android-arm64': 1.2.5 - '@rolldown/binding-darwin-arm64': 1.2.5 - '@rolldown/binding-darwin-x64': 1.2.5 - '@rolldown/binding-freebsd-x64': 1.2.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.5 - '@rolldown/binding-linux-arm64-gnu': 1.2.5 - '@rolldown/binding-linux-arm64-musl': 1.2.5 - '@rolldown/binding-linux-ppc64-gnu': 1.2.5 - '@rolldown/binding-linux-s390x-gnu': 1.2.5 - '@rolldown/binding-linux-x64-gnu': 1.2.5 - '@rolldown/binding-linux-x64-musl': 1.2.5 - '@rolldown/binding-openharmony-arm64': 1.2.5 - '@rolldown/binding-win32-arm64-msvc': 1.2.5 - '@rolldown/binding-win32-x64-msvc': 1.2.5 - - rollup@4.62.4: - dependencies: - '@types/estree': 1.0.9 - optionalDependencies: - '@napi-rs/lzma-linux-x64-gnu': 1.5.1 - '@rollup/rollup-android-arm-eabi': 4.62.4 - '@rollup/rollup-android-arm64': 4.62.4 - '@rollup/rollup-darwin-arm64': 4.62.4 - '@rollup/rollup-darwin-x64': 4.62.4 - '@rollup/rollup-freebsd-arm64': 4.62.4 - '@rollup/rollup-freebsd-x64': 4.62.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.62.4 - '@rollup/rollup-linux-arm-musleabihf': 4.62.4 - '@rollup/rollup-linux-arm64-gnu': 4.62.4 - '@rollup/rollup-linux-arm64-musl': 4.62.4 - '@rollup/rollup-linux-loong64-gnu': 4.62.4 - '@rollup/rollup-linux-loong64-musl': 4.62.4 - '@rollup/rollup-linux-ppc64-gnu': 4.62.4 - '@rollup/rollup-linux-ppc64-musl': 4.62.4 - '@rollup/rollup-linux-riscv64-gnu': 4.62.4 - '@rollup/rollup-linux-riscv64-musl': 4.62.4 - '@rollup/rollup-linux-s390x-gnu': 4.62.4 - '@rollup/rollup-linux-x64-gnu': 4.62.4 - '@rollup/rollup-linux-x64-musl': 4.62.4 - '@rollup/rollup-openbsd-x64': 4.62.4 - '@rollup/rollup-openharmony-arm64': 4.62.4 - '@rollup/rollup-win32-arm64-msvc': 4.62.4 - '@rollup/rollup-win32-ia32-msvc': 4.62.4 - '@rollup/rollup-win32-x64-gnu': 4.62.4 - '@rollup/rollup-win32-x64-msvc': 4.62.4 - fsevents: 2.3.3 + '@rolldown/binding-android-arm-eabi': 1.2.14 + '@rolldown/binding-android-arm64': 1.2.14 + '@rolldown/binding-darwin-arm64': 1.2.14 + '@rolldown/binding-darwin-x64': 1.2.14 + '@rolldown/binding-freebsd-x64': 1.2.14 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.14 + '@rolldown/binding-linux-arm64-gnu': 1.2.14 + '@rolldown/binding-linux-arm64-musl': 1.2.14 + '@rolldown/binding-linux-ppc64-gnu': 1.2.14 + '@rolldown/binding-linux-s390x-gnu': 1.2.14 + '@rolldown/binding-linux-x64-gnu': 1.2.14 + '@rolldown/binding-linux-x64-musl': 1.2.14 + '@rolldown/binding-openharmony-arm64': 1.2.14 + '@rolldown/binding-win32-arm64-msvc': 1.2.14 + '@rolldown/binding-win32-x64-msvc': 1.2.14 + + rope-sequence@1.3.4: {} rou3@0.9.2: {} run-applescript@7.1.0: {} - runed@0.23.4(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + runed@0.23.4(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: esm-env: 1.2.2 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - runed@0.25.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + runed@0.25.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: esm-env: 1.2.2 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - runed@0.28.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + runed@0.28.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: esm-env: 1.2.2 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - runed@0.29.2(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + runed@0.29.2(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: esm-env: 1.2.2 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - runed@0.35.1(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + runed@0.35.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: dequal: 2.0.3 esm-env: 1.2.2 lz-string: 1.5.0 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) optionalDependencies: - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + '@sveltejs/kit': 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) - runed@0.37.1(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(zod@4.4.3): + runed@0.37.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(zod@4.6.7): dependencies: dequal: 2.0.3 esm-env: 1.2.2 lz-string: 1.5.0 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) optionalDependencies: - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - zod: 4.4.3 + '@sveltejs/kit': 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + zod: 4.6.7 sade@1.8.1: dependencies: mri: 1.2.0 - safe-stable-stringify@2.5.0: {} - - sanitize-filename@1.6.3: - dependencies: - truncate-utf8-bytes: 1.0.2 - - sass@1.77.4: - dependencies: - chokidar: 3.6.0 - immutable: 4.3.8 - source-map-js: 1.2.1 - - scheduler@0.25.0: {} - - scheduler@0.27.0: {} + scheduler@0.28.0: {} schema-dts@1.1.5: {} - secure-json-parse@4.1.0: {} - - semifies@1.0.0: {} - semver@6.3.1: {} semver@7.8.5: {} - set-cookie-parser@3.1.2: {} + set-cookie-parser@3.1.4: {} - shadcn-svelte@1.5.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + shadcn-svelte@1.7.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: + cn: 0.3.3 commander: 14.0.3 node-fetch-native: 1.6.7 - postcss: 8.5.26 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - tailwind-merge: 3.6.0 + postcss: 8.5.31 + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - sharp@0.34.5: - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.8.5 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 - optional: true - - sharp@0.35.4(@types/node@26.2.0): + sharp@0.35.4(@types/node@26.6.5): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 @@ -11837,7 +9770,7 @@ snapshots: '@img/sharp-win32-arm64': 0.35.4 '@img/sharp-win32-ia32': 0.35.4 '@img/sharp-win32-x64': 0.35.4 - '@types/node': 26.2.0 + '@types/node': 26.6.5 shebang-command@2.0.0: dependencies: @@ -11845,15 +9778,11 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.10.0: {} - - siginfo@2.0.0: {} + shell-quote@1.12.0: {} signal-exit@4.1.0: {} - simple-git-hooks@2.13.1: {} - - simple-wcswidth@1.1.2: {} + simple-git-hooks@2.14.0: {} sirv@3.0.2: dependencies: @@ -11871,86 +9800,40 @@ snapshots: skinview-utils: 0.7.1 three: 0.156.1 - sonic-boom@4.2.1: - dependencies: - atomic-sleep: 1.0.0 - - sonner@1.7.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7): - dependencies: - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - - sorcery@1.0.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - minimist: 1.2.8 - tiny-glob: 0.2.9 - - source-map-js@1.2.1: {} + source-map-js@1.2.2: {} source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.5.7: {} - source-map@0.6.1: {} - split2@4.2.0: {} - - stackback@0.0.2: {} - - state-local@1.0.7: {} - - std-env@4.2.0: {} - - streamsearch@1.1.0: {} + std-env@4.3.0: {} string-argv@0.3.2: {} string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.6.0 + get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 - string-width@8.2.2: + string-width@8.3.0: dependencies: - get-east-asian-width: 1.6.0 + get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - strip-ansi@7.2.0: dependencies: - ansi-regex: 6.3.0 + ansi-regex: 6.4.0 strip-final-newline@4.0.0: {} - strip-json-comments@5.0.3: {} - - strtok3@10.3.5: - dependencies: - '@tokenizer/token': 0.3.0 - style-to-object@1.0.14: dependencies: inline-style-parser: 0.2.7 - styled-jsx@5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(babel-plugin-macros@3.1.0)(react@19.2.7): - dependencies: - client-only: 0.0.1 - react: 19.2.7 - optionalDependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - babel-plugin-macros: 3.1.0 - - stylis@4.2.0: {} - super-sitemap@2.0.6: {} superstruct@2.0.2: @@ -11958,144 +9841,137 @@ snapshots: supports-color@10.2.2: {} - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svelte-check@4.7.6(picomatch@4.0.5)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3): + svelte-check@4.7.7(picomatch@4.0.7)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 '@sveltejs/load-config': 0.2.3 chokidar: 4.0.3 - fdir: 6.5.0(picomatch@4.0.5) + fdir: 6.5.0(picomatch@4.0.7) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) typescript: 6.0.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@1.8.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-eslint-parser@1.9.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - postcss: 8.5.26 - postcss-scss: 4.0.9(postcss@8.5.26) - postcss-selector-parser: 7.1.5 + postcss: 8.5.31 + postcss-scss: 4.0.9(postcss@8.5.31) + postcss-selector-parser: 7.1.7 semver: 7.8.5 optionalDependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-interactions@0.2.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-interactions@0.2.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-persisted-store@0.12.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-persisted-store@0.12.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-seo@2.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-seo@2.0.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: schema-dts: 1.1.5 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-sonner@1.2.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-sonner@1.2.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - runed: 0.28.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + runed: 0.28.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-tiny-virtual-list@4.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-tiny-virtual-list@4.0.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-toolbelt@0.10.6(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-toolbelt@0.10.6(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: clsx: 2.1.1 - runed: 0.35.1(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + runed: 0.35.1(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0)) style-to-object: 1.0.14 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) transitivePeerDependencies: - '@sveltejs/kit' - svelte-toolbelt@0.5.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-toolbelt@0.5.0(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: clsx: 2.1.1 style-to-object: 1.0.14 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-toolbelt@0.7.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-toolbelt@0.7.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: clsx: 2.1.1 - runed: 0.23.4(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + runed: 0.23.4(svelte@5.57.2(@typescript-eslint/types@8.72.0)) style-to-object: 1.0.14 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte-toolbelt@0.9.3(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + svelte-toolbelt@0.9.3(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: clsx: 2.1.1 - runed: 0.29.2(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + runed: 0.29.2(svelte@5.57.2(@typescript-eslint/types@8.72.0)) style-to-object: 1.0.14 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) - svelte@5.56.10(@typescript-eslint/types@8.67.0): + svelte@5.57.2(@typescript-eslint/types@8.72.0): dependencies: '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 - '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) + '@jridgewell/sourcemap-codec': 1.6.0 + '@sveltejs/acorn-typescript': 1.0.13(acorn@8.19.0) '@types/estree': 1.0.9 - '@types/trusted-types': 2.0.7 - acorn: 8.18.0 + acorn: 8.19.0 aria-query: 5.3.1 axobject-query: 4.1.0 clsx: 2.1.1 - devalue: 5.9.1 + devalue: 5.9.4 esm-env: 1.2.2 - esrap: 2.3.5(@typescript-eslint/types@8.67.0) + esrap: 2.4.0(@typescript-eslint/types@8.72.0) is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.21 - zimmerframe: 1.1.4 + zimmerframe: 1.1.5 transitivePeerDependencies: - '@typescript-eslint/types' - sveltekit-superforms@2.30.2(@sveltejs/kit@2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(@types/json-schema@7.0.15)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3): + sveltekit-superforms@3.0.0(@sveltejs/kit@3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(@types/json-schema@7.0.15)(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3): dependencies: - '@sveltejs/kit': 2.70.3(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@6.0.3)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - devalue: 5.9.1 + '@sveltejs/kit': 3.1.0(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(svelte@5.57.2(@typescript-eslint/types@8.72.0))(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + devalue: 5.9.4 + esm-env: 1.2.2 memoize-weak: 1.0.2 - svelte: 5.56.10(@typescript-eslint/types@8.67.0) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) ts-deepmerge: 8.0.0 optionalDependencies: '@exodus/schemasafe': 1.3.0 '@standard-schema/spec': 1.1.0 '@typeschema/class-validator': 0.3.0(@types/json-schema@7.0.15)(class-validator@0.14.4) - '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(typescript@6.0.3)) - '@vinejs/vine': 3.0.1 - arktype: 2.2.3 + '@valibot/to-json-schema': 1.8.0(valibot@1.5.0(typescript@6.0.3)) + '@vinejs/vine': 4.4.0 + arktype: 2.2.8 class-validator: 0.14.4 - effect: 3.22.1 - joi: 17.13.4 + effect: 3.22.3 + joi: 17.13.8 json-schema-to-ts: 3.1.1 superstruct: 2.0.2 - typebox: 1.3.14 - valibot: 1.4.2(typescript@6.0.3) + typebox: 1.4.2 + valibot: 1.5.0(typescript@6.0.3) yup: 1.7.1 - zod: 4.4.3 - zod-v3-to-json-schema: 4.0.0(zod@4.4.3) + zod: 4.6.7 + zod-v3-to-json-schema: 4.0.0(zod@4.6.7) transitivePeerDependencies: - '@types/json-schema' - typescript tabbable@6.5.0: {} - tailwind-merge@3.6.0: {} + tagged-tag@1.0.0: {} - tailwind-variants@3.3.1(tailwind-merge@3.6.0)(tailwindcss@4.3.3): + tailwind-variants@3.3.1(tailwindcss@4.3.3): optionalDependencies: - tailwind-merge: 3.6.0 tailwindcss: 4.3.3 tailwindcss-motion@1.1.1(tailwindcss@4.3.3): @@ -12104,11 +9980,11 @@ snapshots: tailwindcss@4.3.3: {} - takumi-js@2.10.0(csstype@3.2.3)(react@19.2.7): + takumi-js@2.17.1(react@19.3.1): dependencies: - '@takumi-rs/core': 2.10.0(csstype@3.2.3)(react@19.2.7) - '@takumi-rs/helpers': 2.10.0(react@19.2.7) - '@takumi-rs/wasm': 2.10.0(csstype@3.2.3)(react@19.2.7) + '@takumi-rs/core': 2.17.1(react@19.3.1) + '@takumi-rs/helpers': 2.17.1(react@19.3.1) + '@takumi-rs/wasm': 2.17.1(react@19.3.1) transitivePeerDependencies: - csstype - preact @@ -12116,42 +9992,23 @@ snapshots: tapable@2.3.3: {} - thread-stream@3.2.0: - dependencies: - real-require: 0.2.0 - three@0.156.1: {} tiny-case@1.0.3: optional: true - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - - tinybench@2.9.0: {} + tinybench@6.2.2: {} - tinyexec@1.3.0: {} + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 - - tinypool@2.1.0: {} + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 - tinyrainbow@3.1.1: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 + tinypool@2.2.0: {} - token-types@6.1.2: - dependencies: - '@borewit/text-codec': 0.2.2 - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 + tinyrainbow@3.2.0: {} toposort@2.0.2: optional: true @@ -12160,10 +10017,6 @@ snapshots: tr46@0.0.3: {} - truncate-utf8-bytes@1.0.2: - dependencies: - utf8-byte-length: 1.0.5 - ts-algebra@2.0.0: optional: true @@ -12173,23 +10026,15 @@ snapshots: ts-deepmerge@8.0.0: {} - ts-essentials@10.0.3(typescript@6.0.3): - optionalDependencies: - typescript: 6.0.3 - tslib@2.8.1: {} - tsx@4.22.4: + tsx@4.23.15: dependencies: esbuild: 0.28.2 optionalDependencies: fsevents: 2.3.3 - tsx@4.23.12: - dependencies: - esbuild: 0.28.2 - optionalDependencies: - fsevents: 2.3.3 + turnstile-types@1.2.3: {} tw-animate-css@1.4.0: {} @@ -12200,46 +10045,33 @@ snapshots: type-fest@2.19.0: optional: true - typebox@1.3.14: - optional: true - - typedoc-plugin-coverage@4.0.3(typedoc@0.28.20(typescript@6.0.3)): + type-fest@5.10.0: dependencies: - typedoc: 0.28.20(typescript@6.0.3) + tagged-tag: 1.0.0 - typedoc-plugin-markdown@4.12.0(typedoc@0.28.20(typescript@6.0.3)): - dependencies: - typedoc: 0.28.20(typescript@6.0.3) - - typedoc@0.28.20(typescript@6.0.3): - dependencies: - '@gerrit0/mini-shiki': 3.23.0 - lunr: 2.3.9 - markdown-it: 14.3.0 - minimatch: 10.2.6 - typescript: 6.0.3 - yaml: 2.9.0 + typebox@1.4.2: + optional: true - typescript-eslint@8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/eslint-plugin': 8.72.0(@typescript-eslint/parser@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.72.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.13.0(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color typescript@6.0.3: {} - uc.micro@2.1.0: {} + undici-types@8.9.0: {} - uint8array-extras@1.5.0: {} + undici@7.29.0: {} - undici-types@8.3.0: {} + undici@7.29.1: {} - undici@7.29.0: {} + undici@7.30.1: {} unenv@2.0.0-rc.24: dependencies: @@ -12247,34 +10079,26 @@ snapshots: unicorn-magic@0.3.0: {} - unist-util-is@6.0.1: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 + unist-util-is@4.1.0: {} - unist-util-stringify-position@4.0.0: + unist-util-stringify-position@2.0.3: dependencies: - '@types/unist': 3.0.3 + '@types/unist': 2.0.11 - unist-util-visit-parents@6.0.2: + unist-util-visit-parents@3.1.1: dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 + '@types/unist': 2.0.11 + unist-util-is: 4.1.0 - unist-util-visit@5.1.0: + unist-util-visit@2.0.3: dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - - universalify@2.0.1: {} + '@types/unist': 2.0.11 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 - update-browserslist-db@1.2.3(browserslist@4.28.6): + update-browserslist-db@1.3.4(browserslist@4.29.4): dependencies: - browserslist: 4.28.6 + browserslist: 4.29.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -12282,24 +10106,11 @@ snapshots: dependencies: punycode: 2.3.1 - use-context-selector@2.0.0(react@19.2.7)(scheduler@0.25.0): - dependencies: - react: 19.2.7 - scheduler: 0.25.0 - - use-isomorphic-layout-effect@1.2.1(@types/react@19.2.16)(react@19.2.7): - dependencies: - react: 19.2.7 - optionalDependencies: - '@types/react': 19.2.16 - - utf8-byte-length@1.0.5: {} - util-deprecate@1.0.2: {} - uuid@13.0.2: {} + uuid@14.0.3: {} - valibot@1.4.2(typescript@6.0.3): + valibot@1.5.0(typescript@6.0.3): optionalDependencies: typescript: 6.0.3 optional: true @@ -12307,78 +10118,71 @@ snapshots: validator@13.15.35: optional: true - vaul-svelte@1.0.0-next.7(svelte@5.56.10(@typescript-eslint/types@8.67.0)): + vaul-svelte@1.0.0-next.7(svelte@5.57.2(@typescript-eslint/types@8.72.0)): dependencies: - runed: 0.23.4(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - svelte-toolbelt: 0.7.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + runed: 0.23.4(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + svelte-toolbelt: 0.7.1(svelte@5.57.2(@typescript-eslint/types@8.72.0)) - vfile-message@4.0.3: + verkit@0.5.0: {} + + vfile-message@2.0.4: dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 + '@types/unist': 2.0.11 + unist-util-stringify-position: 2.0.3 - vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0): + vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1): dependencies: lightningcss: 1.33.0 - picomatch: 4.0.5 - postcss: 8.5.26 - rolldown: 1.2.5 + picomatch: 4.0.7 + postcss: 8.5.31 + rolldown: 1.2.14 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.2.0 + '@types/node': 26.6.5 esbuild: 0.28.2 fsevents: 2.3.3 jiti: 2.7.0 - sass: 1.77.4 - tsx: 4.23.12 - yaml: 2.9.0 + tsx: 4.23.15 + yaml: 2.9.1 - vitefu@1.1.3(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)): + vitefu@1.1.3(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): optionalDependencies: - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) - vitest-browser-svelte@3.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.11): + vitest-browser-svelte@3.1.0(svelte@5.57.2(@typescript-eslint/types@8.72.0))(vitest@5.0.5): dependencies: - '@testing-library/svelte-core': 1.1.3(svelte@5.56.10(@typescript-eslint/types@8.67.0)) - svelte: 5.56.10(@typescript-eslint/types@8.67.0) - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) + '@testing-library/svelte-core': 1.1.3(svelte@5.57.2(@typescript-eslint/types@8.72.0)) + svelte: 5.57.2(@typescript-eslint/types@8.72.0) + vitest: 5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) - vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/browser-playwright@4.1.11)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(happy-dom@20.11.2)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)): + vitest@5.0.5(@types/node@26.6.5)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-v8@5.0.5)(@vitest/ui@5.0.5)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.5(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + chai: 6.3.0 es-module-lexer: 2.3.2 expect-type: 1.4.0 - magic-string: 0.30.21 - obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.3.0 + magic-string: 1.4.3 + obug: 3.0.0 + picomatch: 4.0.7 + std-env: 4.3.0 + tinybench: 6.2.2 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0) - why-is-node-running: 2.3.0 + vite: 8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) + why-is-node-running: 3.2.1 optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.2.0 - '@vitest/browser-playwright': 4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.77.4)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11) - '@vitest/coverage-v8': 4.1.11(@vitest/browser@4.1.11)(vitest@4.1.11) - '@vitest/ui': 4.1.11(vitest@4.1.11) - happy-dom: 20.11.2 + '@types/node': 26.6.5 + '@vitest/browser-playwright': 5.0.5(playwright@1.64.1)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))(vitest@5.0.5) + '@vitest/coverage-v8': 5.0.5(@vitest/browser@5.0.5)(vitest@5.0.5) + '@vitest/ui': 5.0.5(vitest@5.0.5) transitivePeerDependencies: - msw - webidl-conversions@3.0.1: {} + w3c-keyname@2.2.8: {} - whatwg-mimetype@3.0.0: {} + webidl-conversions@3.0.1: {} whatwg-url@5.0.0: dependencies: @@ -12389,10 +10193,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 + why-is-node-running@3.2.1: {} word-wrap@1.2.5: {} @@ -12404,22 +10205,18 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20260917.1 '@cloudflare/workerd-windows-64': 1.20260917.1 - worktop@0.8.0-next.18: - dependencies: - mrmime: 2.0.1 - regexparam: 3.0.0 - - wrangler@4.134.0(@types/node@26.2.0): + wrangler@4.134.0(@cloudflare/workers-types@5.20261019.1)(@types/node@26.6.5): dependencies: '@cloudflare/kv-asset-handler': 0.5.0 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260917.1) blake3-wasm: 2.1.5 esbuild: 0.28.1 - miniflare: 5.20260917.0-alpha(@types/node@26.2.0) + miniflare: 5.20260917.0-alpha(@types/node@26.6.5) path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 workerd: 1.20260917.1 optionalDependencies: + '@cloudflare/workers-types': 5.20261019.1 fsevents: 2.3.3 transitivePeerDependencies: - '@types/node' @@ -12432,21 +10229,19 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.2.0 - wrappy@1.0.2: {} - ws@8.21.0: {} - wsl-utils@0.1.0: + ws@8.22.0: {} + + wsl-utils@1.0.1: dependencies: is-wsl: 3.1.1 + powershell-utils: 0.2.1 - xss@1.0.15: + y-protocols@1.0.7(yjs@13.6.33): dependencies: - commander: 2.20.3 - cssfilter: 0.0.10 - - xtend@4.0.2: - optional: true + lib0: 0.2.119 + yjs: 13.6.33 y18n@5.0.8: {} @@ -12454,28 +10249,26 @@ snapshots: yaml@1.10.3: {} - yaml@2.9.0: {} + yaml@2.9.1: {} yargs-parser@22.0.0: {} - yargs@18.1.0: + yargs@18.2.0: dependencies: cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - string-width: 8.2.2 + string-width: 8.3.0 y18n: 5.0.8 yargs-parser: 22.0.0 - yjs@13.6.31: + yjs@13.6.33: dependencies: - lib0: 0.2.117 + lib0: 0.2.119 yocto-queue@0.1.0: {} - yocto-queue@1.2.2: {} - - yocto-spinner@0.2.3: + yocto-spinner@1.2.2: dependencies: yoctocolors: 2.2.0 @@ -12502,13 +10295,11 @@ snapshots: type-fest: 2.19.0 optional: true - zimmerframe@1.1.4: {} + zimmerframe@1.1.5: {} - zod-v3-to-json-schema@4.0.0(zod@4.4.3): + zod-v3-to-json-schema@4.0.0(zod@4.6.7): dependencies: - zod: 4.4.3 + zod: 4.6.7 optional: true - zod@4.4.3: {} - - zwitch@2.0.4: {} + zod@4.6.7: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 67e047ff7..0f08c67ac 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,7 +1,6 @@ allowBuilds: "@prisma/client": false "@tailwindcss/oxide": true - "@sentry/cli": true better-sqlite3: true esbuild: true sharp: true diff --git a/src/app.d.ts b/src/app.d.ts index 651f4f7c7..071609cfc 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,9 +1,15 @@ -import type { Session, User } from "better-auth/minimal"; +import type { RequestLogger } from "evlog"; +import type { auth } from "#lib/server/auth"; +import type { DiscordProfileAssets } from "#lib/server/discord-profile"; +import type { McIdLink, McIdProfile } from "#lib/server/minecraft-accounts"; + +type AuthSession = typeof auth.$Infer.Session; // See https://kit.svelte.dev/docs/types#app // for information about these interfaces declare global { const __NPM_PACKAGE_VERSION__: string; + const __PRERENDER_VERSION__: string; namespace App { // interface Error {} @@ -20,8 +26,12 @@ declare global { } interface Locals { - user?: User; - session?: Session; + log: RequestLogger; + pendingDiscordProfile?: DiscordProfileAssets; + pendingMcIdProfile?: McIdProfile; + pendingMcIdLink?: McIdLink; + user?: AuthSession["user"]; + session?: AuthSession["session"]; } } } diff --git a/src/context/createContext.svelte.ts b/src/context/createContext.svelte.ts index a9ad8fb1d..10d749009 100644 --- a/src/context/createContext.svelte.ts +++ b/src/context/createContext.svelte.ts @@ -1,5 +1,7 @@ -import type { IsHover } from "$lib/hooks/is-hover.svelte"; -import type { IsMobile } from "$lib/hooks/is-mobile.svelte"; +import { createContext } from "svelte"; +import type { z } from "zod"; +import type { IsHover } from "#lib/hooks/is-hover.svelte.js"; +import type { IsMobile } from "#lib/hooks/is-mobile.svelte.js"; import type { ModelsCombinedOutput, ModelsMiscOutput, @@ -7,11 +9,13 @@ import type { ModelsStatData, ModelsSkillsOutput, ModelsStatsOutput -} from "$lib/shared/api/orval-generated"; -import { createContext } from "svelte"; +} from "#lib/shared/api/orval-generated"; +import type { ListEnchantmentsResponse } from "#lib/shared/api/orval-generated-zod"; + +export type Enchantments = z.infer; export class ProfileContext { - #current: ModelsStatsOutput | null = $state(null); + #current: ModelsStatsOutput | null = $state.raw(null); get current() { return this.#current; @@ -23,7 +27,7 @@ export class ProfileContext { } export class AllStatsContext { - #current: ModelsStatData[] = $state([]); + #current: ModelsStatData[] = $state.raw([]); get current() { return this.#current; @@ -34,8 +38,20 @@ export class AllStatsContext { } } +export class EnchantmentsContext { + #current: Enchantments = $state.raw([]); + + get current() { + return this.#current; + } + + set current(value: Enchantments) { + this.#current = value; + } +} + export class CombinedContext { - #current: ModelsCombinedOutput | null = $state(null); + #current: ModelsCombinedOutput | null = $state.raw(null); get current() { return this.#current; @@ -47,7 +63,7 @@ export class CombinedContext { } export class PacksContext { - #packs: ModelsResourcePackConfig[] = $state([]); + #packs: ModelsResourcePackConfig[] = $state.raw([]); get packs() { return this.#packs; @@ -59,7 +75,7 @@ export class PacksContext { } export class MiscContext { - #misc: ModelsMiscOutput | null = $state(null); + #misc: ModelsMiscOutput | null = $state.raw(null); get misc() { return this.#misc; @@ -71,7 +87,7 @@ export class MiscContext { } export class SkillsContext { - #skills: ModelsSkillsOutput | null = $state(null); + #skills: ModelsSkillsOutput | null = $state.raw(null); get skills() { return this.#skills; @@ -84,6 +100,7 @@ export class SkillsContext { export const [getProfileContext, setProfileContext] = createContext(); export const [getAllStatsContext, setAllStatsContext] = createContext(); +export const [getEnchantmentsContext, setEnchantmentsContext] = createContext(); export const [getCombinedContext, setCombinedContext] = createContext(); export const [getSkillsContext, setSkillsContext] = createContext(); export const [getMiscContext, setMiscContext] = createContext(); diff --git a/src/context/favorites.svelte.ts b/src/context/favorites.svelte.ts index 4c035fd43..e7970717a 100644 --- a/src/context/favorites.svelte.ts +++ b/src/context/favorites.svelte.ts @@ -5,7 +5,6 @@ import { createContext, untrack } from "svelte"; interface FavoritesData { uuid: string; ign: string; - displayName?: string; } export class FavoritesContext { diff --git a/src/context/internal.svelte.ts b/src/context/internal.svelte.ts index db1881b4d..0ad2f63f8 100644 --- a/src/context/internal.svelte.ts +++ b/src/context/internal.svelte.ts @@ -1,9 +1,9 @@ -import { SettingsTab } from "$lib/components/header/types"; -import { sections } from "$lib/sections/constants"; -import type { SectionName } from "$lib/sections/types"; -import type { ModelsStrippedItem } from "$lib/shared/api/orval-generated"; import type { Snippet } from "svelte"; import { createContext } from "svelte"; +import { SettingsTab } from "#lib/components/header/types"; +import { sections } from "#lib/sections/constants"; +import type { SectionName } from "#lib/sections/types"; +import type { ModelsStrippedItem } from "#lib/shared/api/orval-generated"; interface InternalStateData { tabValue: SectionName; diff --git a/src/context/newsroom-notifications.svelte.spec.ts b/src/context/newsroom-notifications.svelte.spec.ts index ccf547270..e44601a97 100644 --- a/src/context/newsroom-notifications.svelte.spec.ts +++ b/src/context/newsroom-notifications.svelte.spec.ts @@ -7,16 +7,16 @@ const post = (id: string, publishedAt: string | null = `2026-01-${id.padStart(2, id, title: `Post ${id}`, slug: `post-${id}`, - excerpt: null, + excerpt: "", type: "news", - tags: null, + tags: [], featured: false, heroImage: null, - body: null, + seoTitle: "", + seoDescription: "", publishedAt, - author: "author", - updatedAt: publishedAt ?? "2026-01-01T00:00:00.000Z", - createdAt: publishedAt ?? "2026-01-01T00:00:00.000Z" + author: null, + updatedAt: publishedAt ?? "2026-01-01T00:00:00.000Z" }); describe("NewsroomNotificationsContext", () => { @@ -28,21 +28,6 @@ describe("NewsroomNotificationsContext", () => { localStorage.clear(); }); - it("starts with zero unread posts", ({ expect }) => { - const cleanup = $effect.root(() => { - const notifications = new NewsroomNotificationsContext(); - - untrack(() => { - expect(notifications.current.seenPostIds).toEqual([]); - expect(notifications.current.lastSeenPublishedAt).toBeNull(); - expect(notifications.unreadCount).toBe(0); - expect(notifications.newestUnseen).toBeNull(); - }); - }); - - cleanup(); - }); - it("marks latest posts as unseen until they are seen", ({ expect }) => { const cleanup = $effect.root(() => { const notifications = new NewsroomNotificationsContext(); diff --git a/src/context/packs.svelte.spec.ts b/src/context/packs.svelte.spec.ts index ffb46bb98..c5bc91473 100644 --- a/src/context/packs.svelte.spec.ts +++ b/src/context/packs.svelte.spec.ts @@ -1,7 +1,7 @@ -import type { ModelsResourcePackConfig } from "$lib/shared/api/orval-generated"; -import { readEnabledPacksCookie } from "$lib/shared/resource-packs"; import { flushSync, untrack } from "svelte"; import { afterEach, beforeEach, describe, it } from "vitest"; +import type { ModelsResourcePackConfig } from "#lib/shared/api/orval-generated"; +import { readEnabledPacksCookie } from "#lib/shared/resource-packs"; import { EnabledPacksContext, reconcileEnabledPacks } from "./packs.svelte"; const packs = [ diff --git a/src/context/packs.svelte.ts b/src/context/packs.svelte.ts index e9e389515..156f66f0a 100644 --- a/src/context/packs.svelte.ts +++ b/src/context/packs.svelte.ts @@ -1,14 +1,14 @@ -import { browser } from "$app/environment"; -import type { ModelsResourcePackConfig } from "$lib/shared/api/orval-generated"; +import { browser } from "$app/env"; +import { PersistedState } from "runed"; +import { createContext } from "svelte"; +import { SvelteSet } from "svelte/reactivity"; +import type { ModelsResourcePackConfig } from "#lib/shared/api/orval-generated"; import { readEnabledPacksCookie, readLegacyDisabledPacksCookie, removeLegacyDisabledPacksCookie, writeEnabledPacksCookie -} from "$lib/shared/resource-packs"; -import { PersistedState } from "runed"; -import { createContext } from "svelte"; -import { SvelteSet } from "svelte/reactivity"; +} from "#lib/shared/resource-packs"; type EnabledPacksData = string; diff --git a/src/context/preferences.svelte.spec.ts b/src/context/preferences.svelte.spec.ts index dc7712d1d..1a0f8d745 100644 --- a/src/context/preferences.svelte.spec.ts +++ b/src/context/preferences.svelte.spec.ts @@ -1,7 +1,7 @@ -import { sections } from "$lib/sections/constants"; -import type { SectionID } from "$lib/sections/types"; import { flushSync, untrack } from "svelte"; import { afterEach, beforeEach, describe, it, vi } from "vitest"; +import { sections } from "#lib/sections/constants"; +import type { SectionID } from "#lib/sections/types"; import { PreferencesContext } from "./preferences.svelte"; describe("PreferencesContext Tests", () => { @@ -21,25 +21,6 @@ describe("PreferencesContext Tests", () => { vi.restoreAllMocks(); }); - describe("Initialization", () => { - it("initializes with default values", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - expect(prefs.sectionOrder).toHaveLength(sections.length); - expect(prefs.performanceMode).toBe(true); - expect(prefs.keybind).toBe("/"); - expect(prefs.showGlint).toBe(false); - expect(prefs.rainbowEnchantments).toBe(false); - expect(prefs.mctooltip).toBe(false); - }); - }); - - cleanup(); - }); - }); - describe("PersistedState localStorage", () => { it("persists sectionOrder to localStorage", ({ expect }) => { const cleanup = $effect.root(() => { @@ -62,96 +43,6 @@ describe("PreferencesContext Tests", () => { cleanup(); }); - it("persists performanceMode to localStorage", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.performanceMode = true; - flushSync(); - - const stored = localStorage.getItem("skycryptPreferences"); - expect(stored).toBeTruthy(); - const parsed = JSON.parse(stored!); - expect(parsed.performanceMode).toBe(true); - }); - }); - - cleanup(); - }); - - it("persists keybind to localStorage", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.keybind = "k"; - flushSync(); - - const stored = localStorage.getItem("skycryptPreferences"); - expect(stored).toBeTruthy(); - const parsed = JSON.parse(stored!); - expect(parsed.keybind).toBe("k"); - }); - }); - - cleanup(); - }); - - it("persists showGlint to localStorage", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.showGlint = false; - flushSync(); - - const stored = localStorage.getItem("skycryptPreferences"); - expect(stored).toBeTruthy(); - const parsed = JSON.parse(stored!); - expect(parsed.showGlint).toBe(false); - }); - }); - - cleanup(); - }); - - it("persists rainbowEnchantments to localStorage", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.rainbowEnchantments = true; - flushSync(); - - const stored = localStorage.getItem("skycryptPreferences"); - expect(stored).toBeTruthy(); - const parsed = JSON.parse(stored!); - expect(parsed.rainbowEnchantments).toBe(true); - }); - }); - - cleanup(); - }); - - it("persists mctooltip to localStorage", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.mctooltip = true; - flushSync(); - - const stored = localStorage.getItem("skycryptPreferences"); - expect(stored).toBeTruthy(); - const parsed = JSON.parse(stored!); - expect(parsed.mctooltip).toBe(true); - }); - }); - - cleanup(); - }); - it("loads persisted values from localStorage on new instance", ({ expect }) => { localStorage.setItem( "skycryptPreferences", @@ -205,24 +96,6 @@ describe("PreferencesContext Tests", () => { }); describe("sectionOrder Setter Validation", () => { - it("validates section IDs against sections constant", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.sectionOrder = [sections[0], sections[1], sections[2]]; - flushSync(); - - expect(prefs.sectionOrder).toHaveLength(sections.length); - expect(prefs.sectionOrder[0].id).toBe(sections[0].id); - expect(prefs.sectionOrder[1].id).toBe(sections[1].id); - expect(prefs.sectionOrder[2].id).toBe(sections[2].id); - }); - }); - - cleanup(); - }); - it("filters out invalid section IDs", ({ expect }) => { const cleanup = $effect.root(() => { const prefs = new PreferencesContext(); @@ -242,24 +115,6 @@ describe("PreferencesContext Tests", () => { cleanup(); }); - it("creates new objects to avoid reference issues", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - const input: SectionID[] = [sections[0], sections[1]]; - prefs.sectionOrder = input; - flushSync(); - - expect(prefs.sectionOrder).not.toBe(input); - expect(prefs.sectionOrder[0]).not.toBe(input[0]); - expect(prefs.sectionOrder[0].id).toBe(input[0].id); - }); - }); - - cleanup(); - }); - it("handles empty array", ({ expect }) => { const cleanup = $effect.root(() => { const prefs = new PreferencesContext(); @@ -275,147 +130,9 @@ describe("PreferencesContext Tests", () => { cleanup(); }); - - it("handles all sections in custom order", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.sectionOrder = [...sections].reverse(); - flushSync(); - - expect(prefs.sectionOrder).toHaveLength(sections.length); - expect(prefs.sectionOrder[0].id).toBe(sections[sections.length - 1].id); - }); - }); - - cleanup(); - }); - }); - - describe("Property Getters and Setters", () => { - it("performanceMode getter returns correct value", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - const before = prefs.performanceMode; - prefs.performanceMode = false; - flushSync(); - const after = prefs.performanceMode; - - expect(before).toBe(true); - expect(after).toBe(false); - }); - }); - - cleanup(); - }); - - it("keybind getter returns correct value", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - const before = prefs.keybind; - prefs.keybind = "ctrl+k"; - flushSync(); - const after = prefs.keybind; - - expect(before).toBe("/"); - expect(after).toBe("ctrl+k"); - }); - }); - - cleanup(); - }); - - it("showGlint getter returns correct value", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - const before = prefs.showGlint; - prefs.showGlint = true; - flushSync(); - const after = prefs.showGlint; - - expect(before).toBe(false); - expect(after).toBe(true); - }); - }); - - cleanup(); - }); - - it("rainbowEnchantments getter returns correct value", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - const before = prefs.rainbowEnchantments; - prefs.rainbowEnchantments = true; - flushSync(); - const after = prefs.rainbowEnchantments; - - expect(before).toBe(false); - expect(after).toBe(true); - }); - }); - - cleanup(); - }); - - it("mctooltip getter returns correct value", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - const before = prefs.mctooltip; - prefs.mctooltip = true; - flushSync(); - const after = prefs.mctooltip; - - expect(before).toBe(false); - expect(after).toBe(true); - }); - }); - - cleanup(); - }); }); describe("rainbowEnchantments document.dataset", () => { - it("sets document.documentElement.dataset.rainbow to 'true' when enabled", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.rainbowEnchantments = true; - flushSync(); - - expect(document.documentElement.dataset.rainbow).toBe("true"); - }); - }); - - cleanup(); - }); - - it("sets document.documentElement.dataset.rainbow to 'false' when disabled", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.rainbowEnchantments = false; - flushSync(); - - expect(document.documentElement.dataset.rainbow).toBe("false"); - }); - }); - - cleanup(); - }); - it("updates document.dataset on toggle", ({ expect }) => { const cleanup = $effect.root(() => { const prefs = new PreferencesContext(); @@ -485,21 +202,6 @@ describe("PreferencesContext Tests", () => { cleanup(); }); - it("sets document.documentElement.dataset.performance to 'true' when enabled", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.performanceMode = true; - flushSync(); - - expect(document.documentElement.dataset.performance).toBe("true"); - }); - }); - - cleanup(); - }); - it("updates document.dataset on toggle", ({ expect }) => { const cleanup = $effect.root(() => { const prefs = new PreferencesContext(); @@ -665,54 +367,6 @@ describe("PreferencesContext Tests", () => { cleanup(); }); - it("migrates keybind from old storage key", ({ expect }) => { - localStorage.setItem("keybind", "k"); - - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - flushSync(); - expect(prefs.keybind).toBe("k"); - expect(localStorage.getItem("keybind")).toBeNull(); - }); - }); - - cleanup(); - }); - - it("migrates showGlint from old storage key", ({ expect }) => { - localStorage.setItem("showGlint", JSON.stringify(false)); - - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - flushSync(); - expect(prefs.showGlint).toBe(false); - expect(localStorage.getItem("showGlint")).toBeNull(); - }); - }); - - cleanup(); - }); - - it("migrates rainbowEnchantments from old storage key", ({ expect }) => { - localStorage.setItem("rainbowEnchantments", JSON.stringify(true)); - - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - flushSync(); - expect(prefs.rainbowEnchantments).toBe(true); - expect(localStorage.getItem("rainbowEnchantments")).toBeNull(); - }); - }); - - cleanup(); - }); - it("migrates multiple old settings at once", ({ expect }) => { localStorage.setItem("performanceMode", "true"); localStorage.setItem("keybind", "x"); @@ -735,135 +389,5 @@ describe("PreferencesContext Tests", () => { cleanup(); }); - - it("does not migrate if old keys do not exist", ({ expect }) => { - localStorage.clear(); - - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - flushSync(); - expect(prefs.performanceMode).toBe(true); - expect(prefs.keybind).toBe("/"); - expect(prefs.showGlint).toBe(false); - expect(prefs.rainbowEnchantments).toBe(false); - }); - }); - - cleanup(); - }); - }); - - describe("Edge Cases", () => { - it("handles rapid successive updates", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.keybind = "a"; - prefs.keybind = "b"; - prefs.keybind = "c"; - prefs.keybind = "d"; - flushSync(); - - expect(prefs.keybind).toBe("d"); - - const stored = localStorage.getItem("skycryptPreferences"); - const parsed = JSON.parse(stored!); - expect(parsed.keybind).toBe("d"); - }); - }); - - cleanup(); - }); - - it("maintains other properties when one is updated", ({ expect }) => { - localStorage.clear(); - - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.performanceMode = true; - prefs.keybind = "custom"; - flushSync(); - - expect(prefs.performanceMode).toBe(true); - expect(prefs.keybind).toBe("custom"); - expect(prefs.showGlint).toBe(false); - }); - }); - - cleanup(); - }); - - it("handles empty string keybind", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.keybind = ""; - flushSync(); - - expect(prefs.keybind).toBe(""); - }); - }); - - cleanup(); - }); - - it("handles special characters in keybind", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - prefs.keybind = "ctrl+shift/"; - flushSync(); - - expect(prefs.keybind).toBe("ctrl+shift/"); - }); - }); - - cleanup(); - }); - }); - - describe("TypeScript Type Safety", () => { - it("enforces boolean type for performanceMode", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - expect(typeof prefs.performanceMode).toBe("boolean"); - }); - }); - - cleanup(); - }); - - it("enforces string type for keybind", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - expect(typeof prefs.keybind).toBe("string"); - }); - }); - - cleanup(); - }); - - it("enforces array type for sectionOrder", ({ expect }) => { - const cleanup = $effect.root(() => { - const prefs = new PreferencesContext(); - - untrack(() => { - expect(Array.isArray(prefs.sectionOrder)).toBe(true); - }); - }); - - cleanup(); - }); }); }); diff --git a/src/context/preferences.svelte.ts b/src/context/preferences.svelte.ts index 5407a5f12..d46229527 100644 --- a/src/context/preferences.svelte.ts +++ b/src/context/preferences.svelte.ts @@ -1,10 +1,10 @@ -import { browser } from "$app/environment"; +import { browser } from "$app/env"; import { loadOldStorageKey } from "$ctx/utils"; -import { sections } from "$lib/sections/constants"; -import type { SectionID } from "$lib/sections/types"; -import { isGraphicsAccelerationAvailable } from "$lib/shared/graphics-acceleration"; import { PersistedState } from "runed"; import { createContext, untrack } from "svelte"; +import { sections } from "#lib/sections/constants"; +import type { SectionID } from "#lib/sections/types"; +import { isGraphicsAccelerationAvailable } from "#lib/shared/graphics-acceleration"; interface PreferencesData { sectionOrder: SectionID[]; diff --git a/src/context/themes.svelte.spec.ts b/src/context/themes.svelte.spec.ts index 3c1f4a692..51f68a3f2 100644 --- a/src/context/themes.svelte.spec.ts +++ b/src/context/themes.svelte.spec.ts @@ -1,7 +1,7 @@ -import { DEFAULT_THEME, type ThemeV5 } from "$lib/shared/themes"; import * as devalue from "devalue"; import { flushSync, untrack } from "svelte"; import { afterEach, beforeEach, describe, it, vi } from "vitest"; +import { DEFAULT_THEME, type ThemeV5 } from "#lib/shared/themes"; import { ThemeContext } from "./themes.svelte"; function customTheme(id = "custom"): ThemeV5 { @@ -44,20 +44,6 @@ describe("ThemeContext", () => { }); }); - it("resolves first-party themes", ({ expect }) => { - const cleanup = $effect.root(() => { - const themes = new ThemeContext(); - - untrack(() => { - expect(themes.activeTheme?.metadata.id).toBe("default"); - expect(themes.isFirstParty("default")).toBe(true); - expect(themes.allThemes).toHaveLength(1); - }); - }); - - cleanup(); - }); - it("filters persisted V3 custom themes and keeps V5 themes", ({ expect }) => { localStorage.setItem( "skycryptThemes", diff --git a/src/context/themes.svelte.ts b/src/context/themes.svelte.ts index f867049ac..33203f979 100644 --- a/src/context/themes.svelte.ts +++ b/src/context/themes.svelte.ts @@ -1,5 +1,9 @@ -import { browser } from "$app/environment"; +import { browser } from "$app/env"; import { loadOldStorageKey } from "$ctx/utils"; +import * as devalue from "devalue"; +import { setTheme, theme as activeModeWatcherTheme, themeStorageKey } from "mode-watcher"; +import { PersistedState } from "runed"; +import { createContext, untrack } from "svelte"; import { DEFAULT_THEME, legacyThemeV4Schema, @@ -8,12 +12,8 @@ import { ThemeEngine, themeV5Schema, type ThemeV5 -} from "$lib/shared/themes"; -import { FIRST_PARTY_THEMES } from "$lib/shared/themes/first-party"; -import * as devalue from "devalue"; -import { setTheme, theme as activeModeWatcherTheme, themeStorageKey } from "mode-watcher"; -import { PersistedState } from "runed"; -import { createContext, untrack } from "svelte"; +} from "#lib/shared/themes"; +import { FIRST_PARTY_THEMES } from "#lib/shared/themes/first-party"; const ACTIVE_THEME_STORAGE_KEY = "skycryptActiveTheme"; themeStorageKey.current = ACTIVE_THEME_STORAGE_KEY; diff --git a/src/context/tooltips.svelte.ts b/src/context/tooltips.svelte.ts index 0254a0251..73a28f991 100644 --- a/src/context/tooltips.svelte.ts +++ b/src/context/tooltips.svelte.ts @@ -1,11 +1,10 @@ -import type { ModelsStrippedItem } from "$lib/shared/api/orval-generated"; import { Tooltip, type TooltipContentPropsWithoutHTML } from "bits-ui"; -import type { IsInViewport } from "runed"; import type { ClassValue } from "svelte/elements"; +import type { ModelsStrippedItem } from "#lib/shared/api/orval-generated"; type ItemTooltipPayload = { skyblockItem?: ModelsStrippedItem; - inViewport?: IsInViewport; + inViewport?: boolean; }; type GenericTooltipPayload = TooltipContentPropsWithoutHTML & { diff --git a/src/env.ts b/src/env.ts new file mode 100644 index 000000000..008e4c1a5 --- /dev/null +++ b/src/env.ts @@ -0,0 +1,62 @@ +import { defineEnvVars } from "@sveltejs/kit/env"; + +const schema = (input: string | undefined) => input ?? ""; + +export const variables = defineEnvVars({ + PUBLIC_DISCORD_INVITE: { public: true, schema }, + PUBLIC_PATREON: { public: true, schema }, + PUBLIC_PATREON_ANY_EMOJI_CENTS: { public: true, schema }, + PUBLIC_PATREON_COLORED_HEART_CENTS: { public: true, schema }, + PUBLIC_ORIGIN: { public: true, schema }, + PUBLIC_SERVER_API_URL: { public: true, schema }, + PUBLIC_UMAMI_ENABLE_HEATMAPS: { public: true, schema }, + PUBLIC_UMAMI_HOST_URL: { public: true, schema }, + PUBLIC_UMAMI_RECORDER_URL: { public: true, schema }, + PUBLIC_UMAMI_SCRIPT_URL: { public: true, schema }, + PUBLIC_UMAMI_WEBSITE_ID: { public: true, schema }, + ADDRESS_HEADER: { schema }, + BETTER_AUTH_SECRET: { + schema, + description: + "Secret used to sign tokens. For production use 32 characters generated with high entropy. See [Better Auth installation](https://www.better-auth.com/docs/installation)." + }, + DISCORD_CLIENT_ID: { schema }, + DISCORD_CLIENT_SECRET: { schema }, + MC_ID_CLIENT_ID: { schema }, + MC_ID_CLIENT_SECRET: { schema }, + ORIGIN: { + schema, + description: "The app origin (base URL), e.g. `http://localhost:5173`." + }, + SERVER_API_TOKEN: { schema }, + PATREON_CLIENT_ID: { schema }, + PATREON_CLIENT_SECRET: { schema }, + PATREON_CREATOR_ACCESS_TOKEN: { schema }, + PATREON_CREATOR_REFRESH_TOKEN: { schema }, + PATREON_CAMPAIGN_ID: { schema }, + DATABASE_URL: { schema }, + TURNSTILE_SECRET_KEY: { schema }, + HYPERDX_OTLP_ENDPOINT: { + schema, + description: "Base URL of the HyperDX OTLP HTTP intake (without `/v1/logs`). Logs only go to stdout when empty." + }, + HYPERDX_API_KEY: { schema, description: "HyperDX ingestion API key (Team Settings → API Keys)." }, + PUBLIC_TURNSTILE_SITE_KEY: { public: true, schema }, + R2_ACCOUNT_ID: { schema, description: "Cloudflare account ID that owns the media bucket." }, + R2_ACCESS_KEY_ID: { schema, description: "R2 API token access key with read and write access to `R2_BUCKET`." }, + R2_SECRET_ACCESS_KEY: { schema }, + R2_BUCKET: { schema, description: "R2 bucket that stores newsroom uploads." }, + PUBLIC_MEDIA_URL: { + public: true, + schema, + description: "Public URL the bucket is served from (an R2 custom domain), e.g. `https://media.shiiyu.moe`." + }, + PUBLIC_COMMIT_HASH: { public: true, static: true }, + PUBLIC_RELEASE_CHANNEL: { + public: true, + static: true, + schema: (input: string | undefined) => (input === "beta" ? "beta" : "stable"), + description: + "`beta` for builds from `dev`, `stable` otherwise. nginx serves the beta build to visitors with a `beta=true` cookie." + } +}); diff --git a/src/hooks.client.ts b/src/hooks.client.ts index d2d13bfff..e551ad066 100644 --- a/src/hooks.client.ts +++ b/src/hooks.client.ts @@ -1,37 +1,25 @@ -import { dev } from "$app/environment"; -import { env } from "$env/dynamic/public"; -import * as Sentry from "@sentry/sveltekit"; -import { - browserTracingIntegration, - consoleLoggingIntegration, - contextLinesIntegration, - extraErrorDataIntegration, - handleErrorWithSentry, - httpClientIntegration -} from "@sentry/sveltekit"; +import { dev } from "$app/env"; +import type { HandleClientError } from "@sveltejs/kit/hooks"; +import { initLog, log } from "evlog/client"; -const { PUBLIC_SENTRY_DSN } = env; - -Sentry.init({ - dsn: PUBLIC_SENTRY_DSN, - tunnel: "/api/tunnel", - - // Enable logs to be sent to Sentry - enableLogs: true, +// Warnings and errors go to /api/client-logs, which forwards them to the same drains as server logs. +initLog({ + service: "skycrypt-web", + minLevel: dev ? "debug" : "warn", + transport: { enabled: !dev, endpoint: "/api/client-logs" } +}); - // Enable debug - tracesSampleRate: 0.3, +export const handleError: HandleClientError = ({ kind, error, event }) => { + if (kind !== "unknown") return; + log.error({ action: "client.unhandled_error", path: event.url.pathname, error }); +}; - integrations: [ - browserTracingIntegration(), - httpClientIntegration(), - contextLinesIntegration(), - extraErrorDataIntegration(), - consoleLoggingIntegration() - ], - enabled: !dev, - environment: dev ? "development" : "production" +window.addEventListener("unhandledrejection", (e) => { + log.error({ action: "client.unhandled_rejection", path: location.pathname, error: e.reason }); }); -// If you have a custom error handler, pass it to `handleErrorWithSentry` -export const handleError = handleErrorWithSentry(); +window.addEventListener("error", (e) => { + // Cross-origin script failures (extensions, third-party scripts) carry no usable info. + if (!e.filename || e.message === "Script error.") return; + log.error({ action: "client.window_error", path: location.pathname, message: e.message, file: e.filename }); +}); diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 79aad36d1..b737d2bd5 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,7 +1,14 @@ -import { USER_AGENT } from "$lib/shared/constants/user-agent"; -import { handleErrorWithSentry, sentryHandle } from "@sentry/sveltekit"; -import { type Handle, type HandleFetch } from "@sveltejs/kit"; -import { sequence } from "@sveltejs/kit/hooks"; +import { dev } from "$app/env"; +import { HYPERDX_API_KEY, HYPERDX_OTLP_ENDPOINT } from "$app/env/private"; +import { PUBLIC_RELEASE_CHANNEL } from "$app/env/public"; +import { sequence, type Handle, type HandleFetch, type HandleServerError } from "@sveltejs/kit/hooks"; +import { initLogger, log, toLoggerConfig, toMiddlewareOptions, type DrainContext } from "evlog"; +import { createFsDrain } from "evlog/fs"; +import { createHyperDXDrain } from "evlog/hyperdx"; +import { createDrainPipeline } from "evlog/pipeline"; +import { createEvlogHooks } from "evlog/sveltekit"; +import { USER_AGENT } from "#lib/shared/constants/user-agent"; +import evlogConfig from "../evlog.config"; // This fork is a public stats/card embed (skycrypt-embed.lunarclient.com) deployed // on Cloudflare Workers. It has no user accounts, so the upstream better-auth + @@ -9,9 +16,41 @@ import { sequence } from "@sveltejs/kit/hooks"; // database the embed doesn't have, and migrate-on-startup can't run on Workers // (no filesystem / process.cwd). See src/lib/server/db/index.ts (lazy db). +// HyperDX in production (batched, retried), local NDJSON in dev for `evlog logs`. Stdout always stays on. +const hyperdxDrain = HYPERDX_OTLP_ENDPOINT + ? createDrainPipeline({ + batch: { size: 100, intervalMs: 5000 }, + retry: { maxAttempts: 3 }, + onDropped: (events, error) => + log.warn("evlog", `Dropped ${events.length} events: ${error?.message ?? "buffer full"}`) + })(createHyperDXDrain({ endpoint: HYPERDX_OTLP_ENDPOINT, apiKey: HYPERDX_API_KEY })) + : undefined; +const drain = hyperdxDrain ?? (dev ? createFsDrain({ maxFiles: 7 }) : undefined); + +// Stable keeps NODE_ENV ("production") so existing HyperDX searches still match it. +const environment = !dev && PUBLIC_RELEASE_CHANNEL === "beta" ? "beta" : undefined; + +initLogger({ ...toLoggerConfig({ ...evlogConfig, environment }), drain }); + +const { handle: evlogHandle } = createEvlogHooks({ ...toMiddlewareOptions(evlogConfig), drain }); + +// Not evlog's own handleError: since 2.33.1 it returns the right status (evloghq/evlog#911), but it still logs every Error as +// level error, so each bot-scan 404 would page as an error. +// Only unexpected errors are logged; returning nothing keeps SvelteKit's default status and message. +export const handleError: HandleServerError = ({ kind, error, event }) => { + if (kind !== "unknown") return; + if (error instanceof Error) event.locals.log?.error(error); + else log.error({ action: "request.unhandled_error", path: event.url.pathname, error }); +}; + const headersHandler = (async ({ event, resolve }) => { - const response = await resolve(event); - const { request, url } = event; + const response = await resolve(event, { + // Body text font; without this it only starts downloading once the CSS has been parsed. + preload: (input) => + input.type === "js" || + input.type === "css" || + (input.type === "font" && input.filename.endsWith("montserrat-latin-wght-normal.woff2")) + }); // Security headers response.headers.set("Referrer-Policy", "strict-origin-when-cross-origin"); @@ -35,11 +74,10 @@ const headersHandler = (async ({ event, resolve }) => { // Legacy XSS protection response.headers.set("X-XSS-Protection", "1; mode=block"); - const host = request.headers.get("x-forwarded-host") ?? url.host; - const isCupcake = host.includes("cupcake.shiiyu.moe"); - - if (isCupcake) { - response.headers.set("X-Robots-Tag", "noindex, nofollow"); + // Signed-in responses can carry the user (header avatar, remote queries), so shared caches must not store them. + const cacheControl = response.headers.get("cache-control") ?? ""; + if (event.locals.user && !cacheControl.includes("private") && !cacheControl.includes("immutable")) { + response.headers.set("cache-control", "private, no-store"); } return response; @@ -52,7 +90,4 @@ export const handleFetch = (({ request, fetch }) => { return fetch(new Request(request, { headers })); }) satisfies HandleFetch; -// If you have a custom error handler, pass it to `handleErrorWithSentry` -export const handleError = handleErrorWithSentry(); - -export const handle = sequence(sentryHandle(), headersHandler) satisfies Handle; +export const handle = sequence(evlogHandle, headersHandler) satisfies Handle; diff --git a/src/lib/assets/fonts/unifontex-icons.woff2 b/src/lib/assets/fonts/unifontex-icons.woff2 new file mode 100644 index 000000000..ba164711e Binary files /dev/null and b/src/lib/assets/fonts/unifontex-icons.woff2 differ diff --git a/src/lib/components/Captcha.svelte b/src/lib/components/Captcha.svelte new file mode 100644 index 000000000..843ada693 --- /dev/null +++ b/src/lib/components/Captcha.svelte @@ -0,0 +1,36 @@ + + + + { + turnstileReady = true; + }} + onerror={(error) => { + console.error("Captcha Error:", error); + turnstileErrored = true; + }} + onSolve={(token) => { + turnstileToken = token; + }} /> + +{#if turnstileErrored} +

    Captcha failed to load. Please refresh the page and try again.

    +{:else if turnstileReady && !turnstileToken} +

    Please complete the captcha to continue...

    +{/if} +{#if !turnstileReady} +

    Loading captcha...

    +{/if} diff --git a/src/lib/components/EmptyStat.svelte b/src/lib/components/EmptyStat.svelte index 8df73bbfa..babd64236 100644 --- a/src/lib/components/EmptyStat.svelte +++ b/src/lib/components/EmptyStat.svelte @@ -1,12 +1,12 @@ + +
    + Stats for + + + + {account.username} + {#if account.entitlementLevel > 0} + + {valid ? parsed.data : (account.emoji ?? "")} + + {/if} + + + + selected, + (v) => { + popoverOpen = false; + selected = v; + tick().then(() => save()); + } + } + class="contents"> + +
    + {#if account.entitlementLevel >= 2} + + + {/if} +
    + + = 2 ? undefined : coloredHearts} /> + {#if account.entitlementLevel >= 2} + + {#snippet children({ active })} +
    + {active?.emoji} + + {active?.data.name} + +
    + {/snippet} +
    + {/if} +
    +
    +
    +
    +
    diff --git a/src/lib/components/dashboard/LinkAccount.svelte b/src/lib/components/dashboard/LinkAccount.svelte new file mode 100644 index 000000000..276e8aa63 --- /dev/null +++ b/src/lib/components/dashboard/LinkAccount.svelte @@ -0,0 +1,48 @@ + + + diff --git a/src/lib/components/data-table/DataTable.svelte b/src/lib/components/data-table/DataTable.svelte new file mode 100644 index 000000000..64320b587 --- /dev/null +++ b/src/lib/components/data-table/DataTable.svelte @@ -0,0 +1,123 @@ + + +
    +
    + + {caption} + + {#each table.getHeaderGroups() as headerGroup (headerGroup.id)} + + {#each headerGroup.headers as header (header.id)} + + {#if !header.isPlaceholder}{/if} + + {/each} + + {/each} + + + {#each table.getRowModel().rows as row (row.id)} + { + // Let links, buttons and menus inside the row handle their own clicks. + if (!(event.target as HTMLElement).closest("a, button, [role=menuitem]")) onRowClick?.(row.original); + }}> + {#each row.getVisibleCells() as cell (cell.id)} + + {/each} + + {:else} + + {empty} + + {/each} + + +
    + +
    diff --git a/src/lib/components/data-table/DataTablePagination.svelte b/src/lib/components/data-table/DataTablePagination.svelte new file mode 100644 index 000000000..3477b5036 --- /dev/null +++ b/src/lib/components/data-table/DataTablePagination.svelte @@ -0,0 +1,78 @@ + + +
    +

    + {rowCount.toLocaleString("en-US")} + {rowCount === 1 ? "result" : "results"} +

    +
    +
    + + table.setPageSize(Number(value))}> + {pagination.pageSize} + + {#each PAGE_SIZES as size (size)} + {size} + {/each} + + +
    +

    Page {pagination.pageIndex + 1} of {pageCount}

    +
    + + + + +
    +
    +
    diff --git a/src/lib/components/data-table/DataTableSearch.svelte b/src/lib/components/data-table/DataTableSearch.svelte new file mode 100644 index 000000000..5bd9b5bfe --- /dev/null +++ b/src/lib/components/data-table/DataTableSearch.svelte @@ -0,0 +1,24 @@ + + + + + debounce(event.currentTarget.value)} /> + diff --git a/src/lib/components/data-table/DataTableSortButton.svelte b/src/lib/components/data-table/DataTableSortButton.svelte new file mode 100644 index 000000000..d6f6cd409 --- /dev/null +++ b/src/lib/components/data-table/DataTableSortButton.svelte @@ -0,0 +1,19 @@ + + + diff --git a/src/lib/components/data-table/features.ts b/src/lib/components/data-table/features.ts new file mode 100644 index 000000000..70120cdca --- /dev/null +++ b/src/lib/components/data-table/features.ts @@ -0,0 +1,11 @@ +import { + columnVisibilityFeature, + rowPaginationFeature, + rowSortingFeature, + tableFeatures +} from "@tanstack/svelte-table"; + +// Admin tables paginate and sort on the server, so no client row models are registered. +export const features = tableFeatures({ columnVisibilityFeature, rowPaginationFeature, rowSortingFeature }); + +export type DataTableFeatures = typeof features; diff --git a/src/lib/components/edra/commands/commands.ts b/src/lib/components/edra/commands/commands.ts new file mode 100644 index 000000000..f14412ba7 --- /dev/null +++ b/src/lib/components/edra/commands/commands.ts @@ -0,0 +1,514 @@ +import { FileCode, type LucideIcon } from "@lucide/svelte"; +import AlignCenter from "@lucide/svelte/icons/align-center"; +import AlighJustify from "@lucide/svelte/icons/align-justify"; +import AlignLeft from "@lucide/svelte/icons/align-left"; +import AlignRight from "@lucide/svelte/icons/align-right"; +import Audio from "@lucide/svelte/icons/audio-lines"; +import Bold from "@lucide/svelte/icons/bold"; +import Code from "@lucide/svelte/icons/code"; +import IFrame from "@lucide/svelte/icons/code-xml"; +import Heading1 from "@lucide/svelte/icons/heading-1"; +import Heading2 from "@lucide/svelte/icons/heading-2"; +import Heading3 from "@lucide/svelte/icons/heading-3"; +import Heading4 from "@lucide/svelte/icons/heading-4"; +import Image from "@lucide/svelte/icons/image"; +import Italic from "@lucide/svelte/icons/italic"; +import Link from "@lucide/svelte/icons/link-2"; +import List from "@lucide/svelte/icons/list"; +import ListChecks from "@lucide/svelte/icons/list-checks"; +import ListOrdered from "@lucide/svelte/icons/list-ordered"; +import Pilcrow from "@lucide/svelte/icons/pilcrow"; +import Quote from "@lucide/svelte/icons/quote"; +import Redo from "@lucide/svelte/icons/redo-2"; +import StrikeThrough from "@lucide/svelte/icons/strikethrough"; +import Subscript from "@lucide/svelte/icons/subscript"; +import Superscript from "@lucide/svelte/icons/superscript"; +import Table from "@lucide/svelte/icons/table"; +import Underline from "@lucide/svelte/icons/underline"; +import Undo from "@lucide/svelte/icons/undo-2"; +import Video from "@lucide/svelte/icons/video"; +import type { Node } from "@tiptap/pm/model"; +import strings from "../strings"; +import { type Editor } from "../tiptap"; +import { ISMAC } from "../utils"; + +export interface EdraCommand { + name: string; + icon: LucideIcon; + tooltip: string; + shortCut?: string; + onClick?: (editor: Editor) => void; + turnInto?: (editor: Editor, node: Node, pos: number) => void; + isActive?: (editor: Editor) => boolean; + clickable?: (editor: Editor) => boolean; +} + +export const commands: Record = { + "undo-redo": [ + { + icon: Undo, + name: "undo", + tooltip: strings.command.undo, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}Z`, + onClick: (editor) => { + editor.chain().focus().undo().run(); + }, + clickable: (editor) => { + return editor.can().undo(); + } + }, + { + icon: Redo, + name: "redo", + tooltip: strings.command.redo, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}Y`, + onClick: (editor) => { + editor.chain().focus().redo().run(); + }, + clickable: (editor) => { + return editor.can().redo(); + } + } + ], + headings: [ + { + icon: Heading1, + name: "h1", + tooltip: strings.command.h1, + shortCut: `${ISMAC ? "⌘⌥" : "Ctrl+Alt+"}1`, + onClick: (editor) => { + editor.chain().focus().toggleHeading({ level: 1 }).run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setHeading({ level: 1 }).run(); + }, + clickable: (editor) => { + return editor.can().toggleHeading({ level: 1 }); + }, + isActive: (editor) => { + return editor.isActive("heading", { level: 1 }); + } + }, + { + icon: Heading2, + name: "h2", + tooltip: strings.command.h2, + shortCut: `${ISMAC ? "⌘⌥" : "Ctrl+Alt+"}2`, + onClick: (editor) => { + editor.chain().focus().toggleHeading({ level: 2 }).run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setHeading({ level: 2 }).run(); + }, + clickable: (editor) => { + return editor.can().toggleHeading({ level: 2 }); + }, + isActive: (editor) => { + return editor.isActive("heading", { level: 2 }); + } + }, + { + icon: Heading3, + name: "h3", + tooltip: strings.command.h3, + shortCut: `${ISMAC ? "⌘⌥" : "Ctrl+Alt+"}3`, + onClick: (editor) => { + editor.chain().focus().toggleHeading({ level: 3 }).run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setHeading({ level: 3 }).run(); + }, + clickable: (editor) => { + return editor.can().toggleHeading({ level: 3 }); + }, + isActive: (editor) => { + return editor.isActive("heading", { level: 3 }); + } + }, + { + icon: Heading4, + name: "h4", + tooltip: strings.command.h4, + shortCut: `${ISMAC ? "⌘⌥" : "Ctrl+Alt+"}4`, + onClick: (editor) => { + editor.chain().focus().toggleHeading({ level: 4 }).run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setHeading({ level: 4 }).run(); + }, + clickable: (editor) => { + return editor.can().toggleHeading({ level: 4 }); + }, + isActive: (editor) => { + return editor.isActive("heading", { level: 4 }); + } + } + ], + "text-formatting": [ + { + icon: Link, + name: "link", + tooltip: strings.command.link, + onClick: (editor) => { + if (editor.isActive("link")) { + editor.chain().focus().unsetLink().run(); + } else { + const url = window.prompt("Enter the URL of the link:"); + if (url) { + editor.chain().focus().toggleLink({ href: url }).run(); + } + } + }, + isActive: (editor) => { + return editor.isActive("link"); + } + }, + { + icon: Pilcrow, + name: "paragraph", + tooltip: "Paragraph", + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}0`, + onClick: (editor) => { + editor.chain().focus().setParagraph().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setParagraph().run(); + }, + clickable: (editor) => { + return editor.can().setParagraph(); + }, + isActive: (editor) => { + return editor.isActive("paragraph"); + } + }, + { + icon: Bold, + name: "bold", + tooltip: strings.command.bold, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}B`, + onClick: (editor) => { + editor.chain().focus().toggleBold().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setMark("bold").run(); + }, + clickable: (editor) => { + return editor.can().toggleBold(); + }, + isActive: (editor) => { + return editor.isActive("bold"); + } + }, + { + icon: Italic, + name: "italic", + tooltip: strings.command.italic, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}I`, + onClick: (editor) => { + editor.chain().focus().toggleItalic().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setMark("italic").run(); + }, + clickable: (editor) => { + return editor.can().toggleItalic(); + }, + isActive: (editor) => { + return editor.isActive("italic"); + } + }, + { + icon: Underline, + name: "underline", + tooltip: strings.command.underline, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}U`, + onClick: (editor) => { + editor.chain().focus().toggleUnderline().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setMark("underline").run(); + }, + clickable: (editor) => { + return editor.can().toggleUnderline(); + }, + isActive: (editor) => { + return editor.isActive("underline"); + } + }, + { + icon: StrikeThrough, + name: "strikethrough", + tooltip: strings.command.strikethrough, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}S`, + onClick: (editor) => { + editor.chain().focus().toggleStrike().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).setMark("strike").run(); + }, + clickable: (editor) => { + return editor.can().toggleStrike(); + }, + isActive: (editor) => { + return editor.isActive("strike"); + } + }, + { + icon: Quote, + name: "blockQuote", + tooltip: strings.command.blockQuote, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}B`, + onClick: (editor) => { + editor.chain().focus().toggleBlockquote().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleBlockquote().run(); + }, + clickable: (editor) => { + return editor.can().toggleBlockquote(); + }, + isActive: (editor) => { + return editor.isActive("blockquote"); + } + }, + { + icon: Code, + name: "code", + tooltip: strings.command.code, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}E`, + onClick: (editor) => { + editor.chain().focus().toggleCode().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleCodeBlock().run(); + }, + clickable: (editor) => { + return editor.can().toggleCode(); + }, + isActive: (editor) => { + return editor.isActive("code"); + } + }, + { + icon: FileCode, + name: "codeBlock", + tooltip: strings.command.codeBlock, + shortCut: `${ISMAC ? "⌘⌥" : "Ctrl+Shift+"}C`, + onClick: (editor) => { + editor.chain().focus().toggleCodeBlock({ language: "plaintext" }).run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleCodeBlock({ language: "plaintext" }).run(); + }, + clickable: (editor) => { + return editor.can().toggleCodeBlock({ language: "plaintext" }); + }, + isActive: (editor) => { + return editor.isActive("codeBlock"); + } + }, + { + icon: Superscript, + name: "superscript", + tooltip: strings.command.superscript, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"}.`, + onClick: (editor) => { + editor.chain().focus().toggleSuperscript().run(); + }, + clickable: (editor) => { + return editor.can().toggleSuperscript(); + }, + isActive: (editor) => { + return editor.isActive("superscript"); + } + }, + { + icon: Subscript, + name: "subscript", + tooltip: strings.command.subscript, + shortCut: `${ISMAC ? "⌘" : "Ctrl+"},`, + onClick: (editor) => { + editor.chain().focus().toggleSubscript().run(); + }, + clickable: (editor) => { + return editor.can().toggleSubscript(); + }, + isActive: (editor) => { + return editor.isActive("subscript"); + } + } + ], + alignment: [ + { + icon: AlignLeft, + name: "align-left", + tooltip: strings.command.alignLeft, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}L`, + onClick: (editor) => { + editor.chain().focus().toggleTextAlign("left").run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleTextAlign("left").run(); + }, + clickable: (editor) => { + return editor.can().toggleTextAlign("left"); + }, + isActive: (editor) => editor.isActive({ textAlign: "left" }) + }, + { + icon: AlignCenter, + name: "align-center", + tooltip: strings.command.alignCenter, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}E`, + onClick: (editor) => { + editor.chain().focus().toggleTextAlign("center").run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleTextAlign("center").run(); + }, + clickable: (editor) => { + return editor.can().toggleTextAlign("center"); + }, + isActive: (editor) => editor.isActive({ textAlign: "center" }) + }, + { + icon: AlignRight, + name: "align-right", + tooltip: strings.command.alignRight, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}R`, + onClick: (editor) => { + editor.chain().focus().toggleTextAlign("right").run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleTextAlign("right").run(); + }, + clickable: (editor) => { + return editor.can().toggleTextAlign("right"); + }, + isActive: (editor) => editor.isActive({ textAlign: "right" }) + }, + { + icon: AlighJustify, + name: "align-justify", + tooltip: strings.command.alignJustify, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}J`, + onClick: (editor) => { + editor.chain().focus().toggleTextAlign("justify").run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleTextAlign("justify").run(); + }, + clickable: (editor) => { + return editor.can().toggleTextAlign("justify"); + }, + isActive: (editor) => editor.isActive({ textAlign: "justify" }) + } + ], + lists: [ + { + icon: List, + name: "bulletList", + tooltip: strings.command.bulletList, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}8`, + onClick: (editor) => { + editor.chain().focus().toggleBulletList().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleBulletList().run(); + }, + isActive: (editor) => editor.isActive("bulletList") + }, + { + icon: ListOrdered, + name: "orderedList", + tooltip: strings.command.orderedList, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}7`, + onClick: (editor) => { + editor.chain().focus().toggleOrderedList().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleOrderedList().run(); + }, + clickable: (editor) => { + return editor.can().toggleOrderedList(); + }, + isActive: (editor) => { + return editor.isActive("orderedList"); + } + }, + { + icon: ListChecks, + name: "taskList", + tooltip: strings.command.taskList, + shortCut: `${ISMAC ? "⌘⇧" : "Ctrl+Shift+"}9`, + onClick: (editor) => { + editor.chain().focus().toggleTaskList().run(); + }, + turnInto: (editor, _node, pos) => { + editor.chain().setNodeSelection(pos).toggleTaskList().run(); + }, + clickable: (editor) => { + return editor.can().toggleTaskList(); + }, + isActive: (editor) => { + return editor.isActive("taskList"); + } + } + ], + media: [ + { + icon: Image, + name: "image-placeholder", + tooltip: strings.command.imagePlaceholder, + onClick: (editor) => { + editor.chain().focus().insertMediaPlaceholder({ mediaType: "image" }).run(); + }, + isActive: (editor) => editor.isActive("mediaPlaceholder", { mediaType: "image" }) + }, + { + icon: Video, + name: "video-placeholder", + tooltip: strings.command.videoPlaceholder, + onClick: (editor) => { + editor.chain().focus().insertMediaPlaceholder({ mediaType: "video" }).run(); + }, + isActive: (editor) => editor.isActive("mediaPlaceholder", { mediaType: "video" }) + }, + { + icon: Audio, + name: "audio-placeholder", + tooltip: strings.command.audioPlaceholder, + onClick: (editor) => { + editor.chain().focus().insertMediaPlaceholder({ mediaType: "audio" }).run(); + }, + isActive: (editor) => editor.isActive("mediaPlaceholder", { mediaType: "audio" }) + }, + { + icon: IFrame, + name: "iframe-placeholder", + tooltip: strings.command.iframePlaceholder, + onClick: (editor) => { + editor.chain().focus().insertMediaPlaceholder({ mediaType: "iframe" }).run(); + }, + isActive: (editor) => editor.isActive("mediaPlaceholder", { mediaType: "iframe" }) + } + ], + table: [ + { + icon: Table, + name: "table", + tooltip: strings.command.table, + onClick: (editor) => { + if (editor.isActive("table")) { + const del = confirm("Do you really want to delete this table??"); + if (del) { + editor.chain().focus().deleteTable().run(); + return; + } + } + editor.chain().focus().insertTable({ cols: 3, rows: 3, withHeaderRow: false }).run(); + }, + isActive: (editor) => editor.isActive("table") + } + ] +}; diff --git a/src/lib/components/edra/commands/index.ts b/src/lib/components/edra/commands/index.ts new file mode 100644 index 000000000..62074d46d --- /dev/null +++ b/src/lib/components/edra/commands/index.ts @@ -0,0 +1 @@ +export * from "./commands"; diff --git a/src/lib/components/edra/extensions.spec.ts b/src/lib/components/edra/extensions.spec.ts new file mode 100644 index 000000000..b3b09b50d --- /dev/null +++ b/src/lib/components/edra/extensions.spec.ts @@ -0,0 +1,38 @@ +import { getSchema } from "@tiptap/core"; +import { Node } from "@tiptap/pm/model"; +import { describe, it } from "vitest"; +import { getContentExtensions, stripTransientNodes } from "./extensions"; + +describe("getContentExtensions", () => { + const schema = getSchema(getContentExtensions()); + + it("builds a schema with every persisted node", ({ expect }) => { + for (const name of [ + "paragraph", + "heading", + "image", + "callout", + "iframe", + "table", + "codeBlock", + "taskList", + "video", + "audio" + ]) { + expect(schema.nodes[name], name).toBeDefined(); + } + expect(schema.nodes.mediaPlaceholder).toBeUndefined(); + }); + + it("replaces media placeholders so editor output validates", ({ expect }) => { + const doc = { + type: "doc", + content: [ + { type: "callout", content: [{ type: "paragraph" }] }, + { type: "mediaPlaceholder", attrs: { mediaType: "image" } } + ] + }; + expect(() => Node.fromJSON(schema, doc).check()).toThrow(); + expect(() => Node.fromJSON(schema, stripTransientNodes(doc)).check()).not.toThrow(); + }); +}); diff --git a/src/lib/components/edra/extensions.ts b/src/lib/components/edra/extensions.ts new file mode 100644 index 000000000..6d9a6763e --- /dev/null +++ b/src/lib/components/edra/extensions.ts @@ -0,0 +1,128 @@ +// Must stay free of `.svelte` imports (directly or transitively): it is imported in Node +// by `getSchema` / `@tiptap/static-renderer` to validate and render stored content. +import { Extension, type Extensions, type JSONContent } from "@tiptap/core"; +import Highlight from "@tiptap/extension-highlight"; +import { TaskItem, TaskList } from "@tiptap/extension-list"; +import Subscript from "@tiptap/extension-subscript"; +import SuperScript from "@tiptap/extension-superscript"; +import TextAlign from "@tiptap/extension-text-align"; +import { Color, FontSize, TextStyle } from "@tiptap/extension-text-style"; +import Typography from "@tiptap/extension-typography"; +import { CharacterCount, Placeholder } from "@tiptap/extensions"; +import { Markdown } from "@tiptap/markdown"; +import StarterKit from "@tiptap/starter-kit"; +import strings from "./strings"; +import { Audio } from "./tiptap/extensions/audio"; +import { Callout } from "./tiptap/extensions/Callout"; +import ColorHighlighter from "./tiptap/extensions/ColorHighlighter"; +import { IFrameExtended } from "./tiptap/extensions/iframe"; +import { ImageExtended } from "./tiptap/extensions/image/ImageExtended"; +import { SelectAcrossAtoms } from "./tiptap/extensions/SelectAcrossAtoms"; +import { Table, TableCell, TableHeader, TableRow } from "./tiptap/extensions/table"; +import { VideoExtended } from "./tiptap/extensions/video/VideoExtended"; + +interface SharedOptions { + /** Editor-only plugins from StarterKit (history, cursors, trailing node). */ + editor: boolean; + undoRedo?: boolean; +} + +/** Nodes and marks shared by the editor and the content schema. */ +function sharedExtensions({ editor, undoRedo = true }: SharedOptions): Extensions { + return [ + StarterKit.configure({ + undoRedo: editor && undoRedo ? undefined : false, + dropcursor: editor ? undefined : false, + gapcursor: editor ? undefined : false, + trailingNode: editor ? undefined : false, + orderedList: { HTMLAttributes: { class: "list-decimal" } }, + bulletList: { HTMLAttributes: { class: "list-disc" } }, + heading: { levels: [1, 2, 3, 4] }, + link: { + openOnClick: false, + autolink: true, + linkOnPaste: true, + HTMLAttributes: { target: "_blank", rel: "noopener noreferrer nofollow" } + }, + // The editor swaps in CodeBlockLowlight (same `codeBlock` node, same `language` attr). + codeBlock: editor ? false : undefined + }), + Audio, + Highlight.configure({ multicolor: true }), + Color, + Subscript, + SuperScript, + TextStyle, + FontSize, + TextAlign.configure({ types: ["heading", "paragraph"] }), + TaskList, + TaskItem.configure({ nested: true }), + Table, + TableHeader, + TableRow, + TableCell + ]; +} + +/** Same heading attributes the editor's TableOfContents extension adds, without its plugin. */ +const TocAttributes = Extension.create({ + name: "tocAttributes", + addGlobalAttributes() { + return [ + { + types: ["heading"], + attributes: { + id: { default: null, renderHTML: (attributes) => ({ id: attributes.id }) }, + "data-toc-id": { + default: null, + renderHTML: (attributes) => ({ "data-toc-id": attributes["data-toc-id"] }) + } + } + } + ]; + } +}); + +/** + * Every node and mark the editor can persist, without node views or editor-only plugins. Safe to import on the server: + * `getSchema(getContentExtensions())`. + */ +export function getContentExtensions(): Extensions { + return [...sharedExtensions({ editor: false }), ImageExtended, VideoExtended, IFrameExtended, Callout, TocAttributes]; +} + +/** + * Replaces transient editor-only nodes (unfilled media placeholders) with empty paragraphs so `editor.getJSON()` output + * validates against `getContentExtensions()`. + */ +export function stripTransientNodes(content: JSONContent): JSONContent { + if (content.type === "mediaPlaceholder") return { type: "paragraph" }; + if (!content.content) return content; + return { ...content, content: content.content.map(stripTransientNodes) }; +} + +export interface DefaultExtensionsOptions { + /** Whether to enable history (undo/redo). Disabled for collaboration (Yjs) */ + undoRedo?: boolean; +} + +/** Editor extensions minus the nodes that get Svelte node views in `shadcn/editor.ts`. */ +export function getDefaultExtensions(options: DefaultExtensionsOptions = {}): Extensions { + return [ + ...sharedExtensions({ editor: true, undoRedo: options.undoRedo }), + CharacterCount, + Placeholder.configure({ + emptyEditorClass: "is-empty", + placeholder: ({ node }) => { + if (node.type.name === "heading") return strings.editor.headingPlaceholder; + if (node.type.name === "paragraph") return strings.editor.paragraphPlaceholder; + return ""; + } + }), + Typography, + ColorHighlighter, + Markdown, + // Drag-select across images/media; decorate selected atoms; keep selection on right-click + SelectAcrossAtoms + ]; +} diff --git a/src/lib/components/edra/onedark.css b/src/lib/components/edra/onedark.css new file mode 100644 index 000000000..7e868deba --- /dev/null +++ b/src/lib/components/edra/onedark.css @@ -0,0 +1,176 @@ +/* One Dark and Light Theme for Highlight.js using Pure CSS */ +/* Light Theme (Default) */ +.tiptap pre code { + color: #383a42; +} + +/* Comment */ +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #a0a1a7; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #e45649; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #986801; +} + +/* Yellow */ +.hljs-attribute { + color: #c18401; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #50a14f; +} + +/* Blue */ +.hljs-title, +.hljs-section { + color: #4078f2; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #a626a4; +} + +/* Cyan */ +.hljs-emphasis { + font-style: italic; + color: #0184bc; +} + +.hljs-strong { + font-weight: bold; +} + +/* Base styles */ +.hljs-doctag, +.hljs-formula { + color: #a626a4; +} + +.hljs-attr, +.hljs-subst { + color: #383a42; +} + +/* Line highlights */ +.hljs-addition { + background-color: #e6ffed; +} + +.hljs-deletion { + background-color: #ffeef0; +} + +/* Dark Theme (All dark styles consolidated in one media query) */ +html.dark { + .tiptap pre code { + color: #abb2bf; + } + + /* Comment */ + .hljs-comment, + .hljs-quote { + color: #5c6370; + } + + /* Red */ + .hljs-variable, + .hljs-template-variable, + .hljs-tag, + .hljs-name, + .hljs-selector-id, + .hljs-selector-class, + .hljs-regexp, + .hljs-deletion { + color: #e06c75; + } + + /* Orange */ + .hljs-number, + .hljs-built_in, + .hljs-literal, + .hljs-type, + .hljs-params, + .hljs-meta, + .hljs-link { + color: #d19a66; + } + + /* Yellow */ + .hljs-attribute { + color: #e5c07b; + } + + /* Green */ + .hljs-string, + .hljs-symbol, + .hljs-bullet, + .hljs-addition { + color: #98c379; + } + + /* Blue */ + .hljs-title, + .hljs-section { + color: #61afef; + } + + /* Purple */ + .hljs-keyword, + .hljs-selector-tag { + color: #c678dd; + } + + /* Cyan */ + .hljs-emphasis { + color: #56b6c2; + } + + /* Base styles */ + .hljs-doctag, + .hljs-formula { + color: #c678dd; + } + + .hljs-attr, + .hljs-subst { + color: #abb2bf; + } + + /* Line highlights */ + .hljs-addition { + background-color: #283428; + } + + .hljs-deletion { + background-color: #342828; + } +} diff --git a/src/lib/components/edra/shadcn/components/Callout.svelte b/src/lib/components/edra/shadcn/components/Callout.svelte new file mode 100644 index 000000000..753789ee7 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/Callout.svelte @@ -0,0 +1,46 @@ + + + +
    + + + {emoji} + + +
    + + +
    +
    +
    +
    + +
    + + +
    +
    diff --git a/src/lib/components/edra/shadcn/components/CodeBlock.svelte b/src/lib/components/edra/shadcn/components/CodeBlock.svelte new file mode 100644 index 000000000..6c2aa8f41 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/CodeBlock.svelte @@ -0,0 +1,92 @@ + + + +
    + + + + {defaultLanguage} + + + { + e.preventDefault(); + e.stopPropagation(); + }} + onEscapeKeydown={(e) => { + e.preventDefault(); + e.stopPropagation(); + }}> + + + + {strings.extension.code.searchLanguageEmpty} + + {#each languages as language (language)} + changeLanguage(language)} + onclick={() => changeLanguage(language)} + class="text-primary capitalize"> + + {language} + + {/each} + + + + + + +
    +
    +		
    +	
    +
    diff --git a/src/lib/components/edra/shadcn/components/IFrame.svelte b/src/lib/components/edra/shadcn/components/IFrame.svelte new file mode 100644 index 000000000..92ae02d91 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/IFrame.svelte @@ -0,0 +1,13 @@ + + + + {@const node = rest.node} + + diff --git a/src/lib/components/edra/shadcn/components/ImageExtended.svelte b/src/lib/components/edra/shadcn/components/ImageExtended.svelte new file mode 100644 index 000000000..24c68cbb7 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/ImageExtended.svelte @@ -0,0 +1,18 @@ + + + + {@const node = rest.node} + {node.attrs.alt} + diff --git a/src/lib/components/edra/shadcn/components/MediaExtended.svelte b/src/lib/components/edra/shadcn/components/MediaExtended.svelte new file mode 100644 index 000000000..ee7d1526f --- /dev/null +++ b/src/lib/components/edra/shadcn/components/MediaExtended.svelte @@ -0,0 +1,264 @@ + + + +
    + {@render children()} + {#if node.attrs.title !== null && node.attrs.title.trim() !== ""} + { + const target = e.target as HTMLInputElement; + updateAttributes({ title: target.value }); + }} /> + {/if} + {#if editor.isEditable} +
    { + handleResizingPosition(event, "left"); + }} + ontouchstart={(event: TouchEvent) => { + handleTouchStart(event, "left"); + }}> +
    +
    + +
    { + handleResizingPosition(event, "right"); + }} + ontouchstart={(event: TouchEvent) => { + handleTouchStart(event, "right"); + }}> +
    +
    +
    + + + + (openedMore = value)}> + + + + + { + if (node.attrs.title === null || node.attrs.title.trim() === "") + updateAttributes({ + title: strings.extension.media.captionPlaceholder + }); + }}> + + {strings.extension.media.caption} + + { + duplicateContent(editor, node); + }}> + + {strings.extension.media.duplicate} + + { + updateAttributes({ + width: "100%" + }); + }}> + + {strings.extension.media.fullscreen} + + { + deleteNode(); + }} + class="text-destructive"> + + {strings.extension.media.delete} + + + +
    + {/if} +
    +
    diff --git a/src/lib/components/edra/shadcn/components/MediaPlaceHolder.svelte b/src/lib/components/edra/shadcn/components/MediaPlaceHolder.svelte new file mode 100644 index 000000000..f00d8662b --- /dev/null +++ b/src/lib/components/edra/shadcn/components/MediaPlaceHolder.svelte @@ -0,0 +1,103 @@ + + + + {@const Icon = mediaTypeData?.icon} + {@const text = mediaTypeData?.text} + +
    (open = true)}> + + {text} + + + + + + + Link + {#if mediaType !== "iframe"} + File + {/if} + + +
    + + +
    +
    + {#if mediaType !== "iframe"} + +
    + + +
    +
    + {/if} +
    +
    +
    +
    +
    diff --git a/src/lib/components/edra/shadcn/components/SlashCommand.svelte b/src/lib/components/edra/shadcn/components/SlashCommand.svelte new file mode 100644 index 000000000..b2272cbd3 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/SlashCommand.svelte @@ -0,0 +1,131 @@ + + +
    + {#each items as grp, groupIndex (groupIndex)} +
    + {grp.title} +
    + + {#each grp.commands as command, commandIndex (commandIndex)} + {@const Icon = command.icon} + {@const isActive = selectedGroupIndex === groupIndex && selectedCommandIndex === commandIndex} + + {/each} + {/each} +
    diff --git a/src/lib/components/edra/shadcn/components/Toolbar.svelte b/src/lib/components/edra/shadcn/components/Toolbar.svelte new file mode 100644 index 000000000..f6f1454da --- /dev/null +++ b/src/lib/components/edra/shadcn/components/Toolbar.svelte @@ -0,0 +1,52 @@ + + +
    + {#each commandsKeys as key (key)} + {@const group = commands[key]} + {#each group as command, idx (idx)} + {@const Icon = command.icon} + + + + {/each} + + {/each} + + +
    diff --git a/src/lib/components/edra/shadcn/components/Tooltip.svelte b/src/lib/components/edra/shadcn/components/Tooltip.svelte new file mode 100644 index 000000000..c3742605e --- /dev/null +++ b/src/lib/components/edra/shadcn/components/Tooltip.svelte @@ -0,0 +1,26 @@ + + + + + + {@render children()} + + + {tooltip} + {#if shortCut} + {shortCut} + {/if} + + + diff --git a/src/lib/components/edra/shadcn/components/VideoExtended.svelte b/src/lib/components/edra/shadcn/components/VideoExtended.svelte new file mode 100644 index 000000000..22290a159 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/VideoExtended.svelte @@ -0,0 +1,15 @@ + + + + {@const node = rest.node} + + + diff --git a/src/lib/components/edra/shadcn/components/menu/BubbleMenu.svelte b/src/lib/components/edra/shadcn/components/menu/BubbleMenu.svelte new file mode 100644 index 000000000..294970b63 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/menu/BubbleMenu.svelte @@ -0,0 +1,141 @@ + + + + {#each commandsKeys as key (key)} + {@const group = commands[key]} + {#if key === "lists"} + + {:else if key === "alignment"} + + {:else} + {#each group as command, idx (idx)} + {#if command.name === "paragraph"} + + {:else if command.name === "link"} + + {:else} + {@const Icon = command.icon} + + + + {/if} + {/each} + + {/if} + {/each} + + + diff --git a/src/lib/components/edra/shadcn/components/menu/Link.svelte b/src/lib/components/edra/shadcn/components/menu/Link.svelte new file mode 100644 index 000000000..73c639fc4 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/menu/Link.svelte @@ -0,0 +1,103 @@ + + + { + if (props.editor.isActive("link")) { + return true; + } else { + isEditing = false; + linkInput = ""; + return false; + } + }} + options={{ + shift: true, + autoPlacement: { + allowedPlacements: ["top", "bottom"] + }, + strategy: "absolute", + scrollTarget: editor.view.dom.parentElement ?? window + }} + class="flex h-fit w-fit items-center gap-1 rounded-lg border bg-popover p-0!"> + {#if !isEditing} + + + + + + + + + + + + + {:else} +
    + + + + +
    + {/if} +
    diff --git a/src/lib/components/edra/shadcn/components/menu/TableCol.svelte b/src/lib/components/edra/shadcn/components/menu/TableCol.svelte new file mode 100644 index 000000000..c453045b3 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/menu/TableCol.svelte @@ -0,0 +1,79 @@ + + + { + const { editor: propsEditor, state, view, from } = props; + if (!propsEditor || !propsEditor.isEditable) return false; + if (!state) return false; + return isColumnGripSelected({ editor: propsEditor, view, state, from }); + }} + options={{ + shift: true, + autoPlacement: { + allowedPlacements: ["top", "bottom"] + }, + strategy: "absolute", + scrollTarget: editor.view.dom.parentElement ?? window + }} + class="z-50 flex h-fit w-fit flex-col gap-1 rounded-lg border bg-popover! p-2"> + + + + + + + + + + diff --git a/src/lib/components/edra/shadcn/components/menu/TableRow.svelte b/src/lib/components/edra/shadcn/components/menu/TableRow.svelte new file mode 100644 index 000000000..57013fb44 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/menu/TableRow.svelte @@ -0,0 +1,80 @@ + + + { + const { editor: propsEditor, state, view, from } = props; + if (!propsEditor || !propsEditor.isEditable) return false; + if (!state) return false; + return isRowGripSelected({ editor: propsEditor, view, state, from }); + }} + options={{ + shift: true, + autoPlacement: { + allowedPlacements: ["top", "bottom"] + }, + strategy: "absolute", + scrollTarget: editor.view.dom.parentElement ?? window + }} + class="z-50 flex h-fit w-fit flex-col gap-1 rounded-lg border bg-popover! p-2"> + + + + + + + + + + diff --git a/src/lib/components/edra/shadcn/components/menu/index.ts b/src/lib/components/edra/shadcn/components/menu/index.ts new file mode 100644 index 000000000..7108acd70 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/menu/index.ts @@ -0,0 +1,4 @@ +export { default as Link } from "./Link.svelte"; +export { default as TableColMenu } from "./TableCol.svelte"; +export { default as TableRowMenu } from "./TableRow.svelte"; +export { default as BubbleMenu } from "./BubbleMenu.svelte"; diff --git a/src/lib/components/edra/shadcn/components/tools/AlignMent.svelte b/src/lib/components/edra/shadcn/components/tools/AlignMent.svelte new file mode 100644 index 000000000..bbfd348cf --- /dev/null +++ b/src/lib/components/edra/shadcn/components/tools/AlignMent.svelte @@ -0,0 +1,54 @@ + + + + + + {@const Icon = AlignmentIcon()} + + + + + + Alignments + {#each alignments as alignment (alignment)} + {@const Icon = alignment.icon} + alignment.onClick?.(editor)}> + + {alignment.tooltip} + + {alignment.shortCut} + + + {/each} + + diff --git a/src/lib/components/edra/shadcn/components/tools/Colors.svelte b/src/lib/components/edra/shadcn/components/tools/Colors.svelte new file mode 100644 index 000000000..1320d8d26 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/tools/Colors.svelte @@ -0,0 +1,95 @@ + + + + + + A + + + + + + Text Colors + {#each quickcolors as color (color.label)} + {@const isActive = color.value === "" ? !$editorState.currentColor : $editorState.currentColor === color.value} + { + if (color.value === "" || color.label === "Default") { + editor.chain().focus().unsetColor().run(); + } else { + editor.chain().focus().setColor(color.value).run(); + } + }}> +
    + A + {color.label} +
    + {#if isActive} + + {/if} +
    + {/each} +
    + + + Background Colors + {#each quickcolors as color (color.label)} + {@const isActive = + color.value === "" ? !$editorState.currentHighlight : $editorState.currentHighlight === `${color.value}50`} + { + if (color.value === "" || color.label === "Default") { + editor.chain().focus().unsetHighlight().run(); + } else { + editor + .chain() + .focus() + .setHighlight({ color: `${color.value}50` }) + .run(); + } + }}> +
    + + {color.label} +
    + {#if isActive} + + {/if} +
    + {/each} +
    +
    +
    diff --git a/src/lib/components/edra/shadcn/components/tools/Export.svelte b/src/lib/components/edra/shadcn/components/tools/Export.svelte new file mode 100644 index 000000000..72fd7541b --- /dev/null +++ b/src/lib/components/edra/shadcn/components/tools/Export.svelte @@ -0,0 +1,71 @@ + + + + + + + + + + Export As + handleExport("markdown")}>Markdown + handleExport("html")}>HTML + handleExport("json")}>JSON + + + diff --git a/src/lib/components/edra/shadcn/components/tools/FontSize.svelte b/src/lib/components/edra/shadcn/components/tools/FontSize.svelte new file mode 100644 index 000000000..c8d308c04 --- /dev/null +++ b/src/lib/components/edra/shadcn/components/tools/FontSize.svelte @@ -0,0 +1,56 @@ + + + + + + {currentLabel} + + + + + Font Size + {#each FONT_SIZE as fontSize (fontSize)} + { + editor.chain().focus().setFontSize(fontSize.value).run(); + }} + >{fontSize.label} + + {fontSize.value} + + + {/each} + + diff --git a/src/lib/components/edra/shadcn/components/tools/Link.svelte b/src/lib/components/edra/shadcn/components/tools/Link.svelte new file mode 100644 index 000000000..4cd87aa6a --- /dev/null +++ b/src/lib/components/edra/shadcn/components/tools/Link.svelte @@ -0,0 +1,56 @@ + + + + + +
    + + +
    +
    +
    + +
    + + + + +
    +
    +
    diff --git a/src/lib/components/edra/shadcn/components/tools/Lists.svelte b/src/lib/components/edra/shadcn/components/tools/Lists.svelte new file mode 100644 index 000000000..ff2a1a1fb --- /dev/null +++ b/src/lib/components/edra/shadcn/components/tools/Lists.svelte @@ -0,0 +1,51 @@ + + + + + {@const Icon = ListIcon()} + + + + + + + Lists + {#each lists as list (list)} + {@const Icon = list.icon} + list.onClick?.(editor)}> + + {list.tooltip} + {list.shortCut} + + {/each} + + diff --git a/src/lib/components/edra/shadcn/drag-handle.svelte b/src/lib/components/edra/shadcn/drag-handle.svelte new file mode 100644 index 000000000..723f08263 --- /dev/null +++ b/src/lib/components/edra/shadcn/drag-handle.svelte @@ -0,0 +1,315 @@ + + + diff --git a/src/lib/components/edra/shadcn/editor.css b/src/lib/components/edra/shadcn/editor.css new file mode 100644 index 000000000..350607724 --- /dev/null +++ b/src/lib/components/edra/shadcn/editor.css @@ -0,0 +1,586 @@ +@import "../onedark.css"; + +.tiptap { + margin-inline: auto; +} + +.tiptap :first-child { + margin-top: 0; +} + +.tiptap :last-child { + margin-bottom: 0; +} + +.tiptap > p { + margin: 1rem 0; +} + +/* For Placeholder */ +.tiptap .is-empty:not(blockquote.is-empty)::before { + float: left; + height: 0; + color: var(--color-muted-foreground); + pointer-events: none; + content: attr(data-placeholder); +} + +/* Heading Styles */ +.tiptap h1, +.tiptap h2, +.tiptap h3, +.tiptap h4, +.tiptap h5, +.tiptap h6 { + margin-top: 1rem; + line-height: 1.2; + text-wrap: pretty; +} + +.tiptap h1, +.tiptap h2 { + margin-top: 1rem; + margin-bottom: 1rem; +} + +.tiptap h1 { + font-size: 2.25rem; + font-weight: 800; + line-height: 2.5rem; + letter-spacing: -0.015em; + scroll-margin: 5rem; +} + +.tiptap h2 { + font-size: 1.5rem; + font-weight: 700; +} + +.tiptap h3 { + font-size: 1.25rem; + font-weight: 600; +} + +.tiptap h4, +.tiptap h5, +.tiptap h6 { + font-size: 1rem; + font-weight: 600; +} + +.tiptap em { + font-weight: 200; +} +.tiptap audio { + width: 100%; + display: block; + margin: 1rem 0; +} + +.tiptap blockquote { + position: relative; + padding: 0.25rem 0; + padding-left: 0.75rem; + margin: 1rem 0rem; + font-style: italic; + color: var(--color-muted-foreground); +} + +.tiptap blockquote::before { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 0.2rem; + content: " "; + background-color: var(--color-border); + border-radius: 0.5rem; +} + +.tiptap blockquote p { + margin: 0; +} + +/* Horizontal Rule */ +.tiptap hr { + margin: 1.5rem 0; + border: none; + border-top: 1px solid var(--color-border); +} + +.tiptap code:not(pre code) { + font-family: "Fira Code Variable", monospace; + font-size: 0.875em; + background-color: var(--color-muted); + color: var(--color-primary); + border: 1px solid var(--color-border); + padding: 0.125rem 0.25rem; + border-radius: var(--radius-sm); +} + +.tiptap pre { + display: flex; + height: fit-content; + padding: 0 1rem 1rem 1rem; + margin: 0; + overflow: auto; + background-color: transparent; +} + +.tiptap pre code { + flex: 1; + padding: 0; + color: inherit; + background-color: transparent; + border-radius: 0 !important; +} + +.tiptap ul, +.tiptap ol { + padding: 0; + padding-left: 1.5rem; + margin: 0.125rem 0; +} + +.tiptap ul { + list-style-type: disc; +} + +.tiptap ol { + list-style-type: decimal; +} + +/* Nested list variants — mirrors Notion's rotating bullet style */ +.tiptap ul ul { + list-style-type: circle; +} + +.tiptap ul ul ul { + list-style-type: square; +} + +.tiptap ol ol { + list-style-type: lower-alpha; +} + +.tiptap ol ol ol { + list-style-type: lower-roman; +} + +.tiptap ul li, +.tiptap ol li { + margin: 0; + padding: 0.1rem 0; +} + +.tiptap ul li::marker, +.tiptap ol li::marker { + color: var(--foreground); +} + +.tiptap ul li p, +.tiptap ol li p { + margin: 0; +} + +/* ── Task List Styling ────────────────────────────────────── */ + +.tiptap ul[data-type="taskList"] { + padding: 0; + margin: 0.125rem 0; + list-style: none; +} + +.tiptap ul[data-type="taskList"] li { + display: flex; + align-items: flex-start; + gap: 0.5rem; + margin: 0; + padding: 0.1rem 0; +} + +.tiptap ul[data-type="taskList"] li > label { + display: flex; + align-items: center; + flex-shrink: 0; + height: 1.5rem; /* align with first line of text */ + margin: 0; + user-select: none; +} + +.tiptap ul[data-type="taskList"] li > div { + flex: 1; + min-width: 0; +} + +.tiptap ul[data-type="taskList"] li > div > p { + margin: 0; +} + +.tiptap ul[data-type="taskList"] input[type="checkbox"] { + cursor: pointer; +} + +/* Nested task lists */ +.tiptap ul[data-type="taskList"] ul[data-type="taskList"] { + margin: 0; + padding-left: 1.5rem; +} + +/* Checked item — subtle fade + strikethrough */ +.tiptap ul[data-type="taskList"] li[data-checked="true"] > div { + color: var(--muted-foreground); + text-decoration: line-through; + text-decoration-color: var(--muted-foreground); +} + +/* ── Custom Checkbox ──────────────────────────────────────── */ + +.tiptap input[type="checkbox"] { + position: relative; + display: grid; + place-content: center; + width: 1.125rem; + height: 1.125rem; + margin: 0; + margin-top: 0.25rem; + -webkit-appearance: none; + appearance: none; + cursor: pointer; + background-color: transparent; + border: 1px solid var(--muted-foreground); + border-radius: 0.2rem; + transition: + background-color 150ms ease, + border-color 150ms ease; +} + +.tiptap input[type="checkbox"]:hover { + border-color: var(--foreground); + background-color: color-mix(in srgb, var(--muted) 40%, transparent); +} + +.tiptap input[type="checkbox"]:active { + background-color: var(--muted); +} + +/* Checkmark */ +.tiptap input[type="checkbox"]::before { + width: 0.65rem; + height: 0.65rem; + content: ""; + background-color: var(--color-primary); + clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); + transform: scale(0); + transform-origin: center; + transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.tiptap input[type="checkbox"]:checked { + background-color: var(--color-background); + border-color: var(--color-border); +} + +.tiptap input[type="checkbox"]:checked:hover { + background-color: var(--color-muted); + border-color: var(--color-border); +} + +.tiptap input[type="checkbox"]:checked::before { + transform: scale(1); +} + +/* Color Swatches */ +.color { + white-space: nowrap; +} + +.color::before { + display: inline-block; + width: 1rem; + height: 1rem; + margin-right: 0.1rem; + margin-bottom: 0.15rem; + vertical-align: middle; + content: " "; + background-color: var(--color); + border: 1px solid var(--color-border); + border-radius: 0.25rem; +} + +/* Table Styling */ +.tiptap, +.tiptap { + /* New CSS variables for easy theming */ + --table-border-size: 1px; + --table-selected-border-size: 2px; + --table-resize-handle-thickness: 2px; + --table-hover-transition: 200ms ease-in-out; + --table-focus-ring: 2px; +} +.tiptap .tableWrapper { + padding: 1.25rem 1rem; + margin: 0; + margin: 0.5rem 0; + overflow-x: auto; +} + +.tiptap table { + box-sizing: border-box; + width: 100%; + margin-top: 1rem; + margin-bottom: 1rem; + border-collapse: collapse; + border: 1px solid var(--color-border); + border-radius: 0.25rem; +} + +.tiptap table td, +.tiptap table th { + position: relative; + min-width: 100px; + padding: 0.5rem; + vertical-align: top; + text-align: left; + border: 1px solid var(--color-border); +} + +.tiptap table td:first-of-type:not(a), +.tiptap table th:first-of-type:not(a) { + margin-top: 0; +} + +.tiptap table td p, +.tiptap table th p { + margin: 0; +} + +.tiptap table td p + p, +.tiptap table th p + p { + margin-top: 0.75rem; +} + +.tiptap table th { + font-weight: bold; + background-color: var(--color-muted); +} + +.tiptap table .column-resize-handle { + position: absolute; + top: 0; + right: -2px; + bottom: -2px; + width: 2px; + cursor: col-resize; + background-color: var(--primary); +} + +.tiptap table .selectedCell { + /* Stronger visual, avoids collapse issues */ + z-index: 1; + /* Stronger visual, avoids collapse issues */ + outline: 1px solid var(--primary); + background-color: var(--muted); +} + +.tiptap .tableWrapper .grip-column, +.tiptap .tableWrapper .grip-row { + position: absolute; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; + cursor: pointer; + background-color: var(--muted); + opacity: 0; + transition: opacity 300ms ease-in-out; +} + +.tiptap table .grip-column { + top: -0.8rem; + left: 0; + width: 100%; + height: 0.8rem; + margin-left: -1px; + border: 0.25px solid var(--color-border); + border-radius: 1rem; +} + +.tiptap table .grip-column::before, +.tiptap table .grip-column.selected::before { + width: 0.625rem; + content: ""; + background-color: var(--color-muted-foreground); +} + +.tiptap table .grip-column:hover { + background-color: var(--muted); +} + +.tiptap table .grip-column::before { + border-bottom: 2px dotted var(--muted); +} + +.tiptap table .grip-column.selected { + background-color: var(--muted); + border-color: var(--color-border); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +.tiptap table .grip-row { + top: 0; + left: -0.8rem; + width: 0.8rem; + height: calc(100%); + margin-top: -1px; + border: 0.5px solid var(--color-border); + border-radius: 1rem; +} + +.tiptap table .grip-row::before, +.tiptap table .grip-row.selected::before { + height: 0.625rem; + content: ""; + border-left: 2px dotted var(--color-muted-foreground); +} + +.tiptap table .grip-row:hover { + background-color: var(--muted); +} + +.tiptap table .grip-row.selected { + background-color: var(--muted); + border-color: var(--color-border); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +/* Cell grip — appears on cell hover or when selected */ +/* .tiptap table .grip-cell { + position: absolute; + right: -0.125rem; + translate: 0 calc(50% - 0.25rem); + width: 0.5rem; + height: 1rem; + border-radius: 2px; + background-color: var(--color-primary); + opacity: 0; + transition: all 200ms ease-in-out; +} */ + +.tiptap table td:hover .grip-cell, +.tiptap table th:hover .grip-cell, +.tiptap table .grip-cell.selected { + opacity: 1; +} + +/* Dynamic visibility classes for row/column grips */ +.tiptap .tableWrapper .grip-row.show-row-grip, +.tiptap .tableWrapper .grip-column.show-col-grip { + pointer-events: auto; + opacity: 1; +} + +/* Edge add buttons (Notion-like) */ +.tiptap .add-column-btn, +.tiptap .add-row-btn { + position: absolute; + z-index: 20; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--foreground); + cursor: pointer; + background-color: var(--muted); + border: 1px solid var(--color-border); + border-radius: 0.5rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + opacity: 0; + transform: scale(0.95); + transition: + opacity 200ms ease-in-out, + transform 200ms ease-in-out, + background-color 200ms ease-in-out; +} + +/* Only show add buttons when flagged by wrapper classes */ +.tiptap .tableWrapper.last-column-hover .add-column-btn, +.tiptap .tableWrapper.last-row-hover .add-row-btn { + opacity: 1; + transform: scale(1); +} + +.tiptap .add-column-btn:hover, +.tiptap .add-row-btn:hover { + background-color: var(--muted); + opacity: 0.95; +} + +/* Positioning: column button flush right, full height. Row button flush bottom, full width */ +.tiptap .add-column-btn { + top: 0; + right: -0.85rem; + width: 0.75rem; + height: 100%; +} + +.tiptap .add-row-btn { + bottom: -0.9rem; + left: 0; + width: 100%; + height: 0.75rem; +} + +/* Improve button hit areas via padding for better accessibility */ +.tiptap .add-column-btn { + padding: 0.25rem 0.125rem; +} +.tiptap .add-row-btn { + padding: 0.125rem 0.25rem; +} + +/* Focus states for accessibility */ +.tiptap .add-column-btn:focus-visible, +.tiptap .add-row-btn:focus-visible { + outline: 1px solid var(--primary); + outline-offset: 2px; +} + +.tiptap iframe { + aspect-ratio: 16 / 9; +} + +/* Callout Styles */ + +.tiptap .edra-callout-content { + flex: 1; + min-width: 0; +} + +.tiptap .edra-callout-content > p { + margin: 0; +} + +.tiptap .edra-callout-content > p + p { + margin-top: 0.5rem; +} + +.is-media-selected > .group, +.ProseMirror-selectednode.is-media-selected > .group, +.ProseMirror-selectednode > .group { + position: relative; + overflow: visible; +} + +.is-media-selected > .group::after, +.ProseMirror-selectednode.is-media-selected > .group::after, +.ProseMirror-selectednode > .group::after { + content: ""; + position: absolute; + inset: -3px; + border: 2px solid var(--color-primary, #3b82f6); + border-radius: 0.5rem; + pointer-events: none; + z-index: 6; + box-sizing: border-box; +} diff --git a/src/lib/components/edra/shadcn/editor.svelte b/src/lib/components/edra/shadcn/editor.svelte new file mode 100644 index 000000000..f6c68cc22 --- /dev/null +++ b/src/lib/components/edra/shadcn/editor.svelte @@ -0,0 +1,16 @@ + + + + + + diff --git a/src/lib/components/edra/shadcn/editor.ts b/src/lib/components/edra/shadcn/editor.ts new file mode 100644 index 000000000..1458ee856 --- /dev/null +++ b/src/lib/components/edra/shadcn/editor.ts @@ -0,0 +1,74 @@ +import type { Content, EditorOptions, Extensions } from "@tiptap/core"; +import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight"; +import TableOfContents, { getHierarchicalIndexes } from "@tiptap/extension-table-of-contents"; +import { all, createLowlight } from "lowlight"; +import { getDefaultExtensions } from "../extensions"; +import { + Callout, + IFrameExtended, + ImageExtended, + SlashCommand, + SvelteNodeViewRenderer, + useEditor, + VideoExtended +} from "../tiptap"; +import { MediaPlaceholder } from "../tiptap/extensions/MediaPlaceHolder"; +import CalloutComp from "./components/Callout.svelte"; +import CodeBlock from "./components/CodeBlock.svelte"; +import IFrameComp from "./components/IFrame.svelte"; +import ImageExtendedComp from "./components/ImageExtended.svelte"; +import MediaPlaceholderComp from "./components/MediaPlaceHolder.svelte"; +import SlashCommandComp from "./components/SlashCommand.svelte"; +import VideoExtendedComp from "./components/VideoExtended.svelte"; +import { setTocItems } from "./toc.svelte"; + +const lowlight = createLowlight(all); + +export interface EdraEditorProps { + /** Initial document, usually stored `editor.getJSON()` output. */ + content?: Content; + extensions?: Extensions; + /** Receives `{ editor, transaction }`; read the document with `editor.getJSON()`. */ + onUpdate?: EditorOptions["onUpdate"]; + /** + * When true, disables StarterKit history (undo/redo) for use with Yjs Collaboration. Required because Collaboration + * handles its own history. + */ + collaborative?: boolean; + /** + * Callback function to handle file uploads when a user drags/drops, pastes, or selects a media file (image, video, + * audio) to insert. It should upload the file to your storage (e.g., S3, Vercel Blob, etc.) and return a promise + * resolving to the public URL of the uploaded file. + * + * @param file The file to be uploaded. + * @returns A promise resolving to the uploaded file's URL. + */ + onFileUpload?: (file: File) => Promise; +} + +export const createEditor = (props?: EdraEditorProps) => + useEditor({ + content: props?.content ?? "", + extensions: [ + ...getDefaultExtensions({ undoRedo: !props?.collaborative }), + ...(props?.extensions || []), + CodeBlockLowlight.configure({ lowlight }).extend({ + addNodeView: () => SvelteNodeViewRenderer(CodeBlock) + }), + MediaPlaceholder.configure({ onUpload: props?.onFileUpload }).extend({ + addNodeView: () => SvelteNodeViewRenderer(MediaPlaceholderComp) + }), + ImageExtended.extend({ addNodeView: () => SvelteNodeViewRenderer(ImageExtendedComp) }), + VideoExtended.extend({ addNodeView: () => SvelteNodeViewRenderer(VideoExtendedComp) }), + IFrameExtended.extend({ addNodeView: () => SvelteNodeViewRenderer(IFrameComp) }), + Callout.extend({ addNodeView: () => SvelteNodeViewRenderer(CalloutComp) }), + SlashCommand(SlashCommandComp), + TableOfContents.configure({ + getIndex: getHierarchicalIndexes, + onUpdate: (indexes) => { + setTocItems(indexes); + } + }) + ], + onUpdate: props?.onUpdate ?? (() => {}) + }); diff --git a/src/lib/components/edra/shadcn/index.ts b/src/lib/components/edra/shadcn/index.ts new file mode 100644 index 000000000..f9d950aba --- /dev/null +++ b/src/lib/components/edra/shadcn/index.ts @@ -0,0 +1,17 @@ +import { Tiptap } from "../tiptap"; +import Toolbar from "./components/Toolbar.svelte"; +import DragHandle from "./drag-handle.svelte"; +import Editor from "./editor.svelte"; +export { createEditor } from "./editor"; +export * from "@tiptap/core"; +import BubbleMenu from "./components/menu/BubbleMenu.svelte"; +import ToC from "./toc.svelte"; + +const Edra = Object.assign(Tiptap, { + Content: Editor, + Toolbar, + BubbleMenu, + DragHandle, + ToC +}); +export { Edra }; diff --git a/src/lib/components/edra/shadcn/toc.svelte b/src/lib/components/edra/shadcn/toc.svelte new file mode 100644 index 000000000..75bb91722 --- /dev/null +++ b/src/lib/components/edra/shadcn/toc.svelte @@ -0,0 +1,51 @@ + + + + + + + + {#each tocItems as item (item.id)} + + {/each} + + + {#if tocItems === undefined || tocItems.length === 0} +
    No contents
    + {:else} + {#each tocItems as item (item.id)} + + {item.textContent} + + {/each} + {/if} +
    +
    +
    diff --git a/src/lib/components/edra/strings.ts b/src/lib/components/edra/strings.ts new file mode 100644 index 000000000..25ff3c1c6 --- /dev/null +++ b/src/lib/components/edra/strings.ts @@ -0,0 +1,234 @@ +const strings = { + command: { + undo: "Undo", + redo: "Redo", + h1: "Heading 1", + h2: "Heading 2", + h3: "Heading 3", + h4: "Heading 4", + link: "Link", + paragraph: "Paragraph", + bold: "Bold", + italic: "Italic", + underline: "Underline", + strikethrough: "Strikethrough", + blockQuote: "BlockQuote", + code: "Inline Code", + codeBlock: "Code Block", + superscript: "Superscript", + subscript: "Subscript", + alignLeft: "Align Left", + alignCenter: "Align Center", + alignRight: "Align Right", + alignJustify: "Align Justify", + bulletList: "Bullet List", + orderedList: "Ordered List", + taskList: "Task List", + imagePlaceholder: "Image Placeholder", + videoPlaceholder: "Video Placeholder", + audioPlaceholder: "Audio Placeholder", + iframePlaceholder: "Iframe Placeholder", + table: "Table", + horizontalRule: "Horizontal Rule", + formatGroup: "Format", + insertGroup: "Insert" + }, + dragHandle: { + title: "Drag Handle", + turnInto: "Turn into", + insertNext: "Insert Next", + removeFormatting: "Remove Formatting", + duplicate: "Duplicate", + copy: "Copy", + delete: "Delete Node" + }, + editor: { + headingPlaceholder: "What's the title?", + paragraphPlaceholder: "Write, or press / for commands", + contentErrorTitle: "Unable to load the content", + contentErrorDescription: "The content of this page might be corrupted." + }, + extension: { + audio: { + multiplePasteWarningTitle: "Can not paste multiple files at once!", + multiplePasteWarningDescription: "You can only paste one file at a time. Only the first file will be pasted.", + pasteProcessing: "Processing Pasted Audio", + pasteError: "Could not paste audio", + multipleDropWarningTitle: "Can not drop multiple files at once!", + multipleDropWarningDescription: "You can only drop one file at a time. Only the first file will be dropped.", + dropProcessing: "Processing Dropped Audio", + dropError: "Could not upload audio", + enterURLPrompt: "Enter Audio URL", + insertPlaceholder: "Insert an audio", + uploadProcessing: "Uploading Audio File", + openButton: "Open", + openError: "Could not process audio files.", + uploadTab: "Upload", + embedLinkTab: "Embed Link", + uploadButton: "Upload Audio", + embedLinkButton: "Insert", + embedLinkPlaceholder: "Embed Audio" + }, + code: { + copy: "Copy", + copied: "Copied!", + plainText: "Plain Text", + searchLanguagePlaceholder: "Search language...", + searchLanguageEmpty: "No Language found." + }, + iframe: { + enterURLPrompt: "Please enter the iframe URL", + insertPlaceholder: "Insert an iframe", + openButton: "Open", + embedLinkPlaceholder: "Embed Iframe", + embedLinkButton: "Insert" + }, + image: { + enterURLPrompt: "Please enter the image URL", + insertPlaceholder: "Insert an image", + uploadProcessing: "Uploading Image File", + openButton: "Open", + openError: "Could not process image files.", + uploadTab: "Upload", + embedLinkTab: "Embed Link", + uploadButton: "Upload Image", + embedLinkButton: "Insert", + embedLinkPlaceholder: "Embed Image" + }, + media: { + back: "Back", + resizeLeft: "Resize Left", + resizeRight: "Resize Right", + alignLeft: "Align Left", + alignCenter: "Align Center", + alignRight: "Align Right", + moreOptions: "More Options", + caption: "Caption", + captionPlaceholder: "Your Media Caption", + duplicate: "Duplicate", + fullscreen: "Full Screen", + delete: "Delete" + }, + table: { + selectCell: "Select Cell", + selectRow: "Select Row", + addRow: "Add Row", + addRowAfter: "Add Row After", + addRowBefore: "Add Row Before", + deleteRow: "Delete Row", + selectColumn: "Select Column", + addColumn: "Add Column", + addColumnAfter: "Add Column After", + addColumnBefore: "Add Column Before", + deleteColumn: "Delete Column" + }, + video: { + multiplePasteWarningTitle: "Can not paste multiple files at once!", + multiplePasteWarningDescription: "You can only paste one file at a time. Only the first file will be pasted.", + pasteProcessing: "Processing Pasted Video", + pasteError: "Could not handle pasted video", + multipleDropWarningTitle: "Can not drop multiple files at once!", + multipleDropWarningDescription: "You can only drop one file at a time. Only the first file will be processed.", + dropProcessing: "Processing Dropped Video", + dropError: "Could not upload video", + enterURLPrompt: "Please enter the video URL", + insertPlaceholder: "Insert a video", + uploadProcessing: "Uploading Video", + openButton: "Open", + openError: "Could not process video files.", + uploadTab: "Upload", + embedLinkTab: "Embed Link", + uploadButton: "Upload Video", + embedLinkButton: "Insert", + embedLinkPlaceholder: "Embed Video" + } + }, + menu: { + link: { + open: "Open Link", + edit: "Edit Link", + copy: "Copy Link", + remove: "Remove Link", + save: "Save", + enterLinkPlaceholder: "Type or paste a link", + enterLinkButton: "Set new link" + }, + table: { + headerColumn: "Header Column", + addColumnAfter: "Add Column After", + addColumnBefore: "Add Column Before", + moveColumnLeft: "Move Column Left", + moveColumnRight: "Move Column Right", + deleteColumn: "Delete This Column", + headerRow: "Header Row", + addRowAfter: "Add Row After", + addRowBefore: "Add Row Before", + moveRowUp: "Move Row Up", + moveRowDown: "Move Row Down", + deleteRow: "Delete This Row" + } + }, + toolbar: { + alignment: { + buttonTitle: "Alignment", + dropdownTitle: "Alignments" + }, + color: { + buttonTitle: "Quick Colors", + textColor: "Text Color", + textColors: "Text Colors", + highlightColor: "Highlight Color", + highlightColors: "Highlight Colors", + templateCharacter: "A", + default: "Default", + blue: "Blue", + red: "Red", + brown: "Brown", + green: "Green", + gray: "Gray", + orange: "Orange", + pink: "Pink", + purple: "Purple", + yellow: "Yellow" + }, + font: { + buttonTitle: "Font Size", + dropdownTitle: "Font Size", + tiny: "Tiny", + smaller: "Smaller", + small: "Small", + default: "Default", + large: "Large", + extraLarge: "Extra Large" + }, + heading: { + buttonTitle: "Headings" + }, + link: { + buttonTitle: "Link", + insertLinkPlaceholder: "Insert Link", + insertLink: "Insert Link" + }, + list: { + buttonTitle: "Lists", + dropdownTitle: "Lists" + }, + searchAndReplace: { + buttonTitle: "Search and Replace", + showMore: "Show More", + goBack: "Go Back", + searchAndReplace: "Search and Replace", + searchPlaceholder: "Search...", + caseSensitive: "Case Sensitive", + goToPrevious: "Go to Previous", + goToNext: "Go to Next", + previous: "Previous", + next: "Next", + replacePlaceholder: "Replace...", + replace: "Replace", + replaceAll: "Replace All" + } + } +}; + +export default strings; diff --git a/src/lib/components/edra/tiptap/Editor.ts b/src/lib/components/edra/tiptap/Editor.ts new file mode 100644 index 000000000..bc1651ba5 --- /dev/null +++ b/src/lib/components/edra/tiptap/Editor.ts @@ -0,0 +1,52 @@ +import type { EditorOptions, Storage } from "@tiptap/core"; +import { Editor as CoreEditor } from "@tiptap/core"; +import type { EditorState, Plugin, PluginKey } from "@tiptap/pm/state"; + +export class Editor extends CoreEditor { + public reactiveState: EditorState = this.view.state; + + public reactiveExtensionStorage: Storage = this.extensionStorage; + + constructor(options: Partial = {}) { + super(options); + + this.reactiveState = this.view.state; + this.reactiveExtensionStorage = this.extensionStorage; + + this.on("beforeTransaction", ({ nextState }) => { + this.reactiveState = nextState; + this.reactiveExtensionStorage = this.extensionStorage; + }); + } + + get state() { + return this.reactiveState ?? this.view.state; + } + + get storage() { + return this.reactiveExtensionStorage ?? super.storage; + } + + public registerPlugin( + plugin: Plugin, + handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[] + ): EditorState { + const nextState = super.registerPlugin(plugin, handlePlugins); + + if (this.reactiveState) { + this.reactiveState = nextState; + } + + return nextState; + } + + public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined { + const nextState = super.unregisterPlugin(nameOrPluginKey); + + if (this.reactiveState && nextState) { + this.reactiveState = nextState; + } + + return nextState; + } +} diff --git a/src/lib/components/edra/tiptap/components/EditorContent.svelte b/src/lib/components/edra/tiptap/components/EditorContent.svelte new file mode 100644 index 000000000..2fdf5e00e --- /dev/null +++ b/src/lib/components/edra/tiptap/components/EditorContent.svelte @@ -0,0 +1,38 @@ + + +
    diff --git a/src/lib/components/edra/tiptap/components/MarkViewContent.svelte b/src/lib/components/edra/tiptap/components/MarkViewContent.svelte new file mode 100644 index 000000000..4eb1689dd --- /dev/null +++ b/src/lib/components/edra/tiptap/components/MarkViewContent.svelte @@ -0,0 +1,7 @@ + + +{#key "mvc"} + +{/key} diff --git a/src/lib/components/edra/tiptap/components/MarkViewFrame.svelte b/src/lib/components/edra/tiptap/components/MarkViewFrame.svelte new file mode 100644 index 000000000..a2acbb5d5 --- /dev/null +++ b/src/lib/components/edra/tiptap/components/MarkViewFrame.svelte @@ -0,0 +1,20 @@ + + +
    + +
    diff --git a/src/lib/components/edra/tiptap/components/NodeViewContent.svelte b/src/lib/components/edra/tiptap/components/NodeViewContent.svelte new file mode 100644 index 000000000..de57fd8d9 --- /dev/null +++ b/src/lib/components/edra/tiptap/components/NodeViewContent.svelte @@ -0,0 +1,7 @@ + + +{#key "nvc"} + +{/key} diff --git a/src/lib/components/edra/tiptap/components/NodeViewFrame.svelte b/src/lib/components/edra/tiptap/components/NodeViewFrame.svelte new file mode 100644 index 000000000..272f58b8c --- /dev/null +++ b/src/lib/components/edra/tiptap/components/NodeViewFrame.svelte @@ -0,0 +1,20 @@ + + + diff --git a/src/lib/components/edra/tiptap/components/NodeViewWrapper.svelte b/src/lib/components/edra/tiptap/components/NodeViewWrapper.svelte new file mode 100644 index 000000000..76e96bfd8 --- /dev/null +++ b/src/lib/components/edra/tiptap/components/NodeViewWrapper.svelte @@ -0,0 +1,32 @@ + + + + {#if children} + {@render children()} + {/if} + diff --git a/src/lib/components/edra/tiptap/components/Tiptap.svelte b/src/lib/components/edra/tiptap/components/Tiptap.svelte new file mode 100644 index 000000000..7d95f9acd --- /dev/null +++ b/src/lib/components/edra/tiptap/components/Tiptap.svelte @@ -0,0 +1,15 @@ + + +{#if editor && children} + {@render children()} +{/if} diff --git a/src/lib/components/edra/tiptap/components/TiptapContent.svelte b/src/lib/components/edra/tiptap/components/TiptapContent.svelte new file mode 100644 index 000000000..25d62b259 --- /dev/null +++ b/src/lib/components/edra/tiptap/components/TiptapContent.svelte @@ -0,0 +1,10 @@ + + + diff --git a/src/lib/components/edra/tiptap/components/editorContext.ts b/src/lib/components/edra/tiptap/components/editorContext.ts new file mode 100644 index 000000000..bf1f8feec --- /dev/null +++ b/src/lib/components/edra/tiptap/components/editorContext.ts @@ -0,0 +1,18 @@ +import { getContext, setContext } from "svelte"; +import type { Editor } from "../Editor"; + +const EDITOR_CTX = Symbol("editor"); + +export const getEditor = (): Editor => { + const editor = getContext(EDITOR_CTX); + + if (!editor) { + throw new Error("No editor found in context. Did you wrap your component in ?"); + } + + return editor; +}; + +export const setEditor = (editor: Editor): void => { + setContext(EDITOR_CTX, editor); +}; diff --git a/src/lib/components/edra/tiptap/components/menus/BubbleMenu.svelte b/src/lib/components/edra/tiptap/components/menus/BubbleMenu.svelte new file mode 100644 index 000000000..c7bcddb31 --- /dev/null +++ b/src/lib/components/edra/tiptap/components/menus/BubbleMenu.svelte @@ -0,0 +1,86 @@ + + +
    + {@render children()} +
    diff --git a/src/lib/components/edra/tiptap/components/menus/index.ts b/src/lib/components/edra/tiptap/components/menus/index.ts new file mode 100644 index 000000000..42a590704 --- /dev/null +++ b/src/lib/components/edra/tiptap/components/menus/index.ts @@ -0,0 +1 @@ +export { default as BubbleMenu } from "./BubbleMenu.svelte"; diff --git a/src/lib/components/edra/tiptap/extensions/Callout.ts b/src/lib/components/edra/tiptap/extensions/Callout.ts new file mode 100644 index 000000000..bee3daa51 --- /dev/null +++ b/src/lib/components/edra/tiptap/extensions/Callout.ts @@ -0,0 +1,121 @@ +import { + mergeAttributes, + Node, + wrappingInputRule, + type JSONContent, + type MarkdownLexerConfiguration, + type MarkdownParseHelpers, + type MarkdownRendererHelpers, + type MarkdownToken +} from "@tiptap/core"; + +declare module "@tiptap/core" { + interface Commands { + callout: { + setCallout: () => ReturnType; + }; + } +} + +/** Base callout node; the editor adds its Svelte node view in `shadcn/editor.ts`. */ +export const Callout = Node.create({ + name: "callout", + content: "paragraph+", + group: "block", + defining: true, + selectable: true, + draggable: true, + + addAttributes() { + return { + emoji: { + default: "💡" + } + }; + }, + + markdownTokenizer: { + name: "callout", + level: "block", + + start: (src: string) => { + return src.indexOf("$"); + }, + + tokenize: (src: string, _tokens: MarkdownToken[], lexer: MarkdownLexerConfiguration) => { + // Match $callout[emoji]\ncontent\n$ + const match = /^\$callout\s*(.*)?\n([\s\S]*?)\n\$/.exec(src); + + if (!match) { + return undefined; + } + + return { + type: "callout", + raw: match[0], + emoji: match[1]?.trim() || "💡", + text: match[2], + tokens: lexer.blockTokens(match[2]) + }; + } + }, + + parseMarkdown: (token: MarkdownToken, helpers: MarkdownParseHelpers) => { + return { + type: "callout", + attrs: { + emoji: token.emoji + }, + content: helpers.parseChildren(token.tokens || []) + }; + }, + + renderMarkdown: (node: JSONContent, helpers: MarkdownRendererHelpers) => { + const content = helpers.renderChildren(node); + const emoji = node.attrs?.emoji || "💡"; + return `$callout${emoji}\n${content}\n$\n\n`; + }, + + addOptions() { + return { + HTMLAttributes: { + class: "callout" + } + }; + }, + + parseHTML() { + return [{ tag: "div[class=callout]" }]; + }, + + renderHTML({ HTMLAttributes }) { + return ["div", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]; + }, + + addCommands() { + return { + setCallout: + () => + ({ commands, editor }) => { + const { type = null } = editor.getAttributes(this.name); + if (type) { + return commands.lift(this.name); + } else { + return commands.toggleWrap(this.name); + } + } + }; + }, + + addInputRules() { + return [ + wrappingInputRule({ + find: /^\$callout\s*(.*)?\s$/, + type: this.type, + getAttributes: (match) => { + return { emoji: match[1]?.trim() || "💡" }; + } + }) + ]; + } +}); diff --git a/src/lib/components/edra/tiptap/extensions/ColorHighlighter.ts b/src/lib/components/edra/tiptap/extensions/ColorHighlighter.ts new file mode 100644 index 000000000..cfc90bd01 --- /dev/null +++ b/src/lib/components/edra/tiptap/extensions/ColorHighlighter.ts @@ -0,0 +1,27 @@ +import { Extension } from "@tiptap/core"; +import { Plugin } from "@tiptap/pm/state"; +import { findColors } from "../../utils"; + +export default Extension.create({ + name: "colorHighlighter", + + addProseMirrorPlugins() { + return [ + new Plugin({ + state: { + init(_, { doc }) { + return findColors(doc); + }, + apply(transaction, oldState) { + return transaction.docChanged ? findColors(transaction.doc) : oldState; + } + }, + props: { + decorations(state) { + return this.getState(state); + } + } + }) + ]; + } +}); diff --git a/src/lib/components/edra/tiptap/extensions/MediaPlaceHolder.ts b/src/lib/components/edra/tiptap/extensions/MediaPlaceHolder.ts new file mode 100644 index 000000000..cf7174181 --- /dev/null +++ b/src/lib/components/edra/tiptap/extensions/MediaPlaceHolder.ts @@ -0,0 +1,135 @@ +import { mergeAttributes, Node } from "@tiptap/core"; +import { NodeSelection } from "@tiptap/pm/state"; + +export interface MediaPlaceholderOptions { + HTMLAttributes: Record; + onUpload?: (file: File) => Promise; +} + +declare module "@tiptap/core" { + interface Commands { + mediaPlaceholder: { + /** Inserts a media placeholder */ + insertMediaPlaceholder: (options: { mediaType: "image" | "video" | "audio" | "iframe" }) => ReturnType; + + /** Set the upload handler */ + setMediaUploadHandler: (handler: (file: File) => Promise) => ReturnType; + + /** Upload a media and insert the result */ + uploadMedia: (file: File) => ReturnType; + }; + } + + interface Storage { + mediaPlaceholder: { + onUpload?: (file: File) => Promise; + }; + } +} + +/** Editor-only transient node; never part of the content schema. */ +export const MediaPlaceholder = Node.create({ + name: "mediaPlaceholder", + + addOptions() { + return { + HTMLAttributes: {}, + onUpload: undefined + }; + }, + + addStorage() { + return { + onUpload: this.options.onUpload + }; + }, + + addAttributes() { + return { + mediaType: { + default: "image", + parseHTML: (element) => element.getAttribute("data-media-type"), + renderHTML: (attributes) => { + if (!attributes.mediaType) { + return {}; + } + return { + "data-media-type": attributes.mediaType + }; + } + } + }; + }, + + parseHTML() { + return [{ tag: `div[data-type="${this.name}"]` }]; + }, + + renderHTML({ HTMLAttributes }) { + return ["div", mergeAttributes({ "data-type": this.name }, this.options.HTMLAttributes, HTMLAttributes)]; + }, + + group: "block", + draggable: true, + atom: true, + content: "inline*", + isolating: true, + + addCommands() { + return { + insertMediaPlaceholder: + (options) => + ({ commands }) => { + return commands.insertContent({ + type: this.name, + attrs: { + mediaType: options.mediaType + } + }); + }, + + setMediaUploadHandler: + (handler) => + ({ editor }) => { + editor.storage.mediaPlaceholder.onUpload = handler; + return true; + }, + + uploadMedia: + (file: File) => + ({ editor }) => { + const onUpload = editor.storage.mediaPlaceholder.onUpload || this.options.onUpload; + if (!onUpload) { + throw new Error("onUpload is not defined"); + } + + // Detect mediaType from current selection + let mediaType = "image"; + const { selection } = editor.state; + if (selection instanceof NodeSelection) { + const selectedNode = selection.node; + if (selectedNode.type.name === this.name) { + mediaType = selectedNode.attrs.mediaType; + } + } + + void onUpload(file) + .then((src) => { + editor.view.focus(); + if (mediaType === "audio") { + editor.commands.setAudio({ src }); + } else if (mediaType === "video") { + editor.commands.setVideo({ src }); + } else { + editor.commands.setImage({ src }); + } + }) + .catch((error) => { + console.error("Failed to upload media:", error); + }); + + return true; + } + }; + } +}); diff --git a/src/lib/components/edra/tiptap/extensions/SelectAcrossAtoms.ts b/src/lib/components/edra/tiptap/extensions/SelectAcrossAtoms.ts new file mode 100644 index 000000000..56b4f481a --- /dev/null +++ b/src/lib/components/edra/tiptap/extensions/SelectAcrossAtoms.ts @@ -0,0 +1,656 @@ +import { Extension } from "@tiptap/core"; +import type { Node as ProseMirrorNode, ResolvedPos } from "@tiptap/pm/model"; +import { NodeSelection, Plugin, PluginKey, Selection, TextSelection } from "@tiptap/pm/state"; +import { Decoration, DecorationSet, type EditorView } from "@tiptap/pm/view"; + +const selectAcrossAtomsKey = new PluginKey("selectAcrossAtoms"); + +/** Penetration depth below this threshold is treated as a "slight graze" and won't be merged into the selection */ +export const ATOM_SLIGHT_PENETRATION_PX = 12; + +/** + * Returns the effective penetration threshold for a given atom element, clamped to the atom's dimensions. This prevents + * small atoms (whose smaller dimension is below ~24px) from never reaching the fixed threshold. + */ +export function effectivePenetrationThreshold(rect: DOMRectReadOnly): number { + const maxPossible = Math.min(rect.width, rect.height) / 2; + return Math.min(ATOM_SLIGHT_PENETRATION_PX, maxPossible); +} + +export type AtomVerticalSide = "above" | "below"; + +/** Block-level leaf / atom: should be merged as a whole block into TextSelection during drag-selection */ +function isAcrossSelectableNode(node: ProseMirrorNode): boolean { + if (node.isText) return false; + if (node.type.name === "image") return true; + if (node.type.name === "video" || node.type.name === "audio" || node.type.name === "iframe") { + return true; + } + return node.isAtom && (node.isLeaf || !node.type.inlineContent); +} + +/** + * Construct a TextSelection covering [nodeStart, nodeEnd) while preserving the original anchor. Cannot simply use + * TextSelection.between(anchor, nodeEnd) because nodeEnd is often in a doc gap, and `between` would pull the head back + * before the image/formula, preventing the node from being truly included in the selection. + */ +export function selectionCoveringNode( + doc: ProseMirrorNode, + anchor: number, + nodeStart: number, + nodeEnd: number +): TextSelection { + const forward = anchor <= nodeStart; + const edge = forward ? nodeEnd : nodeStart; + const bias = forward ? 1 : -1; + const found = Selection.findFrom(doc.resolve(edge), bias, true); + + if (found) { + const next = TextSelection.between(doc.resolve(anchor), found.$head); + if (next instanceof TextSelection && next.from <= nodeStart && next.to >= nodeEnd) { + return next; + } + } + + const from = Math.min(anchor, nodeStart); + const to = Math.max(anchor, nodeEnd); + return TextSelection.create(doc, from, to); +} + +/** Mouse penetration depth relative to an element (distance to nearest edge); 0 if outside */ +export function atomPenetrationDepth(clientX: number, clientY: number, rect: DOMRectReadOnly): number { + if (clientX < rect.left || clientX > rect.right || clientY < rect.top || clientY > rect.bottom) { + return 0; + } + return Math.min(clientX - rect.left, rect.right - clientX, clientY - rect.top, rect.bottom - clientY); +} + +/** Determine whether the drag-selection enters the atom node from above or below, based on selection position */ +export function entrySideFromSelection(sel: Selection, nodeStart: number, nodeEnd: number): AtomVerticalSide | null { + const from = Math.min(sel.anchor, sel.head); + const to = Math.max(sel.anchor, sel.head); + if (to <= nodeStart) return "above"; + if (from >= nodeEnd) return "below"; + // Already spanning the node: use the side where the anchor is + if (sel.anchor <= nodeStart) return "above"; + if (sel.anchor >= nodeEnd) return "below"; + return null; +} + +/** Determine the exit side based on the pointer position relative to the node's bounding rect when leaving */ +export function leaveSideFromPoint(clientY: number, rect: DOMRectReadOnly): AtomVerticalSide { + const mid = (rect.top + rect.bottom) / 2; + return clientY < mid ? "above" : "below"; +} + +function clampPosToSide( + doc: ProseMirrorNode, + pos: number, + nodeStart: number, + nodeEnd: number, + side: AtomVerticalSide +): number { + if (side === "below") { + if (pos >= nodeEnd) return pos; + const found = Selection.findFrom(doc.resolve(nodeEnd), 1, true); + return found?.from ?? nodeEnd; + } + if (pos <= nodeStart) return pos; + const found = Selection.findFrom(doc.resolve(nodeStart), -1, true); + return found?.from ?? nodeStart; +} + +/** Merge an atom node into the current drag TextSelection (preserving the anchor) */ +export function includeAtomInDragSelection(view: EditorView, nodeStart: number, nodeEnd: number): boolean { + const { state } = view; + const sel = state.selection; + + if (sel instanceof NodeSelection) return false; + if (sel.empty) return false; + if (sel.from <= nodeStart && sel.to >= nodeEnd) return true; + + try { + const next = selectionCoveringNode(state.doc, sel.anchor, nodeStart, nodeEnd); + if (!sel.eq(next)) { + view.dispatch(state.tr.setSelection(next).setMeta("addToHistory", false)); + } + return true; + } catch { + return false; + } +} + +/** + * Exclude an atom node from the selection, pulling the selection back to the specified side (retracting after + * accidentally entering). savedAnchor is the anchor before entry, used to restore the original selection intent as + * closely as possible. + */ +export function excludeAtomFromDragSelection( + view: EditorView, + nodeStart: number, + nodeEnd: number, + side: AtomVerticalSide, + savedAnchor: number, + clientX: number, + clientY: number +): boolean { + const { state } = view; + const sel = state.selection; + if (sel instanceof NodeSelection || sel.empty) return false; + + const posInfo = view.posAtCoords({ left: clientX, top: clientY }); + const rawHead = posInfo?.pos ?? savedAnchor; + const anchor = clampPosToSide(state.doc, savedAnchor, nodeStart, nodeEnd, side); + const head = clampPosToSide(state.doc, rawHead, nodeStart, nodeEnd, side); + + try { + const next = TextSelection.between(state.doc.resolve(anchor), state.doc.resolve(head)); + if (!sel.eq(next)) { + view.dispatch(state.tr.setSelection(next).setMeta("addToHistory", false)); + } + return true; + } catch { + try { + const next = TextSelection.create(state.doc, anchor, head); + view.dispatch(state.tr.setSelection(next).setMeta("addToHistory", false)); + return true; + } catch { + return false; + } + } +} + +/** Settle when leaving an atom node: exit on same side → exclude the node; exit on opposite side → keep it included. */ +export function resolveAtomLeave( + view: EditorView, + opts: { + nodeStart: number; + nodeEnd: number; + entrySide: AtomVerticalSide; + savedAnchor: number; + included: boolean; + clientX: number; + clientY: number; + rect: DOMRectReadOnly; + } +): void { + if (!opts.included) return; + + const leaveSide = leaveSideFromPoint(opts.clientY, opts.rect); + if (leaveSide === opts.entrySide) { + excludeAtomFromDragSelection( + view, + opts.nodeStart, + opts.nodeEnd, + leaveSide, + opts.savedAnchor, + opts.clientX, + opts.clientY + ); + } else { + // Crossed to opposite side: selection should include the image + includeAtomInDragSelection(view, opts.nodeStart, opts.nodeEnd); + } +} + +/** + * Only match when coordinates fall "inside" the atom node. Avoids using nodeBefore since it can be falsely matched when + * a paragraph starts right after an image above. + */ +function findAcrossNodeAtPos($pos: ResolvedPos): { pos: number; node: ProseMirrorNode } | null { + for (let d = $pos.depth; d > 0; d--) { + const node = $pos.node(d); + if (isAcrossSelectableNode(node)) { + return { pos: $pos.before(d), node }; + } + } + + const nodeAfter = $pos.nodeAfter; + if (nodeAfter && isAcrossSelectableNode(nodeAfter)) { + return { pos: $pos.pos, node: nodeAfter }; + } + return null; +} + +function atomHitFromPos(view: EditorView, pos: number): { nodeStart: number; nodeEnd: number; dom: Element } | null { + const hit = findAcrossNodeAtPos(view.state.doc.resolve(pos)); + if (!hit) return null; + const nodeStart = hit.pos; + const nodeEnd = nodeStart + hit.node.nodeSize; + const dom = view.nodeDOM(nodeStart); + if (!(dom instanceof Element)) return null; + return { nodeStart, nodeEnd, dom }; +} + +/** Prefer elementFromPoint to hit NodeView (during drag-selection, posAtCoords often lands in gaps before/after images). */ +function hitAtomAtCoords( + view: EditorView, + clientX: number, + clientY: number +): { nodeStart: number; nodeEnd: number; dom: Element } | null { + const el = document.elementFromPoint(clientX, clientY); + if (el && view.dom.contains(el)) { + const wrapper = + el.closest("[data-node-view-wrapper]") ?? + (el instanceof HTMLImageElement || el instanceof HTMLVideoElement ? el : null); + + if (wrapper && view.dom.contains(wrapper)) { + try { + const pos = view.posAtDOM(wrapper, 0); + const fromDom = atomHitFromPos(view, pos); + if (fromDom) { + const rect = fromDom.dom.getBoundingClientRect(); + if (clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom) { + return fromDom; + } + } + } catch { + /* posAtDOM failed, fall back */ + } + } + } + + const posInfo = view.posAtCoords({ left: clientX, top: clientY }); + if (!posInfo) return null; + + const inside = posInfo.inside >= 0 ? posInfo.inside : posInfo.pos; + return atomHitFromPos(view, inside); +} + +function pointInRect(clientX: number, clientY: number, rect: DOMRectReadOnly): boolean { + return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom; +} + +type AtomVisit = { + nodeStart: number; + nodeEnd: number; + maxPenetration: number; + included: boolean; + entrySide: AtomVerticalSide; + savedAnchor: number; + dom: Element; +}; + +type PreservedRange = { anchor: number; head: number }; + +/** Check if right-click falls within the current non-empty selection (including atoms fully covered by TextSelection) */ +function shouldPreserveSelectionOnRightClick(view: EditorView, event: MouseEvent): boolean { + if (event.button !== 2) return false; + const sel = view.state.selection; + if (sel.empty) return false; + + const hit = hitAtomAtCoords(view, event.clientX, event.clientY); + if (hit && sel.from <= hit.nodeStart && sel.to >= hit.nodeEnd) { + return true; + } + + const posInfo = view.posAtCoords({ left: event.clientX, top: event.clientY }); + if (!posInfo) return false; + + const pos = posInfo.inside >= 0 ? posInfo.inside : posInfo.pos; + return pos >= sel.from && pos <= sel.to; +} + +function restorePreservedSelection(view: EditorView, preserved: PreservedRange): void { + const { state } = view; + const sel = state.selection; + if (sel.anchor === preserved.anchor && sel.head === preserved.head) { + const from = Math.min(preserved.anchor, preserved.head); + const to = Math.max(preserved.anchor, preserved.head); + let coversAll = true; + state.doc.nodesBetween(from, to, (node, pos) => { + if (!isAcrossSelectableNode(node)) return; + if (from <= pos && to >= pos + node.nodeSize) { + if (!(sel.from <= pos && sel.to >= pos + node.nodeSize)) coversAll = false; + } + }); + if (coversAll) return; + } + + try { + let next: TextSelection = TextSelection.create(state.doc, preserved.anchor, preserved.head); + const from = Math.min(preserved.anchor, preserved.head); + const to = Math.max(preserved.anchor, preserved.head); + state.doc.nodesBetween(from, to, (node, pos) => { + if (!isAcrossSelectableNode(node)) return; + const nodeEnd = pos + node.nodeSize; + if (from <= pos && to >= nodeEnd && !(next.from <= pos && next.to >= nodeEnd)) { + next = selectionCoveringNode(state.doc, next.anchor, pos, nodeEnd); + } + }); + if (!sel.eq(next)) { + view.dispatch(state.tr.setSelection(next).setMeta("addToHistory", false)); + } + } catch { + try { + const next = TextSelection.between(state.doc.resolve(preserved.anchor), state.doc.resolve(preserved.head)); + view.dispatch(state.tr.setSelection(next).setMeta("addToHistory", false)); + } catch { + /* ignore */ + } + } +} + +/** + * Left-click to select an atom node: posAtCoords.inside on NodeView is often -1, PM's default selectClickedLeaf will + * fail, so we use DOM hit testing to supplement with NodeSelection. + */ +function selectAtomOnClick(view: EditorView, event: MouseEvent): boolean { + if (event.button !== 0 || !view.editable) return false; + + const target = event.target; + if ( + target instanceof Element && + target.closest(".resize-handle, .media-toolbar, .more-options-menu, input, button, textarea, a") + ) { + return false; + } + + const hit = hitAtomAtCoords(view, event.clientX, event.clientY); + if (!hit || !pointInRect(event.clientX, event.clientY, hit.dom.getBoundingClientRect())) { + return false; + } + + const node = view.state.doc.nodeAt(hit.nodeStart); + if (!node || !isAcrossSelectableNode(node) || !NodeSelection.isSelectable(node)) { + return false; + } + + const sel = view.state.selection; + if (sel instanceof NodeSelection && sel.from === hit.nodeStart) { + return true; + } + + try { + view.dispatch( + view.state.tr.setSelection(NodeSelection.create(view.state.doc, hit.nodeStart)).setMeta("pointer", true) + ); + return true; + } catch { + return false; + } +} + +/** + * When drag-selecting across atom nodes (images, formulas, etc.), merge the entire block into TextSelection. + * + * - Left-click on an atom like image → NodeSelection + selection highlight + * - Truly entered (sufficient penetration depth) → immediately merge into selection + * - On leaving: exit on entry side → exclude the image; exit on opposite side → keep it included + * - Slight edge graze → do not merge + * - Right-click within selection: preventDefault + restore snapshot, maintaining TextSelection / atom highlight + */ +export const SelectAcrossAtoms = Extension.create({ + name: "selectAcrossAtoms", + + addProseMirrorPlugins() { + let dragging = false; + let visit: AtomVisit | null = null; + /** + * Preserve selection on right-click within selection, preventing browser/PM from collapsing it to a cursor or + * NodeSelection + */ + let preservedOnRightClick: PreservedRange | null = null; + let restoreRaf = 0; + /** Pointer position when left button is pressed, used to distinguish click-select from drag-select */ + let mouseDownX = 0; + let mouseDownY = 0; + + const resetVisit = () => { + visit = null; + }; + + const scheduleRestorePreserved = (view: EditorView) => { + if (!preservedOnRightClick) return; + const snap = preservedOnRightClick; + if (restoreRaf) cancelAnimationFrame(restoreRaf); + restoreRaf = requestAnimationFrame(() => { + restoreRaf = 0; + if (preservedOnRightClick) restorePreservedSelection(view, snap); + }); + }; + + const leaveCurrentVisit = (view: EditorView, clientX: number, clientY: number) => { + if (!visit) return; + const v = visit; + visit = null; + const rect = v.dom.getBoundingClientRect(); + resolveAtomLeave(view, { + nodeStart: v.nodeStart, + nodeEnd: v.nodeEnd, + entrySide: v.entrySide, + savedAnchor: v.savedAnchor, + included: v.included, + clientX, + clientY, + rect + }); + }; + + const trackAtomUnderPointer = (view: EditorView, clientX: number, clientY: number) => { + if (!dragging || !view.editable) return; + + let hit = hitAtomAtCoords(view, clientX, clientY); + + // When posAtCoords / DOM briefly misses: if pointer is still within the current visit rect, treat as still hitting + // (otherwise it would leave → exclude, and PM would pull the selection outside the image on the next frame) + if (!hit && visit && pointInRect(clientX, clientY, visit.dom.getBoundingClientRect())) { + hit = { + nodeStart: visit.nodeStart, + nodeEnd: visit.nodeEnd, + dom: visit.dom + }; + } + + if (hit) { + const rect = hit.dom.getBoundingClientRect(); + const pen = atomPenetrationDepth(clientX, clientY, rect); + + if (visit && visit.nodeStart !== hit.nodeStart) { + leaveCurrentVisit(view, clientX, clientY); + } + + if (!visit || visit.nodeStart !== hit.nodeStart) { + const sel = view.state.selection; + if (sel instanceof NodeSelection || sel.empty) return; + + const entrySide = entrySideFromSelection(sel, hit.nodeStart, hit.nodeEnd); + if (!entrySide) { + // Selection already covers this node: just keep it + if (sel.from <= hit.nodeStart && sel.to >= hit.nodeEnd) { + visit = { + nodeStart: hit.nodeStart, + nodeEnd: hit.nodeEnd, + maxPenetration: pen, + included: true, + entrySide: sel.anchor <= hit.nodeStart ? "above" : "below", + savedAnchor: sel.anchor, + dom: hit.dom + }; + } + return; + } + + visit = { + nodeStart: hit.nodeStart, + nodeEnd: hit.nodeEnd, + maxPenetration: pen, + included: false, + entrySide, + savedAnchor: sel.anchor, + dom: hit.dom + }; + } else { + visit.maxPenetration = Math.max(visit.maxPenetration, pen); + } + + // Once truly entered, merge immediately; re-merge each frame to counteract PM mouseDown.move rewriting + const threshold = effectivePenetrationThreshold(rect); + if (visit && visit.maxPenetration >= threshold) { + includeAtomInDragSelection(view, visit.nodeStart, visit.nodeEnd); + visit.included = true; + } + return; + } + + // Pointer has left the atom + if (visit) { + leaveCurrentVisit(view, clientX, clientY); + } + }; + + return [ + new Plugin({ + key: selectAcrossAtomsKey, + props: { + handleClick(view, _pos, event) { + return selectAtomOnClick(view, event); + }, + handleDOMEvents: { + mousedown(view, event) { + // Right-click within selection: preventDefault stops browser from collapsing ::selection; + // return true prevents PM from collapsing atom to NodeSelection + if (shouldPreserveSelectionOnRightClick(view, event)) { + const sel = view.state.selection; + preservedOnRightClick = { anchor: sel.anchor, head: sel.head }; + event.preventDefault(); + scheduleRestorePreserved(view); + return true; + } + preservedOnRightClick = null; + if (event.button === 0) { + dragging = true; + mouseDownX = event.clientX; + mouseDownY = event.clientY; + resetVisit(); + } + return false; + }, + mouseup(view, event) { + if (event.button === 2 && preservedOnRightClick) { + restorePreservedSelection(view, preservedOnRightClick); + scheduleRestorePreserved(view); + // Right-click flow ended; system context menu may not appear due to preventDefault + preservedOnRightClick = null; + } + if (dragging && visit) { + // Mouse released on atom: intent is ambiguous, keep the merged state + // (don't do same-side exclusion since we never left) + const threshold = effectivePenetrationThreshold(visit.dom.getBoundingClientRect()); + if (!visit.included && visit.maxPenetration >= threshold) { + includeAtomInDragSelection(view, visit.nodeStart, visit.nodeEnd); + } + } + // If PM skips handleClick due to minor movement (allowDefault=true), supplement with click-select here + if ( + dragging && + event.button === 0 && + !visit && + Math.abs(event.clientX - mouseDownX) <= 4 && + Math.abs(event.clientY - mouseDownY) <= 4 + ) { + selectAtomOnClick(view, event); + } + dragging = false; + resetVisit(); + return false; + }, + contextmenu(view, event) { + // Some browsers still fire contextmenu; restore the selection then allow the menu + if (!preservedOnRightClick) return false; + restorePreservedSelection(view, preservedOnRightClick); + scheduleRestorePreserved(view); + const snap = preservedOnRightClick; + queueMicrotask(() => { + if (preservedOnRightClick === snap) { + restorePreservedSelection(view, snap); + preservedOnRightClick = null; + } + }); + void event; + return false; + }, + mousemove(view, event) { + if (!dragging || event.buttons !== 1 || !view.editable) return false; + trackAtomUnderPointer(view, event.clientX, event.clientY); + return false; + } + }, + decorations(state) { + const sel = state.selection; + if (sel.empty) return null; + + const decos: Decoration[] = []; + + if (sel instanceof NodeSelection) { + if (isAcrossSelectableNode(sel.node)) { + decos.push( + Decoration.node(sel.from, sel.to, { + class: "ProseMirror-selectednode" + }) + ); + } + } else { + state.doc.nodesBetween(sel.from, sel.to, (node, pos) => { + if (!isAcrossSelectableNode(node)) return; + if (sel.from <= pos && sel.to >= pos + node.nodeSize) { + decos.push( + Decoration.node(pos, pos + node.nodeSize, { + class: "ProseMirror-selectednode" + }) + ); + } + }); + } + + return decos.length ? DecorationSet.create(state.doc, decos) : null; + } + }, + view(editorView) { + const onMove = (event: MouseEvent) => { + if (!dragging || event.buttons !== 1 || !editorView.editable) return; + // Re-merge after PM has processed mousemove (which may have pulled the selection outside the atom) + trackAtomUnderPointer(editorView, event.clientX, event.clientY); + requestAnimationFrame(() => { + if (!dragging || event.buttons !== 1) return; + trackAtomUnderPointer(editorView, event.clientX, event.clientY); + }); + }; + const onUp = (event: MouseEvent) => { + if (event.button === 2 && preservedOnRightClick) { + restorePreservedSelection(editorView, preservedOnRightClick); + scheduleRestorePreserved(editorView); + preservedOnRightClick = null; + } + if (dragging && visit) { + const threshold = effectivePenetrationThreshold(visit.dom.getBoundingClientRect()); + if (!visit.included && visit.maxPenetration >= threshold) { + includeAtomInDragSelection(editorView, visit.nodeStart, visit.nodeEnd); + } + } + if ( + dragging && + event.button === 0 && + !visit && + Math.abs(event.clientX - mouseDownX) <= 4 && + Math.abs(event.clientY - mouseDownY) <= 4 + ) { + selectAtomOnClick(editorView, event); + } + dragging = false; + resetVisit(); + }; + window.addEventListener("mousemove", onMove); + window.addEventListener("mouseup", onUp); + return { + destroy() { + window.removeEventListener("mousemove", onMove); + window.removeEventListener("mouseup", onUp); + if (restoreRaf) cancelAnimationFrame(restoreRaf); + } + }; + } + }) + ]; + } +}); diff --git a/src/lib/components/edra/tiptap/extensions/audio/index.ts b/src/lib/components/edra/tiptap/extensions/audio/index.ts new file mode 100644 index 000000000..ca041bd2c --- /dev/null +++ b/src/lib/components/edra/tiptap/extensions/audio/index.ts @@ -0,0 +1,78 @@ +import { Node, nodeInputRule } from "@tiptap/core"; + +export interface AudioOptions { + HTMLAttributes: Record; +} + +declare module "@tiptap/core" { + interface Commands { + audio: { + /** Set a audio node */ + setAudio: ({ src }: { src: string }) => ReturnType; + /** Remove a audio */ + removeAudio: () => ReturnType; + }; + } +} + +const AUDIO_INPUT_REGEX = /!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\)/; + +export const Audio = Node.create({ + name: "audio", + group: "block", + draggable: true, + isolating: true, + atom: true, + addOptions() { + return { + HTMLAttributes: {} + }; + }, + addAttributes() { + return { + src: { + default: null, + parseHTML: (el) => (el as HTMLSpanElement).getAttribute("src"), + renderHTML: (attrs) => ({ src: attrs.src }) + } + }; + }, + parseHTML() { + return [ + { + tag: "audio", + getAttrs: (el) => ({ src: (el as HTMLAudioElement).getAttribute("src") }) + } + ]; + }, + + renderHTML({ HTMLAttributes }) { + return ["audio", { controls: "true", style: "width: 100%;", ...HTMLAttributes }, ["source", HTMLAttributes]]; + }, + addCommands() { + return { + setAudio: + ({ src }: { src: string }) => + ({ commands }) => + commands.insertContent(`