,
+) => void;
+
+export interface BaseComponentProps> {
+ props: P;
+ children?: VNode[];
+ emit: (event: string) => void | Promise;
+ on: (event: string) => EventHandle;
+ bindings?: Record;
+ loading?: boolean;
+}
+
+export interface ComponentContext<
+ C extends Catalog,
+ K extends keyof InferCatalogComponents,
+> extends BaseComponentProps> {}
+
+export type ComponentFn<
+ C extends Catalog,
+ K extends keyof InferCatalogComponents,
+> = (ctx: ComponentContext) => VNode | VNode[] | string | null;
+
+export type Components = {
+ [K in keyof InferCatalogComponents]: ComponentFn;
+};
+
+export type ActionFn<
+ C extends Catalog,
+ K extends keyof InferCatalogActions,
+> = (
+ params: InferActionParams | undefined,
+ setState: SetState,
+ state: StateModel,
+) => Promise;
+
+export type Actions = {
+ [K in keyof InferCatalogActions]: ActionFn;
+};
+
+export type CatalogHasActions = [
+ InferCatalogActions,
+] extends [never]
+ ? false
+ : [keyof InferCatalogActions] extends [never]
+ ? false
+ : true;
diff --git a/packages/angular/src/hooks.ts b/packages/angular/src/hooks.ts
new file mode 100644
index 00000000..f0fe0f2f
--- /dev/null
+++ b/packages/angular/src/hooks.ts
@@ -0,0 +1,585 @@
+import {
+ DestroyRef,
+ Signal,
+ computed,
+ inject,
+ isSignal,
+ signal,
+} from "@angular/core";
+import type {
+ FlatElement,
+ JsonPatch,
+ Spec,
+ SpecDataPart,
+ UIElement,
+} from "@json-render/core";
+import {
+ SPEC_DATA_PART_TYPE,
+ addByPath,
+ applySpecPatch,
+ getByPath,
+ nestedToFlat,
+ removeByPath,
+ setByPath,
+} from "@json-render/core";
+import { useStateStore } from "./providers/state";
+
+export interface TokenUsage {
+ promptTokens: number;
+ completionTokens: number;
+ totalTokens: number;
+}
+
+type ParsedLine =
+ | { type: "patch"; patch: JsonPatch }
+ | { type: "usage"; usage: TokenUsage }
+ | null;
+
+function parseLine(line: string): ParsedLine {
+ try {
+ const trimmed = line.trim();
+ if (!trimmed || trimmed.startsWith("//")) return null;
+ const parsed = JSON.parse(trimmed);
+ if (parsed.__meta === "usage") {
+ return {
+ type: "usage",
+ usage: {
+ promptTokens: parsed.promptTokens ?? 0,
+ completionTokens: parsed.completionTokens ?? 0,
+ totalTokens: parsed.totalTokens ?? 0,
+ },
+ };
+ }
+ return { type: "patch", patch: parsed as JsonPatch };
+ } catch {
+ return null;
+ }
+}
+
+function setSpecValue(newSpec: Spec, path: string, value: unknown): void {
+ if (path === "/root") {
+ newSpec.root = value as string;
+ return;
+ }
+ if (path === "/state") {
+ newSpec.state = value as Record;
+ return;
+ }
+ if (path.startsWith("/state/")) {
+ if (!newSpec.state) newSpec.state = {};
+ setByPath(
+ newSpec.state as Record,
+ path.slice("/state".length),
+ value,
+ );
+ return;
+ }
+ if (path.startsWith("/elements/")) {
+ const pathParts = path.slice("/elements/".length).split("/");
+ const elementKey = pathParts[0];
+ if (!elementKey) return;
+ if (pathParts.length === 1) {
+ newSpec.elements[elementKey] = value as UIElement;
+ return;
+ }
+ const element = newSpec.elements[elementKey];
+ if (!element) return;
+ const propPath = `/${pathParts.slice(1).join("/")}`;
+ const nextElement = { ...element };
+ setByPath(
+ nextElement as unknown as Record,
+ propPath,
+ value,
+ );
+ newSpec.elements[elementKey] = nextElement;
+ }
+}
+
+function removeSpecValue(newSpec: Spec, path: string): void {
+ if (path === "/state") {
+ delete newSpec.state;
+ return;
+ }
+ if (path.startsWith("/state/") && newSpec.state) {
+ removeByPath(
+ newSpec.state as Record,
+ path.slice("/state".length),
+ );
+ return;
+ }
+ if (!path.startsWith("/elements/")) return;
+ const pathParts = path.slice("/elements/".length).split("/");
+ const elementKey = pathParts[0];
+ if (!elementKey) return;
+ if (pathParts.length === 1) {
+ const { [elementKey]: _removed, ...rest } = newSpec.elements;
+ newSpec.elements = rest;
+ return;
+ }
+ const element = newSpec.elements[elementKey];
+ if (!element) return;
+ const propPath = `/${pathParts.slice(1).join("/")}`;
+ const nextElement = { ...element };
+ removeByPath(nextElement as unknown as Record, propPath);
+ newSpec.elements[elementKey] = nextElement;
+}
+
+function getSpecValue(spec: Spec, path: string): unknown {
+ if (path === "/root") return spec.root;
+ if (path === "/state") return spec.state;
+ if (path.startsWith("/state/") && spec.state) {
+ return getByPath(
+ spec.state as Record,
+ path.slice("/state".length),
+ );
+ }
+ return getByPath(spec as unknown as Record, path);
+}
+
+function applyPatch(spec: Spec, patch: JsonPatch): Spec {
+ const nextSpec: Spec = {
+ ...spec,
+ elements: { ...spec.elements },
+ ...(spec.state ? { state: { ...spec.state } } : {}),
+ };
+
+ switch (patch.op) {
+ case "add":
+ case "replace":
+ setSpecValue(nextSpec, patch.path, patch.value);
+ break;
+ case "remove":
+ removeSpecValue(nextSpec, patch.path);
+ break;
+ case "move": {
+ if (!patch.from) break;
+ const moved = getSpecValue(nextSpec, patch.from);
+ removeSpecValue(nextSpec, patch.from);
+ setSpecValue(nextSpec, patch.path, moved);
+ break;
+ }
+ case "copy": {
+ if (!patch.from) break;
+ setSpecValue(nextSpec, patch.path, getSpecValue(nextSpec, patch.from));
+ break;
+ }
+ case "test":
+ break;
+ }
+
+ return nextSpec;
+}
+
+export interface UseUIStreamOptions {
+ api: string;
+ onComplete?: (spec: Spec) => void;
+ onError?: (error: Error) => void;
+}
+
+export interface UseUIStreamReturn {
+ spec: Signal;
+ isStreaming: Signal;
+ error: Signal;
+ usage: Signal;
+ rawLines: Signal;
+ send: (prompt: string, context?: Record) => Promise;
+ clear: () => void;
+}
+
+export function useUIStream({
+ api,
+ onComplete,
+ onError,
+}: UseUIStreamOptions): UseUIStreamReturn {
+ const destroyRef = inject(DestroyRef, { optional: true });
+ const spec = signal(null);
+ const isStreaming = signal(false);
+ const error = signal(null);
+ const usage = signal(null);
+ const rawLines = signal([]);
+
+ let abortController: AbortController | null = null;
+
+ const clear = (): void => {
+ spec.set(null);
+ error.set(null);
+ usage.set(null);
+ rawLines.set([]);
+ };
+
+ const send = async (
+ prompt: string,
+ context?: Record,
+ ): Promise => {
+ abortController?.abort();
+ abortController = new AbortController();
+ isStreaming.set(true);
+ error.set(null);
+ usage.set(null);
+ rawLines.set([]);
+
+ const previousSpec = context?.previousSpec as Spec | undefined;
+ let currentSpec: Spec =
+ previousSpec && previousSpec.root
+ ? {
+ ...previousSpec,
+ elements: { ...previousSpec.elements },
+ }
+ : { root: "", elements: {} };
+ spec.set(currentSpec);
+
+ try {
+ const response = await fetch(api, {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ prompt, context, currentSpec }),
+ signal: abortController.signal,
+ });
+
+ if (!response.ok) {
+ throw new Error(`HTTP error: ${response.status}`);
+ }
+
+ const reader = response.body?.getReader();
+ if (!reader) throw new Error("No response body");
+
+ const decoder = new TextDecoder();
+ let buffer = "";
+
+ while (true) {
+ const { done, value } = await reader.read();
+ if (done) break;
+ buffer += decoder.decode(value, { stream: true });
+ const lines = buffer.split("\n");
+ buffer = lines.pop() ?? "";
+ for (const line of lines) {
+ const trimmed = line.trim();
+ if (!trimmed) continue;
+ const parsed = parseLine(trimmed);
+ if (!parsed) continue;
+ if (parsed.type === "usage") {
+ usage.set(parsed.usage);
+ } else {
+ rawLines.update((value) => [...value, trimmed]);
+ currentSpec = applyPatch(currentSpec, parsed.patch);
+ spec.set({ ...currentSpec });
+ }
+ }
+ }
+
+ if (buffer.trim()) {
+ const parsed = parseLine(buffer.trim());
+ if (parsed?.type === "usage") {
+ usage.set(parsed.usage);
+ } else if (parsed?.type === "patch") {
+ rawLines.update((value) => [...value, buffer.trim()]);
+ currentSpec = applyPatch(currentSpec, parsed.patch);
+ spec.set({ ...currentSpec });
+ }
+ }
+
+ onComplete?.(currentSpec);
+ } catch (err) {
+ if ((err as Error).name === "AbortError") return;
+ const resolved = err instanceof Error ? err : new Error(String(err));
+ error.set(resolved);
+ onError?.(resolved);
+ } finally {
+ isStreaming.set(false);
+ }
+ };
+
+ destroyRef?.onDestroy(() => {
+ abortController?.abort();
+ });
+
+ return { spec, isStreaming, error, usage, rawLines, send, clear };
+}
+
+export function flatToTree(elements: FlatElement[]): Spec {
+ const elementMap: Record = {};
+ let root = "";
+
+ for (const element of elements) {
+ elementMap[element.key] = {
+ type: element.type,
+ props: element.props,
+ children: [],
+ visible: element.visible,
+ };
+ }
+
+ for (const element of elements) {
+ if (element.parentKey) {
+ const parent = elementMap[element.parentKey];
+ if (parent) {
+ parent.children ??= [];
+ parent.children.push(element.key);
+ }
+ } else {
+ root = element.key;
+ }
+ }
+
+ return { root, elements: elementMap };
+}
+
+export function useBoundProp(
+ propValue: T | undefined,
+ bindingPath: string | undefined,
+): [T | undefined, (value: T) => void] {
+ const { set } = useStateStore();
+ return [propValue, (value: T) => bindingPath && set(bindingPath, value)];
+}
+
+export interface DataPart {
+ type: string;
+ text?: string;
+ data?: unknown;
+}
+
+function isSpecDataPart(data: unknown): data is SpecDataPart {
+ if (typeof data !== "object" || data === null) return false;
+ const obj = data as Record;
+ switch (obj.type) {
+ case "patch":
+ return typeof obj.patch === "object" && obj.patch !== null;
+ case "flat":
+ case "nested":
+ return typeof obj.spec === "object" && obj.spec !== null;
+ default:
+ return false;
+ }
+}
+
+export function buildSpecFromParts(parts: DataPart[]): Spec | null {
+ const spec: Spec = { root: "", elements: {} };
+ let hasSpec = false;
+
+ for (const part of parts) {
+ if (part.type !== SPEC_DATA_PART_TYPE || !isSpecDataPart(part.data))
+ continue;
+ const payload = part.data;
+ if (payload.type === "patch") {
+ hasSpec = true;
+ applySpecPatch(spec, payload.patch);
+ } else if (payload.type === "flat") {
+ hasSpec = true;
+ Object.assign(spec, payload.spec);
+ } else if (payload.type === "nested") {
+ hasSpec = true;
+ Object.assign(spec, nestedToFlat(payload.spec));
+ }
+ }
+
+ return hasSpec ? spec : null;
+}
+
+export function getTextFromParts(parts: DataPart[]): string {
+ return parts
+ .filter(
+ (part): part is DataPart & { text: string } =>
+ part.type === "text" && typeof part.text === "string",
+ )
+ .map((part) => part.text.trim())
+ .filter(Boolean)
+ .join("\n\n");
+}
+
+export function useJsonRenderMessage(parts: DataPart[] | Signal): {
+ spec: Signal;
+ text: Signal;
+ hasSpec: Signal;
+} {
+ const partsSignal = isSignal(parts) ? parts : signal(parts);
+ const spec = computed(() => buildSpecFromParts(partsSignal()));
+ const text = computed(() => getTextFromParts(partsSignal()));
+ const hasSpec = computed(
+ () => spec() !== null && Object.keys(spec()?.elements ?? {}).length > 0,
+ );
+ return { spec, text, hasSpec };
+}
+
+export interface ChatMessage {
+ id: string;
+ role: "user" | "assistant";
+ text: string;
+ spec: Spec | null;
+}
+
+export interface UseChatUIOptions {
+ api: string;
+ onComplete?: (message: ChatMessage) => void;
+ onError?: (error: Error) => void;
+}
+
+export interface UseChatUIReturn {
+ messages: Signal;
+ isStreaming: Signal;
+ error: Signal;
+ send: (text: string) => Promise;
+ clear: () => void;
+}
+
+let chatMessageIdCounter = 0;
+
+function generateChatId(): string {
+ if (
+ typeof crypto !== "undefined" &&
+ typeof crypto.randomUUID === "function"
+ ) {
+ return crypto.randomUUID();
+ }
+ chatMessageIdCounter += 1;
+ return `msg-${Date.now()}-${chatMessageIdCounter}`;
+}
+
+export function useChatUI({
+ api,
+ onComplete,
+ onError,
+}: UseChatUIOptions): UseChatUIReturn {
+ const destroyRef = inject(DestroyRef, { optional: true });
+ const messages = signal([]);
+ const isStreaming = signal(false);
+ const error = signal(null);
+
+ let abortController: AbortController | null = null;
+
+ const clear = (): void => {
+ messages.set([]);
+ error.set(null);
+ };
+
+ const send = async (text: string): Promise => {
+ if (!text.trim()) return;
+
+ abortController?.abort();
+ abortController = new AbortController();
+
+ const userMessage: ChatMessage = {
+ id: generateChatId(),
+ role: "user",
+ text: text.trim(),
+ spec: null,
+ };
+ const assistantMessage: ChatMessage = {
+ id: generateChatId(),
+ role: "assistant",
+ text: "",
+ spec: null,
+ };
+
+ isStreaming.set(true);
+ error.set(null);
+
+ const history = messages().map((message) => ({
+ role: message.role,
+ content: message.text,
+ }));
+
+ messages.update((value) => [...value, userMessage, assistantMessage]);
+
+ try {
+ const response = await fetch(api, {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ messages: history }),
+ signal: abortController.signal,
+ });
+
+ if (!response.ok) {
+ throw new Error(`HTTP error: ${response.status}`);
+ }
+
+ const reader = response.body?.getReader();
+ if (!reader) throw new Error("No response body");
+
+ const decoder = new TextDecoder();
+ let buffer = "";
+ let textBuffer = "";
+ let currentSpec: Spec = { root: "", elements: {} };
+
+ const updateAssistant = (): void => {
+ const hasCurrentSpec =
+ currentSpec.root !== "" ||
+ Object.keys(currentSpec.elements).length > 0;
+ const resolvedSpec = hasCurrentSpec
+ ? { ...currentSpec, elements: { ...currentSpec.elements } }
+ : null;
+
+ messages.update((value) =>
+ value.map((message) => {
+ if (message.id !== assistantMessage.id) {
+ return message;
+ }
+
+ return {
+ ...message,
+ text: textBuffer.trim(),
+ spec: resolvedSpec,
+ };
+ }),
+ );
+ };
+
+ while (true) {
+ const { done, value } = await reader.read();
+ if (done) break;
+
+ buffer += decoder.decode(value, { stream: true });
+ const lines = buffer.split("\n");
+ buffer = lines.pop() ?? "";
+
+ for (const line of lines) {
+ const trimmed = line.trim();
+ if (!trimmed) continue;
+ if (trimmed.startsWith("{")) {
+ try {
+ const parsed = JSON.parse(trimmed) as SpecDataPart | JsonPatch;
+ if ("type" in parsed && parsed.type === "patch") {
+ currentSpec = applyPatch(currentSpec, parsed.patch);
+ } else if ("type" in parsed && parsed.type === "flat") {
+ currentSpec = parsed.spec;
+ } else if ("type" in parsed && parsed.type === "nested") {
+ currentSpec = nestedToFlat(parsed.spec);
+ } else if ("op" in parsed) {
+ currentSpec = applyPatch(currentSpec, parsed);
+ } else {
+ textBuffer += `${trimmed}\n`;
+ }
+ } catch {
+ textBuffer += `${line}\n`;
+ }
+ } else {
+ textBuffer += `${line}\n`;
+ }
+ updateAssistant();
+ }
+ }
+
+ if (buffer.trim()) {
+ textBuffer += buffer.trim();
+ updateAssistant();
+ }
+
+ const finalMessage =
+ messages().find((message) => message.id === assistantMessage.id) ??
+ assistantMessage;
+ onComplete?.(finalMessage);
+ } catch (err) {
+ if ((err as Error).name === "AbortError") return;
+ const resolved = err instanceof Error ? err : new Error(String(err));
+ error.set(resolved);
+ onError?.(resolved);
+ } finally {
+ isStreaming.set(false);
+ }
+ };
+
+ destroyRef?.onDestroy(() => {
+ abortController?.abort();
+ });
+
+ return { messages, isStreaming, error, send, clear };
+}
diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts
new file mode 100644
index 00000000..2c3788ec
--- /dev/null
+++ b/packages/angular/src/index.ts
@@ -0,0 +1,103 @@
+export {
+ StateProvider,
+ useStateStore,
+ useStateValue,
+ useStateBinding,
+ type StateContextValue,
+ type StateProviderProps,
+} from "./providers/state";
+
+export {
+ VisibilityProvider,
+ useVisibility,
+ useIsVisible,
+ type VisibilityContextValue,
+} from "./providers/visibility";
+
+export {
+ ActionProvider,
+ useActions,
+ useAction,
+ ConfirmDialog,
+ type ActionContextValue,
+ type ActionProviderProps,
+ type PendingConfirmation,
+} from "./providers/actions";
+
+export {
+ ValidationProvider,
+ useOptionalValidation,
+ useValidation,
+ useFieldValidation,
+ type ValidationContextValue,
+ type ValidationProviderProps,
+ type FieldValidationState,
+} from "./providers/validation";
+
+export {
+ RepeatScopeProvider,
+ useRepeatScope,
+ type RepeatScopeValue,
+} from "./providers/repeat-scope";
+
+export { schema, type AngularSchema, type AngularSpec } from "./schema";
+
+export type { Spec, StateStore, ComputedFunction } from "@json-render/core";
+export { createStateStore } from "@json-render/core";
+
+export type {
+ EventHandle,
+ BaseComponentProps,
+ SetState,
+ StateModel,
+ ComponentContext,
+ ComponentFn,
+ Components,
+ ActionFn,
+ Actions,
+} from "./catalog-types";
+
+export {
+ useUIStream,
+ useChatUI,
+ useBoundProp,
+ flatToTree,
+ buildSpecFromParts,
+ getTextFromParts,
+ useJsonRenderMessage,
+ type UseUIStreamOptions,
+ type UseUIStreamReturn,
+ type UseChatUIOptions,
+ type UseChatUIReturn,
+ type ChatMessage,
+ type DataPart,
+ type TokenUsage,
+} from "./hooks";
+
+export {
+ defineRegistry,
+ createRenderer,
+ Renderer,
+ JSONUIProvider,
+ type DefineRegistryResult,
+ type CreateRendererProps,
+ type ComponentMap,
+ type ComponentRenderProps,
+ type ComponentRegistry,
+ type ComponentRenderer,
+ type RendererProps,
+ type JSONUIProviderProps,
+} from "./renderer";
+
+export {
+ component,
+ element,
+ fragment,
+ normalizeVNodeArray,
+ text,
+ type VNode,
+ type VNodeComponent,
+ type VNodeElement,
+ type VNodeFragment,
+ type VNodeText,
+} from "./vnode";
diff --git a/packages/angular/src/providers/actions.test.ts b/packages/angular/src/providers/actions.test.ts
new file mode 100644
index 00000000..6a875622
--- /dev/null
+++ b/packages/angular/src/providers/actions.test.ts
@@ -0,0 +1,111 @@
+import "../testing/setup";
+
+import { Component } from "@angular/core";
+import { TestBed } from "@angular/core/testing";
+import { By } from "@angular/platform-browser";
+import { describe, expect, it } from "vitest";
+import { type ActionBinding } from "@json-render/core";
+import { ActionProvider, useActions } from "./actions";
+import { StateProvider, useStateStore } from "./state";
+import { ValidationProvider, useValidation } from "./validation";
+
+@Component({
+ selector: "json-render-action-consumer",
+ standalone: true,
+ template: "",
+})
+class ActionConsumerComponent {
+ readonly actions = useActions();
+ readonly state = useStateStore();
+ readonly validation = useValidation();
+
+ run(binding: ActionBinding): Promise {
+ return this.actions.execute(binding);
+ }
+}
+
+@Component({
+ standalone: true,
+ imports: [
+ StateProvider,
+ ValidationProvider,
+ ActionProvider,
+ ActionConsumerComponent,
+ ],
+ template: `
+
+
+
+
+
+
+
+ `,
+})
+class ActionHostComponent {
+ initialState = {
+ count: 0,
+ todos: ["a"],
+ form: {
+ email: "",
+ },
+ };
+
+ customCalls: Array | undefined> = [];
+
+ readonly handlers = {
+ increment: async (params?: Record) => {
+ this.customCalls.push(params);
+ },
+ };
+}
+
+describe("ActionProvider", () => {
+ it("executes built-in state actions and custom handlers", async () => {
+ await TestBed.configureTestingModule({
+ imports: [ActionHostComponent],
+ }).compileComponents();
+
+ const fixture = TestBed.createComponent(ActionHostComponent);
+ fixture.detectChanges();
+
+ const consumer = fixture.debugElement.query(
+ By.directive(ActionConsumerComponent),
+ ).componentInstance as ActionConsumerComponent;
+
+ await consumer.run({
+ action: "setState",
+ params: {
+ statePath: "/count",
+ value: 2,
+ },
+ });
+
+ await consumer.run({
+ action: "pushState",
+ params: {
+ statePath: "/todos",
+ value: "b",
+ },
+ });
+
+ await consumer.run({
+ action: "removeState",
+ params: {
+ statePath: "/todos",
+ index: 0,
+ },
+ });
+
+ await consumer.run({
+ action: "increment",
+ params: {
+ amount: 3,
+ },
+ });
+
+ expect(consumer.state.get("/count")).toBe(2);
+ expect(consumer.state.get("/todos")).toEqual(["b"]);
+ expect(fixture.componentInstance.customCalls).toEqual([{ amount: 3 }]);
+ });
+});
diff --git a/packages/angular/src/providers/actions.ts b/packages/angular/src/providers/actions.ts
new file mode 100644
index 00000000..513c2681
--- /dev/null
+++ b/packages/angular/src/providers/actions.ts
@@ -0,0 +1,358 @@
+import { CommonModule } from "@angular/common";
+import {
+ Component,
+ Injectable,
+ InjectionToken,
+ Input,
+ Signal,
+ computed,
+ inject,
+ signal,
+} from "@angular/core";
+import {
+ executeAction as executeResolvedAction,
+ resolveAction,
+ type ActionBinding,
+ type ActionConfirm,
+ type ActionHandler,
+ type ResolvedAction,
+} from "@json-render/core";
+import { useStateStore } from "./state";
+import { useOptionalValidation } from "./validation";
+
+let idCounter = 0;
+
+export function generateUniqueId(): string {
+ idCounter += 1;
+ return `${Date.now()}-${idCounter}`;
+}
+
+export function deepResolveValue(
+ value: unknown,
+ get: (path: string) => unknown,
+): unknown {
+ if (value === null || value === undefined) return value;
+ if (value === "$id") return generateUniqueId();
+
+ if (Array.isArray(value)) {
+ return value.map((entry) => deepResolveValue(entry, get));
+ }
+
+ if (typeof value === "object") {
+ const obj = value as Record;
+ const keys = Object.keys(obj);
+ if (keys.length === 1 && typeof obj.$state === "string") {
+ return get(obj.$state);
+ }
+ if (keys.length === 1 && "$id" in obj) {
+ return generateUniqueId();
+ }
+ const resolved: Record = {};
+ for (const [key, entry] of Object.entries(obj)) {
+ resolved[key] = deepResolveValue(entry, get);
+ }
+ return resolved;
+ }
+
+ return value;
+}
+
+export interface PendingConfirmation {
+ action: ResolvedAction;
+ handler: ActionHandler;
+ confirm: () => void;
+ cancel: () => void;
+}
+
+export interface ActionContextValue {
+ handlers: Signal>;
+ loadingActions: Signal>;
+ pendingConfirmation: Signal;
+ execute: (binding: ActionBinding) => Promise;
+ confirm: () => void;
+ cancel: () => void;
+ registerHandler: (name: string, handler: ActionHandler) => void;
+}
+
+export interface ActionProviderProps {
+ handlers?: Record;
+ navigate?: (path: string) => void;
+}
+
+export const ACTIONS_CONTEXT = new InjectionToken(
+ "json-render:actions",
+);
+
+@Injectable()
+class ActionContextService implements ActionContextValue {
+ private readonly state = useStateStore();
+ private readonly validation = useOptionalValidation();
+
+ readonly handlers = signal>({});
+ readonly loadingActions = signal>(new Set());
+ readonly pendingConfirmation = signal(null);
+
+ private navigate?: (path: string) => void;
+
+ configure({ handlers, navigate }: ActionProviderProps = {}): void {
+ this.handlers.set(handlers ?? {});
+ this.navigate = navigate;
+ }
+
+ registerHandler(name: string, handler: ActionHandler): void {
+ this.handlers.update((value) => ({ ...value, [name]: handler }));
+ }
+
+ async execute(binding: ActionBinding): Promise {
+ const resolved = resolveAction(binding, this.state.getSnapshot());
+
+ if (resolved.action === "setState" && resolved.params) {
+ const statePath = resolved.params.statePath as string;
+ if (statePath) {
+ this.state.set(statePath, resolved.params.value);
+ }
+ return;
+ }
+
+ if (resolved.action === "pushState" && resolved.params) {
+ const statePath = resolved.params.statePath as string;
+ if (statePath) {
+ const rawValue = resolved.params.value;
+ const resolvedValue = deepResolveValue(rawValue, this.state.get);
+ const current =
+ (this.state.get(statePath) as unknown[] | undefined) ?? [];
+ this.state.set(statePath, [...current, resolvedValue]);
+ const clearStatePath = resolved.params.clearStatePath as
+ | string
+ | undefined;
+ if (clearStatePath) {
+ this.state.set(clearStatePath, "");
+ }
+ }
+ return;
+ }
+
+ if (resolved.action === "removeState" && resolved.params) {
+ const statePath = resolved.params.statePath as string;
+ const index = resolved.params.index as number;
+ const current =
+ (this.state.get(statePath) as unknown[] | undefined) ?? [];
+ if (statePath && Number.isInteger(index)) {
+ this.state.set(
+ statePath,
+ current.filter((_value, currentIndex) => currentIndex !== index),
+ );
+ }
+ return;
+ }
+
+ if (resolved.action === "validateForm") {
+ const validation = this.validation;
+ if (!validation) {
+ console.warn(
+ "validateForm action was dispatched but no ValidationProvider is connected.",
+ );
+ return;
+ }
+ const valid = validation.validateAll();
+ const errors: Record = {};
+ for (const [path, fieldState] of Object.entries(
+ validation.fieldStates(),
+ )) {
+ if (fieldState.result && !fieldState.result.valid) {
+ errors[path] = fieldState.result.errors;
+ }
+ }
+ const statePath =
+ (resolved.params?.statePath as string) || "/formValidation";
+ this.state.set(statePath, { valid, errors });
+ return;
+ }
+
+ if (resolved.action === "push" && resolved.params) {
+ const screen = resolved.params.screen as string;
+ if (screen) {
+ const currentScreen = this.state.get("/currentScreen") as
+ | string
+ | undefined;
+ const navStack =
+ (this.state.get("/navStack") as string[] | undefined) ?? [];
+ this.state.set("/navStack", [...navStack, currentScreen ?? ""]);
+ this.state.set("/currentScreen", screen);
+ }
+ return;
+ }
+
+ if (resolved.action === "pop") {
+ const navStack =
+ (this.state.get("/navStack") as string[] | undefined) ?? [];
+ if (navStack.length > 0) {
+ const previousScreen = navStack[navStack.length - 1];
+ this.state.set("/navStack", navStack.slice(0, -1));
+ this.state.set("/currentScreen", previousScreen);
+ }
+ return;
+ }
+
+ const handler = this.handlers()[resolved.action];
+ if (!handler) {
+ console.warn(`No handler registered for action: ${resolved.action}`);
+ return;
+ }
+
+ if (resolved.confirm) {
+ const confirmed = await this.requestConfirmation(
+ resolved.confirm,
+ handler,
+ resolved,
+ );
+ if (!confirmed) return;
+ }
+
+ await this.runAction(resolved, handler);
+ }
+
+ confirm(): void {
+ this.pendingConfirmation()?.confirm();
+ }
+
+ cancel(): void {
+ this.pendingConfirmation()?.cancel();
+ }
+
+ private async requestConfirmation(
+ confirm: ActionConfirm,
+ handler: ActionHandler,
+ action: ResolvedAction,
+ ): Promise {
+ if (typeof window !== "undefined" && typeof window.confirm === "function") {
+ const title = confirm.title?.trim() ?? "";
+ const message = confirm.message?.trim() ?? "";
+ return window.confirm([title, message].filter(Boolean).join("\n\n"));
+ }
+
+ return await new Promise((resolve) => {
+ this.pendingConfirmation.set({
+ action,
+ handler,
+ confirm: () => {
+ this.pendingConfirmation.set(null);
+ resolve(true);
+ },
+ cancel: () => {
+ this.pendingConfirmation.set(null);
+ resolve(false);
+ },
+ });
+ });
+ }
+
+ private async runAction(
+ resolved: ResolvedAction,
+ handler: ActionHandler,
+ ): Promise {
+ this.loadingActions.update((value) => {
+ const next = new Set(value);
+ next.add(resolved.action);
+ return next;
+ });
+
+ try {
+ await executeResolvedAction({
+ action: resolved,
+ handler,
+ setState: this.state.set,
+ navigate: this.navigate,
+ executeAction: async (name) => {
+ await this.execute({ action: name });
+ },
+ });
+ } finally {
+ this.loadingActions.update((value) => {
+ const next = new Set(value);
+ next.delete(resolved.action);
+ return next;
+ });
+ }
+ }
+}
+
+@Component({
+ selector: "json-render-action-provider",
+ standalone: true,
+ template: ``,
+ providers: [
+ ActionContextService,
+ {
+ provide: ACTIONS_CONTEXT,
+ useExisting: ActionContextService,
+ },
+ ],
+})
+export class ActionProvider {
+ private readonly ctx = inject(ActionContextService);
+
+ @Input() handlers?: Record;
+ @Input() navigate?: (path: string) => void;
+
+ ngOnInit(): void {
+ this.ctx.configure({ handlers: this.handlers, navigate: this.navigate });
+ }
+
+ ngOnChanges(): void {
+ this.ctx.configure({ handlers: this.handlers, navigate: this.navigate });
+ }
+}
+
+@Component({
+ selector: "json-render-confirm-dialog",
+ standalone: true,
+ imports: [CommonModule],
+ template: `
+ @if (pending()) {
+
+
+ {{ pending()!.action.confirm?.title }}
+
+
+ {{ pending()!.action.confirm?.message }}
+
+
+
+
+
+
+ }
+ `,
+})
+export class ConfirmDialog {
+ private readonly actions = useActions();
+ readonly pending = computed(() => this.actions.pendingConfirmation());
+
+ confirm(): void {
+ this.actions.confirm();
+ }
+
+ cancel(): void {
+ this.actions.cancel();
+ }
+}
+
+export function useActions(): ActionContextValue {
+ return inject(ACTIONS_CONTEXT);
+}
+
+export function useAction(binding: ActionBinding): {
+ execute: () => Promise;
+ isLoading: Signal;
+} {
+ const ctx = useActions();
+ return {
+ execute: () => ctx.execute(binding),
+ isLoading: computed(() => ctx.loadingActions().has(binding.action)),
+ };
+}
diff --git a/packages/angular/src/providers/repeat-scope.ts b/packages/angular/src/providers/repeat-scope.ts
new file mode 100644
index 00000000..85b0c7b9
--- /dev/null
+++ b/packages/angular/src/providers/repeat-scope.ts
@@ -0,0 +1,70 @@
+import {
+ Component,
+ Injectable,
+ InjectionToken,
+ Input,
+ inject,
+} from "@angular/core";
+
+export interface RepeatScopeValue {
+ item: unknown;
+ index: number;
+ basePath: string;
+}
+
+export const REPEAT_SCOPE_CONTEXT = new InjectionToken(
+ "json-render:repeat-scope",
+);
+
+@Injectable()
+class RepeatScopeContextService implements RepeatScopeValue {
+ item: unknown = undefined;
+ index = 0;
+ basePath = "";
+
+ configure(value: RepeatScopeValue): void {
+ this.item = value.item;
+ this.index = value.index;
+ this.basePath = value.basePath;
+ }
+}
+
+@Component({
+ selector: "json-render-repeat-scope-provider",
+ standalone: true,
+ template: ``,
+ providers: [
+ RepeatScopeContextService,
+ {
+ provide: REPEAT_SCOPE_CONTEXT,
+ useExisting: RepeatScopeContextService,
+ },
+ ],
+})
+export class RepeatScopeProvider {
+ private readonly ctx = inject(RepeatScopeContextService);
+
+ @Input({ required: true }) item!: unknown;
+ @Input({ required: true }) index!: number;
+ @Input({ required: true }) basePath!: string;
+
+ ngOnInit(): void {
+ this.sync();
+ }
+
+ ngOnChanges(): void {
+ this.sync();
+ }
+
+ private sync(): void {
+ this.ctx.configure({
+ item: this.item,
+ index: this.index,
+ basePath: this.basePath,
+ });
+ }
+}
+
+export function useRepeatScope(): RepeatScopeValue | null {
+ return inject(REPEAT_SCOPE_CONTEXT, { optional: true }) ?? null;
+}
diff --git a/packages/angular/src/providers/state.test.ts b/packages/angular/src/providers/state.test.ts
new file mode 100644
index 00000000..b061f530
--- /dev/null
+++ b/packages/angular/src/providers/state.test.ts
@@ -0,0 +1,75 @@
+import "../testing/setup";
+
+import { Component, computed } from "@angular/core";
+import { TestBed } from "@angular/core/testing";
+import { By } from "@angular/platform-browser";
+import { describe, expect, it } from "vitest";
+import { StateProvider, useStateStore, useStateValue } from "./state";
+
+@Component({
+ selector: "json-render-state-consumer",
+ standalone: true,
+ template: `
+ {{ count() }}
+
+ `,
+})
+class StateConsumerComponent {
+ readonly store = useStateStore();
+ readonly count = useStateValue("/count");
+
+ increment(): void {
+ this.store.set("/count", ((this.count() ?? 0) as number) + 1);
+ }
+}
+
+@Component({
+ standalone: true,
+ imports: [StateProvider, StateConsumerComponent],
+ template: `
+
+
+
+ `,
+})
+class StateHostComponent {
+ initialState = { count: 1 };
+ changes: Array<{ path: string; value: unknown }> = [];
+
+ readonly onStateChange = (
+ changes: Array<{ path: string; value: unknown }>,
+ ) => {
+ this.changes = changes;
+ };
+}
+
+describe("StateProvider", () => {
+ it("exposes state and updates consumers reactively", async () => {
+ await TestBed.configureTestingModule({
+ imports: [StateHostComponent],
+ }).compileComponents();
+
+ const fixture = TestBed.createComponent(StateHostComponent);
+ fixture.detectChanges();
+
+ const count = () =>
+ fixture.nativeElement.querySelector(".count")?.textContent?.trim();
+
+ expect(count()).toBe("1");
+
+ const consumer = fixture.debugElement.query(
+ By.directive(StateConsumerComponent),
+ ).componentInstance as StateConsumerComponent;
+
+ consumer.increment();
+ fixture.detectChanges();
+
+ expect(count()).toBe("2");
+ expect(fixture.componentInstance.changes).toEqual([
+ { path: "/count", value: 2 },
+ ]);
+ });
+});
diff --git a/packages/angular/src/providers/state.ts b/packages/angular/src/providers/state.ts
new file mode 100644
index 00000000..6afcdfa0
--- /dev/null
+++ b/packages/angular/src/providers/state.ts
@@ -0,0 +1,192 @@
+import {
+ Component,
+ Injectable,
+ InjectionToken,
+ Input,
+ Signal,
+ computed,
+ inject,
+ signal,
+} from "@angular/core";
+import {
+ createStateStore,
+ getByPath,
+ type StateModel,
+ type StateStore,
+} from "@json-render/core";
+import { flattenToPointers } from "@json-render/core/store-utils";
+
+export interface StateContextValue {
+ state: Signal;
+ get: (path: string) => unknown;
+ set: (path: string, value: unknown) => void;
+ update: (updates: Record) => void;
+ getSnapshot: () => StateModel;
+}
+
+export interface StateProviderProps {
+ store?: StateStore;
+ initialState?: StateModel;
+ onStateChange?: (changes: Array<{ path: string; value: unknown }>) => void;
+}
+
+export const STATE_CONTEXT = new InjectionToken(
+ "json-render:state",
+);
+
+@Injectable()
+class StateContextService implements StateContextValue {
+ readonly state = signal({});
+
+ private activeStore: StateStore = createStateStore({});
+ private activeExternalStore?: StateStore;
+ private unsubscribe?: () => void;
+ private onStateChange?: StateProviderProps["onStateChange"];
+ private isControlled = false;
+ private previousInitialFlat: Record = {};
+
+ configure({
+ store,
+ initialState,
+ onStateChange,
+ }: StateProviderProps = {}): void {
+ this.onStateChange = onStateChange;
+ const nextControlled = Boolean(store);
+
+ if (
+ !this.unsubscribe ||
+ this.activeExternalStore !== store ||
+ this.isControlled !== nextControlled
+ ) {
+ this.unsubscribe?.();
+ this.isControlled = nextControlled;
+ this.activeExternalStore = store;
+ this.activeStore = store ?? createStateStore(initialState ?? {});
+ this.unsubscribe = this.activeStore.subscribe(() => {
+ this.state.set(this.activeStore.getSnapshot());
+ });
+ this.state.set(this.activeStore.getSnapshot());
+ }
+
+ if (!nextControlled) {
+ let nextFlat: Record = {};
+ if (initialState && Object.keys(initialState).length > 0) {
+ nextFlat = flattenToPointers(initialState);
+ }
+ const allKeys = new Set([
+ ...Object.keys(this.previousInitialFlat),
+ ...Object.keys(nextFlat),
+ ]);
+ const updates: Record = {};
+ for (const key of allKeys) {
+ if (this.previousInitialFlat[key] !== nextFlat[key]) {
+ updates[key] = key in nextFlat ? nextFlat[key] : undefined;
+ }
+ }
+ this.previousInitialFlat = nextFlat;
+ if (Object.keys(updates).length > 0) {
+ this.activeStore.update(updates);
+ }
+ } else {
+ this.previousInitialFlat = {};
+ }
+ }
+
+ get(path: string): unknown {
+ return this.activeStore.get(path);
+ }
+
+ set(path: string, value: unknown): void {
+ const prev = this.activeStore.getSnapshot();
+ this.activeStore.set(path, value);
+ if (!this.isControlled && this.activeStore.getSnapshot() !== prev) {
+ this.onStateChange?.([{ path, value }]);
+ }
+ }
+
+ update(updates: Record): void {
+ const prev = this.activeStore.getSnapshot();
+ this.activeStore.update(updates);
+ if (!this.isControlled && this.activeStore.getSnapshot() !== prev) {
+ const changes = Object.entries(updates)
+ .filter(([path, value]) => getByPath(prev, path) !== value)
+ .map(([path, value]) => ({ path, value }));
+ if (changes.length > 0) {
+ this.onStateChange?.(changes);
+ }
+ }
+ }
+
+ getSnapshot(): StateModel {
+ return this.activeStore.getSnapshot();
+ }
+
+ destroy(): void {
+ this.unsubscribe?.();
+ this.unsubscribe = undefined;
+ }
+}
+
+@Component({
+ selector: "json-render-state-provider",
+ standalone: true,
+ template: ``,
+ providers: [
+ StateContextService,
+ {
+ provide: STATE_CONTEXT,
+ useExisting: StateContextService,
+ },
+ ],
+})
+export class StateProvider {
+ private readonly ctx = inject(StateContextService);
+
+ @Input() store?: StateStore;
+ @Input() initialState?: StateModel;
+ @Input() onStateChange?: (
+ changes: Array<{ path: string; value: unknown }>,
+ ) => void;
+
+ ngOnInit(): void {
+ this.sync();
+ }
+
+ ngOnChanges(): void {
+ this.sync();
+ }
+
+ ngOnDestroy(): void {
+ this.ctx.destroy();
+ }
+
+ private sync(): void {
+ this.ctx.configure({
+ store: this.store,
+ initialState: this.initialState,
+ onStateChange: this.onStateChange,
+ });
+ }
+}
+
+export function useStateStore(): StateContextValue {
+ return inject(STATE_CONTEXT);
+}
+
+export function useStateValue(path: string): Signal {
+ const { state } = useStateStore();
+ return computed(() => getByPath(state(), path) as T | undefined);
+}
+
+export function useStateBinding(
+ path: string,
+): [Signal, (value: T) => void] {
+ const { set } = useStateStore();
+ const value = useStateValue(path);
+
+ function setBoundValue(nextValue: T): void {
+ set(path, nextValue);
+ }
+
+ return [value, setBoundValue];
+}
diff --git a/packages/angular/src/providers/validation.ts b/packages/angular/src/providers/validation.ts
new file mode 100644
index 00000000..80d583c9
--- /dev/null
+++ b/packages/angular/src/providers/validation.ts
@@ -0,0 +1,225 @@
+import {
+ Component,
+ Injectable,
+ InjectionToken,
+ Input,
+ Signal,
+ computed,
+ inject,
+ signal,
+} from "@angular/core";
+import {
+ runValidation,
+ type ValidationConfig,
+ type ValidationFunction,
+ type ValidationResult,
+} from "@json-render/core";
+import { useStateStore } from "./state";
+
+export interface FieldValidationState {
+ touched: boolean;
+ validated: boolean;
+ result: ValidationResult | null;
+}
+
+export interface ValidationContextValue {
+ customFunctions: Signal>;
+ fieldStates: Signal>;
+ validate: (path: string, config: ValidationConfig) => ValidationResult;
+ touch: (path: string) => void;
+ clear: (path: string) => void;
+ validateAll: () => boolean;
+ registerField: (path: string, config: ValidationConfig) => void;
+}
+
+export interface ValidationProviderProps {
+ customFunctions?: Record;
+}
+
+export const VALIDATION_CONTEXT = new InjectionToken(
+ "json-render:validation",
+);
+
+function dynamicArgsEqual(
+ a: Record | undefined,
+ b: Record | undefined,
+): boolean {
+ if (a === b) return true;
+ if (!a || !b) return false;
+ const keysA = Object.keys(a);
+ const keysB = Object.keys(b);
+ if (keysA.length !== keysB.length) return false;
+ for (const key of keysA) {
+ const va = a[key];
+ const vb = b[key];
+ if (va === vb) continue;
+ if (
+ typeof va === "object" &&
+ va !== null &&
+ typeof vb === "object" &&
+ vb !== null
+ ) {
+ const sa = (va as Record).$state;
+ const sb = (vb as Record).$state;
+ if (typeof sa === "string" && sa === sb) continue;
+ }
+ return false;
+ }
+ return true;
+}
+
+function validationConfigEqual(
+ a: ValidationConfig,
+ b: ValidationConfig,
+): boolean {
+ if (a === b) return true;
+ if (a.validateOn !== b.validateOn) return false;
+ const ac = a.checks ?? [];
+ const bc = b.checks ?? [];
+ if (ac.length !== bc.length) return false;
+ for (let i = 0; i < ac.length; i++) {
+ const ca = ac[i]!;
+ const cb = bc[i]!;
+ if (ca.type !== cb.type) return false;
+ if (ca.message !== cb.message) return false;
+ if (!dynamicArgsEqual(ca.args, cb.args)) return false;
+ }
+ return true;
+}
+
+@Injectable()
+class ValidationContextService implements ValidationContextValue {
+ private readonly state = useStateStore();
+ readonly customFunctions = signal>({});
+ readonly fieldStates = signal>({});
+ private readonly fieldConfigs = signal>({});
+
+ configure({ customFunctions }: ValidationProviderProps = {}): void {
+ this.customFunctions.set(customFunctions ?? {});
+ }
+
+ registerField(path: string, config: ValidationConfig): void {
+ const existing = this.fieldConfigs()[path];
+ if (existing && validationConfigEqual(existing, config)) return;
+ this.fieldConfigs.update((value) => ({ ...value, [path]: config }));
+ }
+
+ validate(path: string, config: ValidationConfig): ValidationResult {
+ const result = runValidation(config, {
+ value: this.state.get(path),
+ stateModel: this.state.state(),
+ customFunctions: this.customFunctions(),
+ });
+
+ this.fieldStates.update((value) => ({
+ ...value,
+ [path]: {
+ touched: value[path]?.touched ?? true,
+ validated: true,
+ result,
+ },
+ }));
+
+ return result;
+ }
+
+ touch(path: string): void {
+ this.fieldStates.update((value) => ({
+ ...value,
+ [path]: {
+ ...value[path],
+ touched: true,
+ validated: value[path]?.validated ?? false,
+ result: value[path]?.result ?? null,
+ },
+ }));
+ }
+
+ clear(path: string): void {
+ this.fieldStates.update((value) => {
+ const { [path]: _removed, ...rest } = value;
+ return rest;
+ });
+ }
+
+ validateAll(): boolean {
+ let allValid = true;
+ for (const [path, config] of Object.entries(this.fieldConfigs())) {
+ const result = this.validate(path, config);
+ if (!result.valid) {
+ allValid = false;
+ }
+ }
+ return allValid;
+ }
+}
+
+@Component({
+ selector: "json-render-validation-provider",
+ standalone: true,
+ template: ``,
+ providers: [
+ ValidationContextService,
+ {
+ provide: VALIDATION_CONTEXT,
+ useExisting: ValidationContextService,
+ },
+ ],
+})
+export class ValidationProvider {
+ private readonly ctx = inject(ValidationContextService);
+
+ @Input() customFunctions?: Record;
+
+ ngOnInit(): void {
+ this.ctx.configure({ customFunctions: this.customFunctions });
+ }
+
+ ngOnChanges(): void {
+ this.ctx.configure({ customFunctions: this.customFunctions });
+ }
+}
+
+export function useOptionalValidation(): ValidationContextValue | null {
+ return inject(VALIDATION_CONTEXT, { optional: true }) ?? null;
+}
+
+export function useValidation(): ValidationContextValue {
+ const ctx = useOptionalValidation();
+ if (!ctx) {
+ throw new Error("useValidation must be used within a ValidationProvider");
+ }
+ return ctx;
+}
+
+export function useFieldValidation(
+ path: string,
+ config?: ValidationConfig,
+): {
+ state: Signal;
+ validate: () => ValidationResult;
+ touch: () => void;
+ clear: () => void;
+ errors: Signal;
+ isValid: Signal;
+} {
+ const ctx = useValidation();
+ if (config) {
+ ctx.registerField(path, config);
+ }
+
+ const defaultState: FieldValidationState = {
+ touched: false,
+ validated: false,
+ result: null,
+ };
+
+ return {
+ state: computed(() => ctx.fieldStates()[path] ?? defaultState),
+ validate: () => ctx.validate(path, config ?? { checks: [] }),
+ touch: () => ctx.touch(path),
+ clear: () => ctx.clear(path),
+ errors: computed(() => ctx.fieldStates()[path]?.result?.errors ?? []),
+ isValid: computed(() => ctx.fieldStates()[path]?.result?.valid ?? true),
+ };
+}
diff --git a/packages/angular/src/providers/visibility.ts b/packages/angular/src/providers/visibility.ts
new file mode 100644
index 00000000..c0b93049
--- /dev/null
+++ b/packages/angular/src/providers/visibility.ts
@@ -0,0 +1,61 @@
+import {
+ Component,
+ Injectable,
+ InjectionToken,
+ Signal,
+ computed,
+ inject,
+} from "@angular/core";
+import {
+ evaluateVisibility,
+ type VisibilityCondition,
+ type VisibilityContext as CoreVisibilityContext,
+} from "@json-render/core";
+import { useStateStore } from "./state";
+
+export interface VisibilityContextValue {
+ isVisible: (condition: VisibilityCondition | undefined) => boolean;
+ ctx: Signal;
+}
+
+export const VISIBILITY_CONTEXT = new InjectionToken(
+ "json-render:visibility",
+);
+
+@Injectable()
+class VisibilityContextService implements VisibilityContextValue {
+ private readonly state = useStateStore();
+
+ readonly ctx = computed(() => ({
+ stateModel: this.state.state(),
+ }));
+
+ isVisible(condition: VisibilityCondition | undefined): boolean {
+ return evaluateVisibility(condition, this.ctx());
+ }
+}
+
+@Component({
+ selector: "json-render-visibility-provider",
+ standalone: true,
+ template: ``,
+ providers: [
+ VisibilityContextService,
+ {
+ provide: VISIBILITY_CONTEXT,
+ useExisting: VisibilityContextService,
+ },
+ ],
+})
+export class VisibilityProvider {}
+
+export function useVisibility(): VisibilityContextValue {
+ return inject(VISIBILITY_CONTEXT);
+}
+
+export function useIsVisible(
+ condition: VisibilityCondition | undefined,
+): Signal {
+ const { ctx } = useVisibility();
+ return computed(() => evaluateVisibility(condition, ctx()));
+}
diff --git a/packages/angular/src/renderer.test.ts b/packages/angular/src/renderer.test.ts
new file mode 100644
index 00000000..e61f0a10
--- /dev/null
+++ b/packages/angular/src/renderer.test.ts
@@ -0,0 +1,173 @@
+import "./testing/setup";
+
+import { Component } from "@angular/core";
+import { TestBed } from "@angular/core/testing";
+import { describe, expect, it } from "vitest";
+import type { Spec } from "@json-render/core";
+import { JSONUIProvider, Renderer } from "./renderer";
+import { element, text } from "./vnode";
+
+@Component({
+ standalone: true,
+ imports: [JSONUIProvider, Renderer],
+ template: `
+
+
+
+ `,
+})
+class RendererHostComponent {
+ state: Record = {};
+ spec: Spec | null = null;
+
+ readonly registry = {
+ Stack: ({ children }: { children?: unknown[] }) =>
+ element("div", { className: "stack" }, children as never[]),
+ Text: ({ props }: { props: Record }) =>
+ element("span", { className: "text" }, [text(String(props.text ?? ""))]),
+ Button: ({
+ props,
+ emit,
+ }: {
+ props: Record;
+ emit: (event: string) => void;
+ }) =>
+ element(
+ "button",
+ {
+ type: "button",
+ onclick: () => emit("press"),
+ },
+ [text(String(props.label ?? ""))],
+ ),
+ Input: ({
+ props,
+ bindings,
+ }: {
+ props: Record;
+ bindings?: Record;
+ }) =>
+ element("input", {
+ value: String(props.value ?? ""),
+ "data-binding": bindings?.value ?? "",
+ }),
+ };
+}
+
+describe("Renderer", () => {
+ it("renders events and reacts to state changes", async () => {
+ await TestBed.configureTestingModule({
+ imports: [RendererHostComponent],
+ }).compileComponents();
+
+ const fixture = TestBed.createComponent(RendererHostComponent);
+ fixture.componentInstance.state = { status: "idle" };
+ fixture.componentInstance.spec = {
+ root: "root",
+ state: { status: "idle" },
+ elements: {
+ root: {
+ type: "Stack",
+ props: {},
+ children: ["status", "button"],
+ },
+ status: {
+ type: "Text",
+ props: {
+ text: { $state: "/status" },
+ },
+ children: [],
+ },
+ button: {
+ type: "Button",
+ props: {
+ label: "Run",
+ },
+ on: {
+ press: {
+ action: "setState",
+ params: {
+ statePath: "/status",
+ value: "done",
+ },
+ },
+ },
+ children: [],
+ },
+ },
+ };
+
+ fixture.detectChanges();
+
+ const root = fixture.nativeElement as HTMLElement;
+ expect(root.querySelector(".text")?.textContent).toBe("idle");
+
+ root.querySelector("button")?.click();
+ fixture.detectChanges();
+
+ expect(root.querySelector(".text")?.textContent).toBe("done");
+ });
+
+ it("supports repeat, visibility, and resolved bindings", async () => {
+ await TestBed.configureTestingModule({
+ imports: [RendererHostComponent],
+ }).compileComponents();
+
+ const fixture = TestBed.createComponent(RendererHostComponent);
+ fixture.componentInstance.state = {
+ items: [
+ { label: "Visible", visible: true },
+ { label: "Hidden", visible: false },
+ ],
+ form: {
+ name: "Ada",
+ },
+ };
+ fixture.componentInstance.spec = {
+ root: "root",
+ state: fixture.componentInstance.state,
+ elements: {
+ root: {
+ type: "Stack",
+ props: {},
+ children: ["list", "input"],
+ },
+ list: {
+ type: "Stack",
+ props: {},
+ repeat: {
+ statePath: "/items",
+ },
+ children: ["item"],
+ },
+ item: {
+ type: "Text",
+ props: {
+ text: { $item: "label" },
+ },
+ visible: { $item: "visible", eq: true },
+ children: [],
+ },
+ input: {
+ type: "Input",
+ props: {
+ value: { $bindState: "/form/name" },
+ },
+ children: [],
+ },
+ },
+ };
+
+ fixture.detectChanges();
+
+ const root = fixture.nativeElement as HTMLElement;
+ const texts = [...root.querySelectorAll(".text")].map((node) =>
+ node.textContent?.trim(),
+ );
+ expect(texts).toEqual(["Visible"]);
+
+ const input = root.querySelector("input");
+ expect(input?.getAttribute("data-binding")).toBe("/form/name");
+ expect((input as HTMLInputElement | null)?.value).toBe("Ada");
+ });
+});
diff --git a/packages/angular/src/renderer.ts b/packages/angular/src/renderer.ts
new file mode 100644
index 00000000..b4747b35
--- /dev/null
+++ b/packages/angular/src/renderer.ts
@@ -0,0 +1,1009 @@
+import {
+ Component,
+ DestroyRef,
+ ElementRef,
+ Input,
+ Signal,
+ Type,
+ ViewEncapsulation,
+ computed,
+ effect,
+ inject,
+ signal,
+} from "@angular/core";
+import type {
+ ActionHandler,
+ Catalog,
+ ComputedFunction,
+ SchemaDefinition,
+ Spec,
+ StateModel,
+ StateStore,
+ UIElement,
+} from "@json-render/core";
+import {
+ createStateStore,
+ executeAction as executeResolvedAction,
+ evaluateVisibility,
+ getByPath,
+ resolveAction,
+ resolveActionParam,
+ resolveBindings,
+ resolveElementProps,
+ type ActionBinding,
+ type PropResolutionContext,
+} from "@json-render/core";
+import type {
+ Actions,
+ CatalogHasActions,
+ Components,
+ EventHandle,
+ SetState,
+} from "./catalog-types";
+import type { VNode } from "./vnode";
+import { normalizeVNodeArray } from "./vnode";
+import {
+ ACTIONS_CONTEXT,
+ ActionProvider,
+ ConfirmDialog,
+ deepResolveValue,
+ type ActionContextValue,
+} from "./providers/actions";
+import { RepeatScopeProvider } from "./providers/repeat-scope";
+import {
+ STATE_CONTEXT,
+ StateProvider,
+ type StateContextValue,
+} from "./providers/state";
+import { ValidationProvider } from "./providers/validation";
+import { VisibilityProvider } from "./providers/visibility";
+
+export interface ComponentRenderProps> {
+ element: UIElement;
+ props: P;
+ emit: (event: string) => void | Promise;
+ on: (event: string) => EventHandle;
+ bindings?: Record;
+ loading?: boolean;
+ children?: VNode[];
+}
+
+export type ComponentRenderer> = (
+ ctx: ComponentRenderProps
,
+) => VNode | VNode[] | string | null;
+
+export type ComponentRegistry = Record;
+
+export interface RendererProps {
+ spec: Spec | null;
+ registry: ComponentRegistry;
+ loading?: boolean;
+ fallback?: ComponentRenderer;
+ store?: StateStore;
+ initialState?: Record;
+ handlers?: Record;
+ navigate?: (path: string) => void;
+ onStateChange?: (changes: Array<{ path: string; value: unknown }>) => void;
+ functions?: Record;
+}
+
+export interface JSONUIProviderProps {
+ registry: ComponentRegistry;
+ store?: StateStore;
+ initialState?: Record;
+ handlers?: Record<
+ string,
+ (params: Record) => Promise | unknown
+ >;
+ navigate?: (path: string) => void;
+ validationFunctions?: Record<
+ string,
+ (value: unknown, args?: Record) => boolean
+ >;
+ functions?: Record;
+ onStateChange?: (changes: Array<{ path: string; value: unknown }>) => void;
+}
+
+interface RepeatScope {
+ item: unknown;
+ index: number;
+ basePath: string;
+}
+
+interface FocusSnapshot {
+ path: number[];
+ selectionStart: number | null;
+ selectionEnd: number | null;
+ selectionDirection: "forward" | "backward" | "none" | null;
+}
+
+function getNodePath(root: Node, node: Node): number[] | null {
+ const path: number[] = [];
+ let current: Node | null = node;
+
+ while (current && current !== root) {
+ const nextParent: Node | null = current.parentNode;
+ if (!nextParent) return null;
+ const index = Array.prototype.indexOf.call(
+ nextParent.childNodes,
+ current,
+ ) as number;
+ if (index < 0) return null;
+ path.unshift(index);
+ current = nextParent;
+ }
+
+ return current === root ? path : null;
+}
+
+function captureFocusSnapshot(
+ root: HTMLElement,
+ document: Document,
+): FocusSnapshot | null {
+ const active = document.activeElement;
+ if (
+ active instanceof HTMLInputElement ||
+ active instanceof HTMLTextAreaElement
+ ) {
+ if (!root.contains(active)) return null;
+ const path = getNodePath(root, active);
+ if (!path) return null;
+ return {
+ path,
+ selectionStart: active.selectionStart,
+ selectionEnd: active.selectionEnd,
+ selectionDirection: active.selectionDirection,
+ };
+ }
+
+ return null;
+}
+
+function getNodeByPath(root: Node, path: number[]): Node | null {
+ let current: Node | null = root;
+ for (const index of path) {
+ if (!current) return null;
+ current = current.childNodes.item(index);
+ }
+ return current;
+}
+
+function restoreFocusSnapshot(
+ root: HTMLElement,
+ snapshot: FocusSnapshot,
+): boolean {
+ const target = getNodeByPath(root, snapshot.path);
+
+ if (
+ !target ||
+ (!(target instanceof HTMLInputElement) &&
+ !(target instanceof HTMLTextAreaElement))
+ ) {
+ return false;
+ }
+
+ target.focus();
+ if (snapshot.selectionStart !== null && snapshot.selectionEnd !== null) {
+ target.setSelectionRange(
+ snapshot.selectionStart,
+ snapshot.selectionEnd,
+ snapshot.selectionDirection ?? undefined,
+ );
+ }
+ return true;
+}
+
+function noopHandle(): EventHandle {
+ return {
+ emit: () => {},
+ shouldPreventDefault: false,
+ bound: false,
+ };
+}
+
+async function resolveAndExecuteBindings(
+ actionBindings: ActionBinding[],
+ ctx: PropResolutionContext,
+ getSnapshot: () => Record,
+ execute: (binding: ActionBinding) => Promise,
+): Promise {
+ for (const binding of actionBindings) {
+ if (!binding.params) {
+ await execute(binding);
+ continue;
+ }
+ const liveCtx: PropResolutionContext = {
+ ...ctx,
+ stateModel: getSnapshot(),
+ };
+ const resolvedParams: Record = {};
+ for (const [key, value] of Object.entries(binding.params)) {
+ resolvedParams[key] = resolveActionParam(value, liveCtx);
+ }
+ await execute({ ...binding, params: resolvedParams });
+ }
+}
+
+function appendStyle(
+ element: HTMLElement,
+ styles: Record | string,
+): void {
+ if (typeof styles === "string") {
+ element.setAttribute("style", styles);
+ return;
+ }
+ for (const [key, value] of Object.entries(styles)) {
+ if (value === null || value === undefined) continue;
+ element.style.setProperty(
+ key.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`),
+ String(value),
+ );
+ }
+}
+
+function setDomProp(element: HTMLElement, key: string, value: unknown): void {
+ if (value === null || value === undefined || value === false) return;
+
+ if (key === "className" || key === "class") {
+ element.setAttribute("class", String(value));
+ return;
+ }
+
+ if (key === "style" && typeof value === "object") {
+ appendStyle(element, value as Record);
+ return;
+ }
+
+ if (key === "style" && typeof value === "string") {
+ appendStyle(element, value);
+ return;
+ }
+
+ if (key === "dataset" && typeof value === "object" && value !== null) {
+ for (const [dataKey, dataValue] of Object.entries(
+ value as Record,
+ )) {
+ if (dataValue !== null && dataValue !== undefined) {
+ element.dataset[dataKey] = String(dataValue);
+ }
+ }
+ return;
+ }
+
+ if (key.startsWith("on") && key.length > 2 && typeof value === "function") {
+ // Preserve case for custom events (e.g., catChange from oncatChange)
+ // Standard DOM events are all lowercase, custom events may have uppercase
+ const eventName = key.slice(2);
+ element.addEventListener(eventName, value as EventListener);
+ return;
+ }
+
+ if (key === "innerHTML") {
+ element.innerHTML = String(value);
+ return;
+ }
+
+ if (
+ key in element &&
+ !key.startsWith("aria-") &&
+ !key.startsWith("data-") &&
+ typeof value !== "object"
+ ) {
+ Reflect.set(element, key, value);
+ return;
+ }
+
+ element.setAttribute(key, value === true ? "" : String(value));
+}
+
+function renderVNode(
+ document: Document,
+ parent: Node,
+ vnode: VNode,
+ registry: ComponentRegistry,
+ fallback: ComponentRenderer | undefined,
+ loading: boolean | undefined,
+): void {
+ if (vnode === null || vnode === undefined || vnode === false) return;
+
+ if (typeof vnode === "string" || typeof vnode === "number") {
+ parent.appendChild(document.createTextNode(String(vnode)));
+ return;
+ }
+
+ if (typeof vnode === "boolean") {
+ return;
+ }
+
+ if (vnode.kind === "text") {
+ parent.appendChild(document.createTextNode(vnode.value));
+ return;
+ }
+
+ if (vnode.kind === "fragment") {
+ for (const child of vnode.children) {
+ renderVNode(document, parent, child, registry, fallback, loading);
+ }
+ return;
+ }
+
+ if (vnode.kind === "component") {
+ const componentRenderer = registry[vnode.name] ?? fallback;
+ if (!componentRenderer) {
+ console.warn(
+ `[json-render] No renderer for nested component type: ${vnode.name}`,
+ );
+ return;
+ }
+ const nested = componentRenderer({
+ element: {
+ type: vnode.name,
+ props: vnode.props ?? {},
+ children: [],
+ },
+ props: (vnode.props ?? {}) as Record,
+ emit: () => {},
+ on: noopHandle,
+ loading,
+ children: vnode.children,
+ });
+ for (const child of normalizeVNodeArray(nested)) {
+ renderVNode(document, parent, child, registry, fallback, loading);
+ }
+ return;
+ }
+
+ const element = document.createElement(vnode.tag);
+ for (const [key, value] of Object.entries(vnode.props ?? {})) {
+ setDomProp(element, key, value);
+ }
+ for (const child of vnode.children ?? []) {
+ renderVNode(document, element, child, registry, fallback, loading);
+ }
+ parent.appendChild(element);
+}
+
+@Component({
+ selector: "json-ui-provider",
+ standalone: true,
+ imports: [
+ StateProvider,
+ VisibilityProvider,
+ ValidationProvider,
+ ActionProvider,
+ ConfirmDialog,
+ ],
+ template: `
+
+
+
+
+
+
+
+
+
+
+ `,
+ encapsulation: ViewEncapsulation.None,
+})
+export class JSONUIProvider {
+ @Input({ required: true }) registry!: ComponentRegistry;
+ @Input() store?: StateStore;
+ @Input() initialState?: Record;
+ @Input() handlers?: Record<
+ string,
+ (params: Record) => Promise | unknown
+ >;
+ @Input() navigate?: (path: string) => void;
+ @Input() validationFunctions?: Record<
+ string,
+ (value: unknown, args?: Record) => boolean
+ >;
+ @Input() functions?: Record;
+ @Input() onStateChange?: (
+ changes: Array<{ path: string; value: unknown }>,
+ ) => void;
+}
+
+@Component({
+ selector: "json-renderer",
+ standalone: true,
+ template: ``,
+ encapsulation: ViewEncapsulation.None,
+})
+export class Renderer {
+ private readonly host = inject(ElementRef);
+ private readonly destroyRef = inject(DestroyRef);
+ private readonly injectedState = inject(STATE_CONTEXT, { optional: true });
+ private readonly injectedActions = inject(ACTIONS_CONTEXT, {
+ optional: true,
+ });
+ private readonly watchedValues = new Map>();
+ private readonly currentFunctions = signal>(
+ {},
+ );
+ private readonly localStateSignal = signal({});
+ private readonly localHandlers = signal>({});
+ private readonly localLoadingActions = signal>(new Set());
+
+ private localStore: StateStore = createStateStore({});
+ private localStoreUnsubscribe?: () => void;
+ private localExternalStore?: StateStore;
+ private localConfigured = false;
+
+ @Input() spec: Spec | null = null;
+ @Input({ required: true }) registry!: ComponentRegistry;
+ @Input() loading?: boolean;
+ @Input() fallback?: ComponentRenderer;
+ @Input() functions?: Record;
+ @Input() store?: StateStore;
+ @Input() initialState?: Record;
+ @Input() handlers?: Record;
+ @Input() navigate?: (path: string) => void;
+ @Input() onStateChange?: (
+ changes: Array<{ path: string; value: unknown }>,
+ ) => void;
+
+ private readonly fallbackStateContext: StateContextValue = {
+ state: this.localStateSignal,
+ get: (path: string) => this.localStore.get(path),
+ set: (path: string, value: unknown) => {
+ const prev = this.localStore.getSnapshot();
+ this.localStore.set(path, value);
+ if (this.localStore.getSnapshot() !== prev) {
+ this.onStateChange?.([{ path, value }]);
+ }
+ },
+ update: (updates: Record) => {
+ const prev = this.localStore.getSnapshot();
+ this.localStore.update(updates);
+ if (this.localStore.getSnapshot() !== prev) {
+ const changes = Object.entries(updates)
+ .filter(([path, value]) => getByPath(prev, path) !== value)
+ .map(([path, value]) => ({ path, value }));
+ if (changes.length > 0) {
+ this.onStateChange?.(changes);
+ }
+ }
+ },
+ getSnapshot: () => this.localStore.getSnapshot(),
+ };
+
+ private readonly fallbackActionContext: ActionContextValue = {
+ handlers: computed(() => this.localHandlers()),
+ loadingActions: this.localLoadingActions,
+ pendingConfirmation: signal(null),
+ execute: async (binding: ActionBinding) => {
+ await this.executeLocalAction(binding);
+ },
+ confirm: () => {},
+ cancel: () => {},
+ registerHandler: (name: string, handler: ActionHandler) => {
+ this.localHandlers.update((value) => ({ ...value, [name]: handler }));
+ },
+ };
+
+ private get state(): StateContextValue {
+ return this.injectedState ?? this.fallbackStateContext;
+ }
+
+ private get actions(): ActionContextValue {
+ return this.injectedActions ?? this.fallbackActionContext;
+ }
+
+ constructor() {
+ effect(() => {
+ this.state.state();
+ this.render();
+ });
+ this.destroyRef.onDestroy(() => {
+ this.watchedValues.clear();
+ this.localStoreUnsubscribe?.();
+ });
+ }
+
+ ngOnChanges(): void {
+ this.currentFunctions.set(this.functions ?? {});
+ this.configureLocalContexts();
+ this.render();
+ }
+
+ private configureLocalContexts(): void {
+ if (this.injectedState) return;
+
+ const desiredExternalStore = this.store;
+ const shouldResetStore =
+ !this.localConfigured || this.localExternalStore !== desiredExternalStore;
+
+ if (shouldResetStore) {
+ this.localStoreUnsubscribe?.();
+ this.localExternalStore = desiredExternalStore;
+ this.localStore =
+ desiredExternalStore ??
+ createStateStore(this.initialState ?? this.spec?.state ?? {});
+ this.localStoreUnsubscribe = this.localStore.subscribe(() => {
+ this.localStateSignal.set(this.localStore.getSnapshot());
+ });
+ this.localConfigured = true;
+ }
+
+ this.localHandlers.set(this.handlers ?? {});
+ this.localStateSignal.set(this.localStore.getSnapshot());
+ }
+
+ private render(): void {
+ const element = this.host.nativeElement;
+ const document = element.ownerDocument;
+ const focusSnapshot = captureFocusSnapshot(element, document);
+
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+
+ if (!this.spec?.root) return;
+
+ const rootVNodes = this.renderElement(this.spec.root);
+ for (const vnode of rootVNodes) {
+ renderVNode(
+ document,
+ element,
+ vnode,
+ this.registry,
+ this.fallback,
+ this.loading,
+ );
+ }
+
+ if (focusSnapshot) {
+ restoreFocusSnapshot(element, focusSnapshot);
+ }
+ }
+
+ private renderElement(
+ elementKey: string,
+ repeatScope?: RepeatScope,
+ ): VNode[] {
+ if (!this.spec) return [];
+ const element = this.spec.elements[elementKey];
+ if (!element) {
+ if (!this.loading) {
+ console.warn(
+ `[json-render] Missing element "${elementKey}" referenced in spec.`,
+ );
+ }
+ return [];
+ }
+
+ const ctx = this.buildContext(repeatScope);
+ this.runWatchers(elementKey, element, ctx, repeatScope);
+
+ if (!evaluateVisibility(element.visible, ctx)) {
+ return [];
+ }
+
+ const rawProps = (element.props as Record) ?? {};
+ const bindings = resolveBindings(rawProps, ctx);
+ const props = resolveElementProps(rawProps, ctx);
+ const resolvedElement =
+ props !== element.props ? { ...element, props } : element;
+
+ const componentRenderer =
+ this.registry[resolvedElement.type] ?? this.fallback;
+ if (!componentRenderer) {
+ console.warn(
+ `[json-render] No renderer for component type: ${resolvedElement.type}`,
+ );
+ return [];
+ }
+
+ const emit = async (eventName: string): Promise => {
+ const binding = element.on?.[eventName];
+ if (!binding) return;
+ const actionBindings = Array.isArray(binding) ? binding : [binding];
+ await resolveAndExecuteBindings(
+ actionBindings,
+ this.buildContext(repeatScope),
+ this.state.getSnapshot,
+ this.actions.execute,
+ );
+ };
+
+ const on = (eventName: string): EventHandle => {
+ const binding = element.on?.[eventName];
+ if (!binding) return noopHandle();
+ const actionBindings = Array.isArray(binding) ? binding : [binding];
+ return {
+ emit: () => emit(eventName),
+ shouldPreventDefault: actionBindings.some(
+ (item) => item.preventDefault,
+ ),
+ bound: true,
+ };
+ };
+
+ const children = resolvedElement.repeat
+ ? this.renderRepeatChildren(resolvedElement)
+ : (resolvedElement.children ?? []).flatMap((childKey) =>
+ this.renderElement(childKey, repeatScope),
+ );
+
+ const rendered = componentRenderer({
+ element: resolvedElement as UIElement>,
+ props: resolvedElement.props as Record,
+ emit,
+ on,
+ bindings,
+ loading: this.loading,
+ children,
+ });
+
+ return normalizeVNodeArray(rendered);
+ }
+
+ private renderRepeatChildren(element: UIElement): VNode[] {
+ const repeat = element.repeat;
+ if (!repeat?.statePath) return [];
+ const items = this.state.get(repeat.statePath);
+ if (!Array.isArray(items)) return [];
+
+ return items.flatMap((item, index) => {
+ const repeatScope: RepeatScope = {
+ item,
+ index,
+ basePath: `${repeat.statePath}/${index}`,
+ };
+ return (element.children ?? []).flatMap((childKey) =>
+ this.renderElement(childKey, repeatScope),
+ );
+ });
+ }
+
+ private runWatchers(
+ elementKey: string,
+ element: UIElement,
+ ctx: PropResolutionContext,
+ repeatScope?: RepeatScope,
+ ): void {
+ if (!element.watch) return;
+ const watchKey = repeatScope
+ ? `${elementKey}:${repeatScope.basePath}`
+ : elementKey;
+ const current: Record = {};
+ for (const path of Object.keys(element.watch)) {
+ current[path] = getByPath(this.state.state(), path);
+ }
+
+ const previous = this.watchedValues.get(watchKey);
+ this.watchedValues.set(watchKey, current);
+ if (!previous) return;
+
+ for (const path of Object.keys(element.watch)) {
+ if (previous[path] === current[path]) continue;
+ const binding = element.watch[path];
+ if (!binding) continue;
+ const bindings = Array.isArray(binding) ? binding : [binding];
+ void resolveAndExecuteBindings(
+ bindings,
+ ctx,
+ this.state.getSnapshot,
+ this.actions.execute,
+ );
+ }
+ }
+
+ private buildContext(repeatScope?: RepeatScope): PropResolutionContext {
+ return {
+ stateModel: this.state.getSnapshot(),
+ repeatItem: repeatScope?.item,
+ repeatIndex: repeatScope?.index,
+ repeatBasePath: repeatScope?.basePath,
+ functions: this.currentFunctions(),
+ };
+ }
+
+ private async executeLocalAction(binding: ActionBinding): Promise {
+ const resolved = resolveAction(binding, this.state.getSnapshot());
+
+ if (resolved.action === "setState" && resolved.params) {
+ const statePath = resolved.params.statePath as string;
+ if (statePath) {
+ this.state.set(statePath, resolved.params.value);
+ }
+ return;
+ }
+
+ if (resolved.action === "pushState" && resolved.params) {
+ const statePath = resolved.params.statePath as string;
+ if (statePath) {
+ const current =
+ (this.state.get(statePath) as unknown[] | undefined) ?? [];
+ const nextValue = deepResolveValue(
+ resolved.params.value,
+ this.state.get,
+ );
+ this.state.set(statePath, [...current, nextValue]);
+ const clearStatePath = resolved.params.clearStatePath as
+ | string
+ | undefined;
+ if (clearStatePath) {
+ this.state.set(clearStatePath, "");
+ }
+ }
+ return;
+ }
+
+ if (resolved.action === "removeState" && resolved.params) {
+ const statePath = resolved.params.statePath as string;
+ const index = resolved.params.index as number;
+ const current =
+ (this.state.get(statePath) as unknown[] | undefined) ?? [];
+ if (statePath && Number.isInteger(index)) {
+ this.state.set(
+ statePath,
+ current.filter((_value, currentIndex) => currentIndex !== index),
+ );
+ }
+ return;
+ }
+
+ if (resolved.action === "validateForm") {
+ console.warn(
+ "validateForm requires ValidationProvider when using the standalone Angular renderer.",
+ );
+ return;
+ }
+
+ if (resolved.action === "push" && resolved.params) {
+ const screen = resolved.params.screen as string;
+ if (screen) {
+ const currentScreen = this.state.get("/currentScreen") as
+ | string
+ | undefined;
+ const navStack =
+ (this.state.get("/navStack") as string[] | undefined) ?? [];
+ this.state.set("/navStack", [...navStack, currentScreen ?? ""]);
+ this.state.set("/currentScreen", screen);
+ }
+ return;
+ }
+
+ if (resolved.action === "pop") {
+ const navStack =
+ (this.state.get("/navStack") as string[] | undefined) ?? [];
+ if (navStack.length > 0) {
+ const previousScreen = navStack[navStack.length - 1];
+ this.state.set("/navStack", navStack.slice(0, -1));
+ this.state.set("/currentScreen", previousScreen);
+ }
+ return;
+ }
+
+ const handler = this.localHandlers()[resolved.action];
+ if (!handler) {
+ console.warn(`No handler registered for action: ${resolved.action}`);
+ return;
+ }
+
+ if (resolved.confirm) {
+ if (
+ typeof window !== "undefined" &&
+ typeof window.confirm === "function"
+ ) {
+ const title = resolved.confirm.title?.trim() ?? "";
+ const message = resolved.confirm.message?.trim() ?? "";
+ const confirmed = window.confirm(
+ [title, message].filter(Boolean).join("\n\n"),
+ );
+ if (!confirmed) return;
+ }
+ }
+
+ this.localLoadingActions.update((value) => {
+ const next = new Set(value);
+ next.add(resolved.action);
+ return next;
+ });
+
+ try {
+ await executeResolvedAction({
+ action: resolved,
+ handler,
+ setState: this.state.set,
+ navigate: this.navigate,
+ executeAction: async (name) => {
+ await this.executeLocalAction({ action: name });
+ },
+ });
+ } finally {
+ this.localLoadingActions.update((value) => {
+ const next = new Set(value);
+ next.delete(resolved.action);
+ return next;
+ });
+ }
+ }
+}
+
+export interface DefineRegistryResult {
+ registry: ComponentRegistry;
+ handlers: (
+ getSetState: () => SetState | undefined,
+ getState: () => StateModel,
+ ) => Record) => Promise>;
+ executeAction: (
+ actionName: string,
+ params: Record | undefined,
+ setState: SetState,
+ state?: StateModel,
+ ) => Promise;
+}
+
+type DefineRegistryOptions = {
+ components?: Components;
+} & (CatalogHasActions extends true
+ ? { actions: Actions }
+ : { actions?: Actions });
+
+type DefineRegistryActionFn = (
+ params: Record | undefined,
+ setState: SetState,
+ state: StateModel,
+) => Promise;
+
+export function defineRegistry(
+ _catalog: C,
+ options: DefineRegistryOptions,
+): DefineRegistryResult {
+ const registry: ComponentRegistry = {};
+
+ if (options.components) {
+ for (const [name, componentRenderer] of Object.entries(
+ options.components,
+ )) {
+ registry[name] = componentRenderer as ComponentRenderer;
+ }
+ }
+
+ const actionMap = options.actions
+ ? (Object.entries(options.actions) as Array<
+ [string, DefineRegistryActionFn]
+ >)
+ : [];
+
+ const handlers = (
+ getSetState: () => SetState | undefined,
+ getState: () => StateModel,
+ ): Record) => Promise> => {
+ const result: Record<
+ string,
+ (params: Record) => Promise
+ > = {};
+
+ for (const [name, actionFn] of actionMap) {
+ result[name] = async (params) => {
+ const setState = getSetState();
+ const state = getState();
+ if (setState) {
+ await actionFn(params, setState, state);
+ }
+ };
+ }
+
+ return result;
+ };
+
+ const executeAction = async (
+ actionName: string,
+ params: Record | undefined,
+ setState: SetState,
+ state: StateModel = {},
+ ): Promise => {
+ const entry = actionMap.find(([name]) => name === actionName);
+ if (!entry) {
+ console.warn(`Unknown action: ${actionName}`);
+ return;
+ }
+ await entry[1](params, setState, state);
+ };
+
+ return { registry, handlers, executeAction };
+}
+
+export interface CreateRendererProps {
+ spec: Spec | null;
+ store?: StateStore;
+ state?: Record;
+ onAction?: (actionName: string, params?: Record) => void;
+ onStateChange?: (changes: Array<{ path: string; value: unknown }>) => void;
+ navigate?: (path: string) => void;
+ functions?: Record;
+ loading?: boolean;
+ fallback?: ComponentRenderer;
+}
+
+export type ComponentMap<
+ TComponents extends Record,
+> = {
+ [K in keyof TComponents]: ComponentRenderer;
+};
+
+export function createRenderer<
+ TDef extends SchemaDefinition,
+ TCatalog extends { components: Record },
+>(
+ _catalog: Catalog,
+ components: ComponentMap,
+): Type {
+ const registry = components as unknown as ComponentRegistry;
+
+ @Component({
+ selector: "json-render-catalog-renderer",
+ standalone: true,
+ imports: [JSONUIProvider, Renderer],
+ template: `
+
+
+
+ `,
+ })
+ class CatalogRendererComponent implements CreateRendererProps {
+ @Input() spec: Spec | null = null;
+ @Input() store?: StateStore;
+ @Input() state?: Record;
+ @Input() onAction?: (
+ actionName: string,
+ params?: Record,
+ ) => void;
+ @Input() onStateChange?: (
+ changes: Array<{ path: string; value: unknown }>,
+ ) => void;
+ @Input() navigate?: (path: string) => void;
+ @Input() functions?: Record;
+ @Input() loading?: boolean;
+ @Input() fallback?: ComponentRenderer;
+
+ readonly registry = registry;
+
+ readonly actionHandlers = new Proxy(
+ {} as Record) => void>,
+ {
+ get: (_target, prop: string) => {
+ return (params: Record) => {
+ this.onAction?.(prop, params);
+ };
+ },
+ },
+ );
+ }
+
+ return CatalogRendererComponent;
+}
diff --git a/packages/angular/src/schema.ts b/packages/angular/src/schema.ts
new file mode 100644
index 00000000..d58a05a6
--- /dev/null
+++ b/packages/angular/src/schema.ts
@@ -0,0 +1,72 @@
+import { defineSchema } from "@json-render/core";
+
+export const schema = defineSchema(
+ (s) => ({
+ spec: s.object({
+ root: s.string(),
+ elements: s.record(
+ s.object({
+ type: s.ref("catalog.components"),
+ props: s.propsOf("catalog.components"),
+ children: s.array(s.string()),
+ visible: s.any(),
+ }),
+ ),
+ }),
+ catalog: s.object({
+ components: s.map({
+ props: s.zod(),
+ slots: s.array(s.string()),
+ description: s.string(),
+ example: s.any(),
+ }),
+ actions: s.map({
+ params: s.zod(),
+ description: s.string(),
+ }),
+ }),
+ }),
+ {
+ builtInActions: [
+ {
+ name: "setState",
+ description:
+ "Update a value in the state model at the given statePath. Params: { statePath: string, value: any }",
+ },
+ {
+ name: "pushState",
+ description:
+ 'Append an item to an array in state. Params: { statePath: string, value: any, clearStatePath?: string }. Value can contain {"$state":"/path"} refs and "$id" for auto IDs.',
+ },
+ {
+ name: "removeState",
+ description:
+ "Remove an item from an array in state by index. Params: { statePath: string, index: number }",
+ },
+ {
+ name: "validateForm",
+ description:
+ "Validate all registered form fields and write the result to state. Params: { statePath?: string }. Defaults to /formValidation. Result: { valid: boolean, errors: Record }.",
+ },
+ ],
+ defaultRules: [
+ "CRITICAL INTEGRITY CHECK: Before outputting ANY element that references children, you MUST have already output (or will output) each child as its own element. If an element has children: ['a', 'b'], then elements 'a' and 'b' MUST exist. A missing child element causes that entire branch of the UI to be invisible.",
+ "SELF-CHECK: After generating all elements, mentally walk the tree from root. Every key in every children array must resolve to a defined element. If you find a gap, output the missing element immediately.",
+ 'CRITICAL: The "visible" field goes on the ELEMENT object, NOT inside "props". Correct: {"type":"","props":{},"visible":{"$state":"/tab","eq":"home"},"children":[...]}.',
+ 'CRITICAL: The "on" field goes on the ELEMENT object, NOT inside "props". Use on.press, on.change, on.submit etc. NEVER put action/actionParams inside props.',
+ "When the user asks for a UI that displays data (e.g. blog posts, products, users), ALWAYS include a state field with realistic sample data. The state field is a top-level field on the spec (sibling of root/elements).",
+ 'When building repeating content backed by a state array (e.g. posts, products, items), use the "repeat" field on a container element. Example: { "type": "", "props": {}, "repeat": { "statePath": "/todos", "key": "id" }, "children": ["todo-item"] }. Replace with an appropriate component from the AVAILABLE COMPONENTS list. Inside repeated children, use { "$item": "field" } to read a field from the current item, and { "$index": true } for the current array index. For two-way binding to an item field use { "$bindItem": "completed" }. Do NOT hardcode individual elements for each array item.',
+ "Design with visual hierarchy: use container components to group content, heading components for section titles, proper spacing, and status indicators. ONLY use components from the AVAILABLE COMPONENTS list.",
+ "For data-rich UIs, use multi-column layout components if available. For forms and single-column content, use vertical layout components. ONLY use components from the AVAILABLE COMPONENTS list.",
+ "Always include realistic, professional-looking sample data. For blogs include 3-4 posts with varied titles, authors, dates, categories. For products include names, prices, images. Never leave data empty.",
+ ],
+ },
+);
+
+export type AngularSchema = typeof schema;
+
+export type AngularSpec = typeof schema extends {
+ createCatalog: (catalog: TCatalog) => { _specType: infer S };
+}
+ ? S
+ : never;
diff --git a/packages/angular/src/testing/setup.ts b/packages/angular/src/testing/setup.ts
new file mode 100644
index 00000000..0ff27196
--- /dev/null
+++ b/packages/angular/src/testing/setup.ts
@@ -0,0 +1,21 @@
+import "zone.js";
+import "zone.js/testing";
+
+import { getTestBed } from "@angular/core/testing";
+import {
+ BrowserDynamicTestingModule,
+ platformBrowserDynamicTesting,
+} from "@angular/platform-browser-dynamic/testing";
+
+declare global {
+ // eslint-disable-next-line no-var
+ var __jsonRenderAngularTestingInitialized: boolean | undefined;
+}
+
+if (!globalThis.__jsonRenderAngularTestingInitialized) {
+ getTestBed().initTestEnvironment(
+ BrowserDynamicTestingModule,
+ platformBrowserDynamicTesting(),
+ );
+ globalThis.__jsonRenderAngularTestingInitialized = true;
+}
diff --git a/packages/angular/src/vnode.ts b/packages/angular/src/vnode.ts
new file mode 100644
index 00000000..74aede2a
--- /dev/null
+++ b/packages/angular/src/vnode.ts
@@ -0,0 +1,68 @@
+export type VNode =
+ | VNodeElement
+ | VNodeText
+ | VNodeFragment
+ | VNodeComponent
+ | string
+ | number
+ | boolean
+ | null
+ | undefined;
+
+export interface VNodeElement {
+ kind: "element";
+ tag: string;
+ props?: Record;
+ children?: VNode[];
+}
+
+export interface VNodeText {
+ kind: "text";
+ value: string;
+}
+
+export interface VNodeFragment {
+ kind: "fragment";
+ children: VNode[];
+}
+
+export interface VNodeComponent {
+ kind: "component";
+ name: string;
+ props?: Record;
+ children?: VNode[];
+}
+
+export function element(
+ tag: string,
+ props?: Record,
+ children?: VNode[],
+): VNodeElement {
+ return { kind: "element", tag, props, children };
+}
+
+export function text(value: string): VNodeText {
+ return { kind: "text", value };
+}
+
+export function fragment(children: VNode[]): VNodeFragment {
+ return { kind: "fragment", children };
+}
+
+export function component(
+ name: string,
+ props?: Record,
+ children?: VNode[],
+): VNodeComponent {
+ return { kind: "component", name, props, children };
+}
+
+export function normalizeVNodeArray(
+ value: VNode | VNode[],
+): Exclude[] {
+ const source = Array.isArray(value) ? value : [value];
+ return source.filter(
+ (entry): entry is Exclude =>
+ entry !== null && entry !== undefined && entry !== false,
+ );
+}
diff --git a/packages/angular/tsconfig.json b/packages/angular/tsconfig.json
new file mode 100644
index 00000000..516af577
--- /dev/null
+++ b/packages/angular/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "extends": "@internal/typescript-config/base.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "experimentalDecorators": true,
+ "useDefineForClassFields": false
+ },
+ "include": ["src"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/angular/tsup.config.ts b/packages/angular/tsup.config.ts
new file mode 100644
index 00000000..1f9f2f6b
--- /dev/null
+++ b/packages/angular/tsup.config.ts
@@ -0,0 +1,15 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+ entry: ["src/index.ts", "src/schema.ts"],
+ format: ["cjs", "esm"],
+ dts: true,
+ sourcemap: true,
+ clean: true,
+ external: [
+ "@angular/common",
+ "@angular/core",
+ "@angular/platform-browser",
+ "@json-render/core",
+ ],
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 42b29b06..862e2e71 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,7 +10,7 @@ importers:
devDependencies:
'@changesets/cli':
specifier: 2.29.8
- version: 2.29.8(@types/node@22.19.6)
+ version: 2.29.8(@types/node@24.12.0)
'@resvg/resvg-js':
specifier: 2.6.2
version: 2.6.2
@@ -19,7 +19,7 @@ importers:
version: 0.8.10(solid-js@1.9.11)
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.4
- version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@testing-library/dom':
specifier: ^10.4.1
version: 10.4.1
@@ -28,7 +28,7 @@ importers:
version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@testing-library/svelte':
specifier: ^5.2.0
- version: 5.3.1(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 5.3.1(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/react':
specifier: ^19.2.3
version: 19.2.14
@@ -37,7 +37,7 @@ importers:
version: 9.1.7
jsdom:
specifier: ^27.4.0
- version: 27.4.0
+ version: 27.4.0(@noble/hashes@1.8.0)
lint-staged:
specifier: ^16.2.7
version: 16.2.7
@@ -60,17 +60,17 @@ importers:
specifier: ^5.0.0
version: 5.53.5
turbo:
- specifier: ^2.7.4
- version: 2.7.4
+ specifier: ^2.8.20
+ version: 2.8.20
typescript:
specifier: 5.9.2
version: 5.9.2
vite-plugin-solid:
specifier: ^2.11.10
- version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
vitest:
specifier: ^4.0.17
- version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
apps/web:
dependencies:
@@ -121,10 +121,10 @@ importers:
version: 1.36.1
'@vercel/analytics':
specifier: ^1.6.1
- version: 1.6.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))
+ version: 1.6.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))
'@vercel/speed-insights':
specifier: ^1.3.1
- version: 1.3.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))
+ version: 1.3.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))
'@visual-json/react':
specifier: 0.1.1
version: 0.1.1(react@19.2.3)
@@ -148,13 +148,13 @@ importers:
version: 8.6.0(react@19.2.3)
geist:
specifier: 1.7.0
- version: 1.7.0(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
+ version: 1.7.0(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3))
lucide-react:
specifier: ^0.562.0
version: 0.562.0(react@19.2.3)
next:
specifier: 16.1.1
- version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -235,6 +235,61 @@ importers:
specifier: 5.9.2
version: 5.9.2
+ examples/angular:
+ dependencies:
+ '@angular/common':
+ specifier: ^21.2.0
+ version: 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/compiler':
+ specifier: ^21.2.0
+ version: 21.2.5
+ '@angular/core':
+ specifier: ^21.2.0
+ version: 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser':
+ specifier: ^21.2.0
+ version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@json-render/angular':
+ specifier: workspace:*
+ version: link:../../packages/angular
+ '@json-render/core':
+ specifier: workspace:*
+ version: link:../../packages/core
+ rxjs:
+ specifier: ~7.8.0
+ version: 7.8.2
+ tslib:
+ specifier: ^2.3.0
+ version: 2.8.1
+ zod:
+ specifier: ^4.3.6
+ version: 4.3.6
+ devDependencies:
+ '@angular/build':
+ specifier: ^21.2.3
+ version: 21.2.3(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@24.12.0)(chokidar@5.0.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.6)(tailwindcss@4.2.2)(terser@5.46.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)
+ '@angular/cli':
+ specifier: ^21.2.3
+ version: 21.2.3(@types/node@24.12.0)(chokidar@5.0.0)
+ '@angular/compiler-cli':
+ specifier: ^21.2.0
+ version: 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ '@types/node':
+ specifier: ^24.7.2
+ version: 24.12.0
+ jsdom:
+ specifier: ^28.0.0
+ version: 28.1.0(@noble/hashes@1.8.0)
+ prettier:
+ specifier: ^3.8.1
+ version: 3.8.1
+ typescript:
+ specifier: ~5.9.2
+ version: 5.9.3
+ vitest:
+ specifier: ^4.0.8
+ version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+
examples/chat:
dependencies:
'@ai-sdk/gateway':
@@ -281,7 +336,7 @@ importers:
version: 0.563.0(react@19.2.4)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -393,7 +448,7 @@ importers:
version: 0.562.0(react@19.2.3)
next:
specifier: 16.1.1
- version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -514,7 +569,7 @@ importers:
version: 0.577.0(react@19.2.4)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
react:
specifier: 19.2.4
version: 19.2.4
@@ -599,13 +654,13 @@ importers:
version: 2.1.1
geist:
specifier: ^1.7.0
- version: 1.7.0(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))
+ version: 1.7.0(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))
lucide-react:
specifier: ^0.575.0
version: 0.575.0(react@19.2.4)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
radix-ui:
specifier: ^1.4.3
version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -728,7 +783,7 @@ importers:
devDependencies:
'@tailwindcss/vite':
specifier: ^4.2.1
- version: 4.2.1(vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 4.2.1(vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/react':
specifier: 19.2.3
version: 19.2.3
@@ -737,7 +792,7 @@ importers:
version: 19.2.3(@types/react@19.2.3)
'@vitejs/plugin-react':
specifier: ^5.1.4
- version: 5.1.4(vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 5.1.4(vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
tailwindcss:
specifier: ^4.2.1
version: 4.2.1
@@ -749,10 +804,10 @@ importers:
version: 5.9.3
vite:
specifier: ^6.3.5
- version: 6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-plugin-singlefile:
specifier: ^2.3.0
- version: 2.3.0(rollup@4.55.1)(vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 2.3.0(rollup@4.55.1)(vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
examples/no-ai:
dependencies:
@@ -776,7 +831,7 @@ importers:
version: 0.563.0(react@19.2.4)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
radix-ui:
specifier: ^1.4.3
version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -861,7 +916,7 @@ importers:
version: 0.575.0(react@19.2.4)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
radix-ui:
specifier: ^1.4.3
version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -1001,7 +1056,7 @@ importers:
version: 0.575.0(react@19.2.4)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
radix-ui:
specifier: ^1.4.3
version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -1065,7 +1120,7 @@ importers:
version: 9.5.0(@types/react@19.2.3)(expo-asset@12.0.12(expo@54.0.33)(react-native@0.83.1(@babel/core@7.29.0)(@types/react@19.2.3)(react@19.2.4))(react@19.2.4))(expo-file-system@19.0.21(expo@54.0.33)(react-native@0.83.1(@babel/core@7.29.0)(@types/react@19.2.3)(react@19.2.4)))(expo@54.0.33)(immer@11.1.4)(react-dom@19.2.4(react@19.2.4))(react-native@0.83.1(@babel/core@7.29.0)(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)(three@0.183.2)
next:
specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
react:
specifier: 19.2.4
version: 19.2.4
@@ -1138,7 +1193,7 @@ importers:
version: 2.1.1
next:
specifier: 16.1.1
- version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -1206,10 +1261,10 @@ importers:
version: 5.9.3
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-plugin-solid:
specifier: ^2.11.10
- version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
examples/stripe-app/api:
dependencies:
@@ -1221,7 +1276,7 @@ importers:
version: 6.0.103(zod@4.3.6)
next:
specifier: ^16.1.6
- version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
react:
specifier: ^19.1.0
version: 19.2.4
@@ -1312,7 +1367,7 @@ importers:
devDependencies:
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.4
- version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
svelte-check:
specifier: ^4.3.6
version: 4.4.3(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3)
@@ -1321,7 +1376,7 @@ importers:
version: 5.9.3
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
examples/svelte-chat:
dependencies:
@@ -1367,19 +1422,19 @@ importers:
version: 0.561.0(svelte@5.53.5)
'@sveltejs/adapter-auto':
specifier: ^7.0.0
- version: 7.0.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))
+ version: 7.0.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))
'@sveltejs/kit':
specifier: ^2.50.2
- version: 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.4
- version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@tailwindcss/vite':
specifier: ^4.0.0
- version: 4.2.1(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 4.2.1(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
bits-ui:
specifier: ^2.14.4
- version: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
+ version: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
svelte:
specifier: ^5.49.2
version: 5.53.5
@@ -1397,7 +1452,7 @@ importers:
version: 5.9.3
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
examples/vite-renderers:
dependencies:
@@ -1437,7 +1492,7 @@ importers:
devDependencies:
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.4
- version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/react':
specifier: ^19.2.14
version: 19.2.14
@@ -1446,19 +1501,19 @@ importers:
version: 19.2.3(@types/react@19.2.14)
'@vitejs/plugin-react':
specifier: ^5.1.4
- version: 5.1.4(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 5.1.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@vitejs/plugin-vue':
specifier: ^6.0.4
- version: 6.0.4(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.29(typescript@5.9.3))
+ version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.29(typescript@5.9.3))
typescript:
specifier: ^5.9.3
version: 5.9.3
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-plugin-solid:
specifier: ^2.11.10
- version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
examples/vue:
dependencies:
@@ -1477,17 +1532,60 @@ importers:
devDependencies:
'@vitejs/plugin-vue':
specifier: ^6.0.4
- version: 6.0.4(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.29(typescript@5.9.3))
+ version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.29(typescript@5.9.3))
typescript:
specifier: ^5.9.3
version: 5.9.3
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vue-tsc:
specifier: ^3.2.5
version: 3.2.5(typescript@5.9.3)
+ packages/angular:
+ dependencies:
+ '@json-render/core':
+ specifier: workspace:*
+ version: link:../core
+ zod:
+ specifier: ^4.0.0
+ version: 4.3.6
+ devDependencies:
+ '@angular/common':
+ specifier: ^21.2.5
+ version: 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/compiler':
+ specifier: ^21.2.5
+ version: 21.2.5
+ '@angular/compiler-cli':
+ specifier: ^21.2.5
+ version: 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ '@angular/core':
+ specifier: ^21.2.5
+ version: 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser':
+ specifier: ^21.2.5
+ version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/platform-browser-dynamic':
+ specifier: ^21.2.5
+ version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))
+ '@internal/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
+ rxjs:
+ specifier: ^7.8.2
+ version: 7.8.2
+ tsup:
+ specifier: ^8.0.2
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)
+ typescript:
+ specifier: ^5.9.2
+ version: 5.9.3
+ zone.js:
+ specifier: ^0.16.1
+ version: 0.16.1
+
packages/codegen:
dependencies:
'@json-render/core':
@@ -1545,7 +1643,7 @@ importers:
version: 5.2.0(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-turbo:
specifier: ^2.7.1
- version: 2.7.4(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.4)
+ version: 2.7.4(eslint@9.39.2(jiti@2.6.1))(turbo@2.8.20)
globals:
specifier: ^16.5.0
version: 16.5.0
@@ -1613,7 +1711,7 @@ importers:
version: 19.2.3
tsup:
specifier: ^8.0.2
- version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)
typescript:
specifier: ^5.4.5
version: 5.9.3
@@ -1978,7 +2076,7 @@ importers:
version: 0.577.0(svelte@5.54.1)
bits-ui:
specifier: ^2.16.3
- version: 2.16.3(@internationalized/date@3.12.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
+ version: 2.16.3(@internationalized/date@3.12.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -2015,7 +2113,7 @@ importers:
version: 2.5.7(svelte@5.54.1)(typescript@5.9.3)
'@sveltejs/vite-plugin-svelte':
specifier: ^7.0.0
- version: 7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
svelte:
specifier: ^5.54.1
version: 5.54.1
@@ -2040,7 +2138,7 @@ importers:
version: link:../typescript-config
esbuild-plugin-solid:
specifier: ^0.6.0
- version: 0.6.0(esbuild@0.27.2)(solid-js@1.9.11)
+ version: 0.6.0(esbuild@0.27.3)(solid-js@1.9.11)
solid-js:
specifier: ^1.9.0
version: 1.9.11
@@ -2071,7 +2169,7 @@ importers:
version: 2.5.7(svelte@5.53.5)(typescript@5.9.3)
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.4
- version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
svelte:
specifier: ^5.0.0
version: 5.53.5
@@ -2182,7 +2280,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.0.17
- version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
zod:
specifier: ^4.3.6
version: 4.3.6
@@ -2252,7 +2350,7 @@ importers:
version: 5.0.1
vitest:
specifier: ^4.0.17
- version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
zod:
specifier: ^4.3.6
version: 4.3.6
@@ -2352,10 +2450,194 @@ packages:
resolution: {integrity: sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==}
engines: {node: '>=18'}
+ '@algolia/abtesting@1.14.1':
+ resolution: {integrity: sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-abtesting@5.48.1':
+ resolution: {integrity: sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-analytics@5.48.1':
+ resolution: {integrity: sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-common@5.48.1':
+ resolution: {integrity: sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-insights@5.48.1':
+ resolution: {integrity: sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-personalization@5.48.1':
+ resolution: {integrity: sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-query-suggestions@5.48.1':
+ resolution: {integrity: sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-search@5.48.1':
+ resolution: {integrity: sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/ingestion@1.48.1':
+ resolution: {integrity: sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/monitoring@1.48.1':
+ resolution: {integrity: sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/recommend@5.48.1':
+ resolution: {integrity: sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-browser-xhr@5.48.1':
+ resolution: {integrity: sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-fetch@5.48.1':
+ resolution: {integrity: sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-node-http@5.48.1':
+ resolution: {integrity: sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==}
+ engines: {node: '>= 14.0.0'}
+
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@angular-devkit/architect@0.2102.3':
+ resolution: {integrity: sha512-G4wSWUbtWp1WCKw5GMRqHH8g4m5RBpIyzt8n8IX5Pm6iYe/rwCBSKL3ktEkk7AYMwjtonkRlDtAK1GScFsf1Sg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ hasBin: true
+
+ '@angular-devkit/core@21.2.3':
+ resolution: {integrity: sha512-i++JVHOijyFckjdYqKbSXUpKnvmO2a0Utt/wQVwiLAT0O9H1hR/2NGPzubB4hnLMNSyVWY8diminaF23mZ0xjA==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ chokidar: ^5.0.0
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+
+ '@angular-devkit/schematics@21.2.3':
+ resolution: {integrity: sha512-tc/bBloRTVIBWGRiMPln1QbW+2QPj+YnWL/nG79abLKWkdrL9dJLcCRXY7dsPNrxOc/QF+8tVpnr8JofhWL9cQ==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+
+ '@angular/build@21.2.3':
+ resolution: {integrity: sha512-u4bhVQruK7KOuHQuoltqlHg+szp0f6rnsGIUolJnT3ez5V6OuSoWIxUorSbvryi2DiKRD/3iwMq7qJN1aN9HCA==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ '@angular/compiler': ^21.0.0
+ '@angular/compiler-cli': ^21.0.0
+ '@angular/core': ^21.0.0
+ '@angular/localize': ^21.0.0
+ '@angular/platform-browser': ^21.0.0
+ '@angular/platform-server': ^21.0.0
+ '@angular/service-worker': ^21.0.0
+ '@angular/ssr': ^21.2.3
+ karma: ^6.4.0
+ less: ^4.2.0
+ ng-packagr: ^21.0.0
+ postcss: ^8.4.0
+ tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0
+ tslib: ^2.3.0
+ typescript: '>=5.9 <6.0'
+ vitest: ^4.0.8
+ peerDependenciesMeta:
+ '@angular/core':
+ optional: true
+ '@angular/localize':
+ optional: true
+ '@angular/platform-browser':
+ optional: true
+ '@angular/platform-server':
+ optional: true
+ '@angular/service-worker':
+ optional: true
+ '@angular/ssr':
+ optional: true
+ karma:
+ optional: true
+ less:
+ optional: true
+ ng-packagr:
+ optional: true
+ postcss:
+ optional: true
+ tailwindcss:
+ optional: true
+ vitest:
+ optional: true
+
+ '@angular/cli@21.2.3':
+ resolution: {integrity: sha512-QzDxnSy8AUOz6ca92xfbNuEmRdWRDi1dfFkxDVr+4l6XUnA9X6VmOi7ioCO1I9oDR73LXHybOqkqHBYDlqt/Ag==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ hasBin: true
+
+ '@angular/common@21.2.5':
+ resolution: {integrity: sha512-MTjCbsHBkF9W12CW9yYiTJdVfZv/qCqBCZ2iqhMpDA5G+ZJiTKP0IDTJVrx2N5iHfiJ1lnK719t/9GXROtEAvg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@angular/core': 21.2.5
+ rxjs: ^6.5.3 || ^7.4.0
+
+ '@angular/compiler-cli@21.2.5':
+ resolution: {integrity: sha512-Ox3vz6KAM7i47ujR/3M3NCOeCRn6vrC9yV1SHZRhSrYg6CWWcOMveavEEwtNjYtn3hOzrktO4CnuVwtDbU8pLg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ hasBin: true
+ peerDependencies:
+ '@angular/compiler': 21.2.5
+ typescript: '>=5.9 <6.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@angular/compiler@21.2.5':
+ resolution: {integrity: sha512-QloEsknGqLvmr+ED7QShDt7SoMY9mipV+gVnwn4hBI5sbl+TOBfYWXIaJMnxseFwSqjXTSCVGckfylIlynNcFg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
+ '@angular/core@21.2.5':
+ resolution: {integrity: sha512-JgHU134Adb1wrpyGC9ozcv3hiRAgaFTvJFn1u9OU/AVXyxu4meMmVh2hp5QhAvPnv8XQdKWWIkAY+dbpPE6zKA==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@angular/compiler': 21.2.5
+ rxjs: ^6.5.3 || ^7.4.0
+ zone.js: ~0.15.0 || ~0.16.0
+ peerDependenciesMeta:
+ '@angular/compiler':
+ optional: true
+ zone.js:
+ optional: true
+
+ '@angular/platform-browser-dynamic@21.2.5':
+ resolution: {integrity: sha512-0yDogezPC4OaqkvL/3Pa5mBodOCCUnO4CTOxC+fPy7L+dRhQfVEwtOsN9XkZv5eMGemGeCcNKdchSuYsVkCA2g==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@angular/common': 21.2.5
+ '@angular/compiler': 21.2.5
+ '@angular/core': 21.2.5
+ '@angular/platform-browser': 21.2.5
+
+ '@angular/platform-browser@21.2.5':
+ resolution: {integrity: sha512-VuuYguxjgyI4XWuoXrKynmuA3FB991pXbkNhxHeCW0yX+7DGOnGLPF1oierd4/X+IvskmN8foBZLfjyg9u4Ffg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@angular/animations': 21.2.5
+ '@angular/common': 21.2.5
+ '@angular/core': 21.2.5
+ peerDependenciesMeta:
+ '@angular/animations':
+ optional: true
+
'@antfu/ni@25.0.0':
resolution: {integrity: sha512-9q/yCljni37pkMr4sPrI3G4jqdIk074+iukc5aFJl7kmDCCsiJrbZ6zKxnES1Gwg+i9RcDZwvktl23puGslmvA==}
hasBin: true
@@ -2363,9 +2645,16 @@ packages:
'@asamuzakjp/css-color@4.1.1':
resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==}
+ '@asamuzakjp/css-color@5.0.1':
+ resolution: {integrity: sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
'@asamuzakjp/dom-selector@6.7.6':
resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==}
+ '@asamuzakjp/dom-selector@6.8.1':
+ resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==}
+
'@asamuzakjp/nwsapi@2.3.9':
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
@@ -2459,6 +2748,10 @@ packages:
resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-split-export-declaration@7.24.7':
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
@@ -2917,6 +3210,10 @@ packages:
'@borewit/text-codec@0.2.2':
resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==}
+ '@bramus/specificity@2.4.2':
+ resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==}
+ hasBin: true
+
'@changesets/apply-release-plan@7.0.14':
resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==}
@@ -2976,6 +3273,10 @@ packages:
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
engines: {node: '>=18'}
+ '@csstools/color-helpers@6.0.2':
+ resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==}
+ engines: {node: '>=20.19.0'}
+
'@csstools/css-calc@2.1.4':
resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==}
engines: {node: '>=18'}
@@ -2983,6 +3284,13 @@ packages:
'@csstools/css-parser-algorithms': ^3.0.5
'@csstools/css-tokenizer': ^3.0.4
+ '@csstools/css-calc@3.1.1':
+ resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^4.0.0
+ '@csstools/css-tokenizer': ^4.0.0
+
'@csstools/css-color-parser@3.1.0':
resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==}
engines: {node: '>=18'}
@@ -2990,20 +3298,45 @@ packages:
'@csstools/css-parser-algorithms': ^3.0.5
'@csstools/css-tokenizer': ^3.0.4
+ '@csstools/css-color-parser@4.0.2':
+ resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^4.0.0
+ '@csstools/css-tokenizer': ^4.0.0
+
'@csstools/css-parser-algorithms@3.0.5':
resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==}
engines: {node: '>=18'}
peerDependencies:
'@csstools/css-tokenizer': ^3.0.4
+ '@csstools/css-parser-algorithms@4.0.0':
+ resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ '@csstools/css-tokenizer': ^4.0.0
+
'@csstools/css-syntax-patches-for-csstree@1.0.25':
resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==}
engines: {node: '>=18'}
+ '@csstools/css-syntax-patches-for-csstree@1.1.1':
+ resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==}
+ peerDependencies:
+ css-tree: ^3.2.1
+ peerDependenciesMeta:
+ css-tree:
+ optional: true
+
'@csstools/css-tokenizer@3.0.4':
resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
engines: {node: '>=18'}
+ '@csstools/css-tokenizer@4.0.0':
+ resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==}
+ engines: {node: '>=20.19.0'}
+
'@dimforge/rapier3d-compat@0.12.0':
resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==}
@@ -3045,9 +3378,15 @@ packages:
peerDependencies:
'@noble/ciphers': ^1.0.0
+ '@emnapi/core@1.9.1':
+ resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==}
+
'@emnapi/runtime@1.8.1':
resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
+ '@emnapi/wasi-threads@1.2.0':
+ resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==}
+
'@esbuild-kit/core-utils@3.3.2':
resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
deprecated: 'Merged into tsx: https://tsx.is'
@@ -3074,6 +3413,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.27.3':
+ resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.18.20':
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
engines: {node: '>=12'}
@@ -3098,6 +3443,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.27.3':
+ resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.18.20':
resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
engines: {node: '>=12'}
@@ -3122,6 +3473,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.27.3':
+ resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.18.20':
resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
engines: {node: '>=12'}
@@ -3146,6 +3503,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.27.3':
+ resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.18.20':
resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
engines: {node: '>=12'}
@@ -3170,6 +3533,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.27.3':
+ resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.18.20':
resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
engines: {node: '>=12'}
@@ -3194,6 +3563,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.27.3':
+ resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.18.20':
resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
engines: {node: '>=12'}
@@ -3218,6 +3593,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.27.3':
+ resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.18.20':
resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
engines: {node: '>=12'}
@@ -3242,6 +3623,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.27.3':
+ resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.18.20':
resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
engines: {node: '>=12'}
@@ -3266,6 +3653,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.27.3':
+ resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.18.20':
resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
engines: {node: '>=12'}
@@ -3290,6 +3683,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.27.3':
+ resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.18.20':
resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
engines: {node: '>=12'}
@@ -3314,6 +3713,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.27.3':
+ resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.18.20':
resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
engines: {node: '>=12'}
@@ -3338,6 +3743,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.27.3':
+ resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.18.20':
resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
engines: {node: '>=12'}
@@ -3362,6 +3773,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.27.3':
+ resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.18.20':
resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
engines: {node: '>=12'}
@@ -3386,6 +3803,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.27.3':
+ resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.18.20':
resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
engines: {node: '>=12'}
@@ -3410,6 +3833,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.27.3':
+ resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.18.20':
resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
engines: {node: '>=12'}
@@ -3434,6 +3863,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.27.3':
+ resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.18.20':
resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
engines: {node: '>=12'}
@@ -3458,6 +3893,12 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.27.3':
+ resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-arm64@0.25.0':
resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
engines: {node: '>=18'}
@@ -3476,6 +3917,12 @@ packages:
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.27.3':
+ resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.18.20':
resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
engines: {node: '>=12'}
@@ -3500,6 +3947,12 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.27.3':
+ resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.25.0':
resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
engines: {node: '>=18'}
@@ -3518,6 +3971,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.27.3':
+ resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.18.20':
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
engines: {node: '>=12'}
@@ -3542,6 +4001,12 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.27.3':
+ resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openharmony-arm64@0.25.12':
resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
engines: {node: '>=18'}
@@ -3554,6 +4019,12 @@ packages:
cpu: [arm64]
os: [openharmony]
+ '@esbuild/openharmony-arm64@0.27.3':
+ resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/sunos-x64@0.18.20':
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
engines: {node: '>=12'}
@@ -3578,6 +4049,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.27.3':
+ resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.18.20':
resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
engines: {node: '>=12'}
@@ -3602,6 +4079,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.27.3':
+ resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.18.20':
resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
engines: {node: '>=12'}
@@ -3626,6 +4109,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.27.3':
+ resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.18.20':
resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
engines: {node: '>=12'}
@@ -3650,6 +4139,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.27.3':
+ resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@eslint-community/eslint-utils@4.9.1':
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -3696,6 +4191,15 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@exodus/bytes@1.15.0':
+ resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@noble/hashes': ^1.8.0 || ^2.0.0
+ peerDependenciesMeta:
+ '@noble/hashes':
+ optional: true
+
'@exodus/bytes@1.8.0':
resolution: {integrity: sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
@@ -3848,6 +4352,13 @@ packages:
'@fontsource-variable/inter@5.2.8':
resolution: {integrity: sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==}
+ '@gar/promise-retry@1.0.3':
+ resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@harperfast/extended-iterable@1.0.3':
+ resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==}
+
'@hono/node-server@1.19.9':
resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==}
engines: {node: '>=18.14.1'}
@@ -3909,105 +4420,89 @@ packages:
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
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-ppc64@1.2.4':
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
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-s390x@1.2.4':
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
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-linuxmusl-arm64@1.2.4':
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
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-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-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-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-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-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-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-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-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-wasm32@0.34.5':
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
@@ -4036,6 +4531,15 @@ packages:
resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}
engines: {node: '>=18'}
+ '@inquirer/checkbox@4.3.2':
+ resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
'@inquirer/confirm@5.1.21':
resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}
engines: {node: '>=18'}
@@ -4054,8 +4558,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/external-editor@1.0.3':
- resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}
+ '@inquirer/editor@4.2.23':
+ resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
@@ -4063,12 +4567,17 @@ packages:
'@types/node':
optional: true
- '@inquirer/figures@1.0.15':
- resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}
+ '@inquirer/expand@4.0.23':
+ resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}
engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@inquirer/type@3.0.10':
- resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}
+ '@inquirer/external-editor@1.0.3':
+ resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
@@ -4076,7 +4585,83 @@ packages:
'@types/node':
optional: true
- '@internationalized/date@3.11.0':
+ '@inquirer/figures@1.0.15':
+ resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}
+ engines: {node: '>=18'}
+
+ '@inquirer/input@4.3.1':
+ resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/number@3.0.23':
+ resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/password@4.0.23':
+ resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/prompts@7.10.1':
+ resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/rawlist@4.1.11':
+ resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/search@3.2.2':
+ resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/select@4.4.2':
+ resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/type@3.0.10':
+ resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@internationalized/date@3.11.0':
resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==}
'@internationalized/date@3.12.0':
@@ -4223,6 +4808,48 @@ packages:
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ '@listr2/prompt-adapter-inquirer@3.0.5':
+ resolution: {integrity: sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ '@inquirer/prompts': '>= 3 < 8'
+ listr2: 9.0.5
+
+ '@lmdb/lmdb-darwin-arm64@3.5.1':
+ resolution: {integrity: sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@lmdb/lmdb-darwin-x64@3.5.1':
+ resolution: {integrity: sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@lmdb/lmdb-linux-arm64@3.5.1':
+ resolution: {integrity: sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@lmdb/lmdb-linux-arm@3.5.1':
+ resolution: {integrity: sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==}
+ cpu: [arm]
+ os: [linux]
+
+ '@lmdb/lmdb-linux-x64@3.5.1':
+ resolution: {integrity: sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==}
+ cpu: [x64]
+ os: [linux]
+
+ '@lmdb/lmdb-win32-arm64@3.5.1':
+ resolution: {integrity: sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@lmdb/lmdb-win32-x64@3.5.1':
+ resolution: {integrity: sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==}
+ cpu: [x64]
+ os: [win32]
+
'@lucide/svelte@0.561.0':
resolution: {integrity: sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==}
peerDependencies:
@@ -4304,10 +4931,149 @@ packages:
peerDependencies:
three: '>= 0.159.0'
+ '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
+ resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3':
+ resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3':
+ resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3':
+ resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3':
+ resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3':
+ resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==}
+ cpu: [x64]
+ os: [win32]
+
'@mswjs/interceptors@0.41.3':
resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==}
engines: {node: '>=18'}
+ '@napi-rs/nice-android-arm-eabi@1.1.1':
+ resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+
+ '@napi-rs/nice-android-arm64@1.1.1':
+ resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@napi-rs/nice-darwin-arm64@1.1.1':
+ resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@napi-rs/nice-darwin-x64@1.1.1':
+ resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@napi-rs/nice-freebsd-x64@1.1.1':
+ resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@napi-rs/nice-linux-arm-gnueabihf@1.1.1':
+ resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@napi-rs/nice-linux-arm64-gnu@1.1.1':
+ resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-arm64-musl@1.1.1':
+ resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-ppc64-gnu@1.1.1':
+ resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==}
+ engines: {node: '>= 10'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-riscv64-gnu@1.1.1':
+ resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==}
+ engines: {node: '>= 10'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-s390x-gnu@1.1.1':
+ resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==}
+ engines: {node: '>= 10'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@napi-rs/nice-linux-x64-gnu@1.1.1':
+ resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-x64-musl@1.1.1':
+ resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@napi-rs/nice-openharmony-arm64@1.1.1':
+ resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@napi-rs/nice-win32-arm64-msvc@1.1.1':
+ resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@napi-rs/nice-win32-ia32-msvc@1.1.1':
+ resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@napi-rs/nice-win32-x64-msvc@1.1.1':
+ resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@napi-rs/nice@1.1.1':
+ resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==}
+ engines: {node: '>= 10'}
+
+ '@napi-rs/wasm-runtime@1.1.1':
+ resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
+
'@next/env@16.1.1':
resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==}
@@ -4357,56 +5123,48 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@next/swc-linux-arm64-gnu@16.1.6':
resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@next/swc-linux-arm64-musl@16.1.1':
resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@next/swc-linux-arm64-musl@16.1.6':
resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@next/swc-linux-x64-gnu@16.1.1':
resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@next/swc-linux-x64-gnu@16.1.6':
resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@next/swc-linux-x64-musl@16.1.1':
resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@next/swc-linux-x64-musl@16.1.6':
resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@next/swc-win32-arm64-msvc@16.1.1':
resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==}
@@ -4456,6 +5214,43 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@npmcli/agent@4.0.0':
+ resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/fs@5.0.0':
+ resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/git@7.0.2':
+ resolution: {integrity: sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/installed-package-contents@4.0.0':
+ resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
+ '@npmcli/node-gyp@5.0.0':
+ resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/package-json@7.0.5':
+ resolution: {integrity: sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/promise-spawn@9.0.1':
+ resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/redact@4.0.0':
+ resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@npmcli/run-script@10.0.4':
+ resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
'@one-ini/wasm@0.1.1':
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
@@ -4472,6 +5267,91 @@ packages:
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
+ '@oxc-project/types@0.113.0':
+ resolution: {integrity: sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==}
+
+ '@parcel/watcher-android-arm64@2.5.6':
+ resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ '@parcel/watcher-darwin-arm64@2.5.6':
+ resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@parcel/watcher-darwin-x64@2.5.6':
+ resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@parcel/watcher-freebsd-x64@2.5.6':
+ resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@parcel/watcher-linux-arm-glibc@2.5.6':
+ resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm-musl@2.5.6':
+ resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.6':
+ resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-musl@2.5.6':
+ resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@parcel/watcher-linux-x64-glibc@2.5.6':
+ resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@parcel/watcher-linux-x64-musl@2.5.6':
+ resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@parcel/watcher-win32-arm64@2.5.6':
+ resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@parcel/watcher-win32-ia32@2.5.6':
+ resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@parcel/watcher-win32-x64@2.5.6':
+ resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@parcel/watcher@2.5.6':
+ resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
+ engines: {node: '>= 10.0.0'}
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -5676,25 +6556,21 @@ packages:
resolution: {integrity: sha512-FZoP9HAqB4KCsl2fa3KvlHBm5/2U/RqYUa5hQrmn4oFFHXwZTn8FM35ZylA+fRXIbPORWYOlSrq866iF77ONoQ==}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@remotion/compositor-linux-arm64-musl@4.0.418':
resolution: {integrity: sha512-lRPO61+bdbytAZIRDCZGKf5o7kwVe1bYM2RMh1DZp5BXLbdqC6nHwLcJPVMu/ua6R6i35WEzvzz1a04j2PTTrg==}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@remotion/compositor-linux-x64-gnu@4.0.418':
resolution: {integrity: sha512-6Qi6DPOrDy/O+eMgP2h8BCI8S70ZzopHU8+uY1d/VE68VdlC+Y//RTRLN58XqCy+dqpkRTmd+cu85doLvJmi1g==}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@remotion/compositor-linux-x64-musl@4.0.418':
resolution: {integrity: sha512-rw8/2wi4+HsD9CbeH63VpGlNVjIVeKK362Cuf7BvjaePl2x+hIGWDNxlVDnd5um1GDSNNJM56W+kaz/hFiBFdg==}
cpu: [x64]
os: [linux]
- libc: [musl]
'@remotion/compositor-win32-x64-msvc@4.0.418':
resolution: {integrity: sha512-9FnuUT3eRmdzXDmdkQbqJFpQ6XyUAaOq9B0poZ8dgZYt6Zb4K3GxmL0y0S1eZojKcjcN4NbTe0eoj6Vb8HQfOg==}
@@ -5786,28 +6662,24 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@resvg/resvg-js-linux-arm64-musl@2.6.2':
resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@resvg/resvg-js-linux-x64-gnu@2.6.2':
resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@resvg/resvg-js-linux-x64-musl@2.6.2':
resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@resvg/resvg-js-win32-arm64-msvc@2.6.2':
resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==}
@@ -5831,12 +6703,92 @@ packages:
resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==}
engines: {node: '>= 10'}
- '@rolldown/pluginutils@1.0.0-rc.2':
- resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==}
+ '@rolldown/binding-android-arm64@1.0.0-rc.4':
+ resolution: {integrity: sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.4':
+ resolution: {integrity: sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.4':
+ resolution: {integrity: sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.4':
+ resolution: {integrity: sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4':
+ resolution: {integrity: sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4':
+ resolution: {integrity: sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4':
+ resolution: {integrity: sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4':
+ resolution: {integrity: sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.4':
+ resolution: {integrity: sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.4':
+ resolution: {integrity: sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.4':
+ resolution: {integrity: sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4':
+ resolution: {integrity: sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4':
+ resolution: {integrity: sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.0-rc.2':
+ resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==}
'@rolldown/pluginutils@1.0.0-rc.3':
resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==}
+ '@rolldown/pluginutils@1.0.0-rc.4':
+ resolution: {integrity: sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==}
+
'@rollup/rollup-android-arm-eabi@4.55.1':
resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==}
cpu: [arm]
@@ -5871,79 +6823,66 @@ packages:
resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==}
cpu: [arm]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.55.1':
resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==}
cpu: [arm]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.55.1':
resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.55.1':
resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.55.1':
resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==}
cpu: [loong64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.55.1':
resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==}
cpu: [loong64]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.55.1':
resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==}
cpu: [ppc64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.55.1':
resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==}
cpu: [ppc64]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.55.1':
resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==}
cpu: [riscv64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.55.1':
resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==}
cpu: [riscv64]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.55.1':
resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==}
cpu: [s390x]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.55.1':
resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.55.1':
resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==}
cpu: [x64]
os: [linux]
- libc: [musl]
'@rollup/rollup-openbsd-x64@4.55.1':
resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==}
@@ -5975,6 +6914,10 @@ packages:
cpu: [x64]
os: [win32]
+ '@schematics/angular@21.2.3':
+ resolution: {integrity: sha512-rCEprgpNbJLl9Rm/t92eRYc1eIqD4BAJqB1OO8fzQolyDajCcOBpohjXkuLYSwK9RMyS6f+szNnYGOQawlrPYw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
@@ -6007,6 +6950,30 @@ packages:
engines: {node: '>= 8.0.0'}
hasBin: true
+ '@sigstore/bundle@4.0.0':
+ resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@sigstore/core@3.2.0':
+ resolution: {integrity: sha512-kxHrDQ9YgfrWUSXU0cjsQGv8JykOFZQ9ErNKbFPWzk3Hgpwu8x2hHrQ9IdA8yl+j9RTLTC3sAF3Tdq1IQCP4oA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@sigstore/protobuf-specs@0.5.0':
+ resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==}
+ engines: {node: ^18.17.0 || >=20.5.0}
+
+ '@sigstore/sign@4.1.1':
+ resolution: {integrity: sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@sigstore/tuf@4.0.2':
+ resolution: {integrity: sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@sigstore/verify@3.1.0':
+ resolution: {integrity: sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
'@sinclair/typebox@0.24.51':
resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==}
@@ -6228,84 +7195,72 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@tailwindcss/oxide-linux-arm64-gnu@4.2.1':
resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@tailwindcss/oxide-linux-arm64-gnu@4.2.2':
resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@tailwindcss/oxide-linux-arm64-musl@4.2.1':
resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@tailwindcss/oxide-linux-arm64-musl@4.2.2':
resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@tailwindcss/oxide-linux-x64-gnu@4.2.1':
resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==}
engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@tailwindcss/oxide-linux-x64-gnu@4.2.2':
resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==}
engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@tailwindcss/oxide-linux-x64-musl@4.2.1':
resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==}
engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@tailwindcss/oxide-linux-x64-musl@4.2.2':
resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==}
engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
@@ -6454,9 +7409,50 @@ packages:
'@ts-morph/common@0.27.0':
resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==}
+ '@tufjs/canonical-json@2.0.0':
+ resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==}
+ engines: {node: ^16.14.0 || >=18.0.0}
+
+ '@tufjs/models@4.1.0':
+ resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ '@turbo/darwin-64@2.8.20':
+ resolution: {integrity: sha512-FQ9EX1xMU5nbwjxXxM3yU88AQQ6Sqc6S44exPRroMcx9XZHqqppl5ymJF0Ig/z3nvQNwDmz1Gsnvxubo+nXWjQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@turbo/darwin-arm64@2.8.20':
+ resolution: {integrity: sha512-Gpyh9ATFGThD6/s9L95YWY54cizg/VRWl2B67h0yofG8BpHf67DFAh9nuJVKG7bY0+SBJDAo5cMur+wOl9YOYw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@turbo/linux-64@2.8.20':
+ resolution: {integrity: sha512-p2QxWUYyYUgUFG0b0kR+pPi8t7c9uaVlRtjTTI1AbCvVqkpjUfCcReBn6DgG/Hu8xrWdKLuyQFaLYFzQskZbcA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@turbo/linux-arm64@2.8.20':
+ resolution: {integrity: sha512-Gn5yjlZGLRZWarLWqdQzv0wMqyBNIdq1QLi48F1oY5Lo9kiohuf7BPQWtWxeNVS2NgJ1+nb/DzK1JduYC4AWOA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@turbo/windows-64@2.8.20':
+ resolution: {integrity: sha512-vyaDpYk/8T6Qz5V/X+ihKvKFEZFUoC0oxYpC1sZanK6gaESJlmV3cMRT3Qhcg4D2VxvtC2Jjs9IRkrZGL+exLw==}
+ cpu: [x64]
+ os: [win32]
+
+ '@turbo/windows-arm64@2.8.20':
+ resolution: {integrity: sha512-voicVULvUV5yaGXo0Iue13BcHGYW3u0VgqSbfQwBaHbpj1zLjYV4KIe+7fYIo6DO8FVUJzxFps3ODCQG/Wy2Qw==}
+ cpu: [arm64]
+ os: [win32]
+
'@tweenjs/tween.js@23.1.3':
resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==}
+ '@tybys/wasm-util@0.10.1':
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
@@ -6568,6 +7564,9 @@ packages:
'@types/node@22.19.6':
resolution: {integrity: sha512-qm+G8HuG6hOHQigsi7VGuLjUVu6TtBo/F05zvX04Mw2uCg9Dv0Qxy3Qw7j41SidlTcl5D/5yg0SEZqOB+EqZnQ==}
+ '@types/node@24.12.0':
+ resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==}
+
'@types/offscreencanvas@2019.7.3':
resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==}
@@ -6873,6 +7872,12 @@ packages:
peerDependencies:
react: ^18.0.0 || ^19.0.0
+ '@vitejs/plugin-basic-ssl@2.1.4':
+ resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ peerDependencies:
+ vite: ^6.0.0 || ^7.0.0
+
'@vitejs/plugin-react@5.1.4':
resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -7028,6 +8033,9 @@ packages:
'@xtuc/long@4.2.2':
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+ '@yarnpkg/lockfile@1.1.0':
+ resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
+
abab@2.0.6:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
deprecated: Use your platform's native atob() and btoa() methods instead
@@ -7036,6 +8044,10 @@ packages:
resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ abbrev@4.0.0:
+ resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
abort-controller@3.0.0:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
engines: {node: '>=6.5'}
@@ -7154,6 +8166,13 @@ packages:
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+ ajv@8.18.0:
+ resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
+
+ algoliasearch@5.48.1:
+ resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==}
+ engines: {node: '>= 14.0.0'}
+
alien-signals@3.1.2:
resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==}
@@ -7172,10 +8191,6 @@ packages:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
engines: {node: '>=8'}
- ansi-escapes@7.2.0:
- resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==}
- engines: {node: '>=18'}
-
ansi-escapes@7.3.0:
resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
engines: {node: '>=18'}
@@ -7442,6 +8457,10 @@ packages:
just-bash:
optional: true
+ beasties@0.4.1:
+ resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==}
+ engines: {node: '>=18.0.0'}
+
better-opn@3.0.2:
resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
engines: {node: '>=12.0.0'}
@@ -7481,6 +8500,9 @@ packages:
resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==}
engines: {node: '>=18'}
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
bplist-creator@0.1.0:
resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==}
@@ -7557,6 +8579,10 @@ packages:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
+ cacache@20.0.4:
+ resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -7691,6 +8717,10 @@ packages:
resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
+ cli-spinners@3.4.0:
+ resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==}
+ engines: {node: '>=18.20'}
+
cli-truncate@5.1.1:
resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==}
engines: {node: '>=20'}
@@ -7709,6 +8739,10 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
+ cliui@9.0.1:
+ resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
+ engines: {node: '>=20'}
+
clone@1.0.4:
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
engines: {node: '>=0.8'}
@@ -7914,6 +8948,9 @@ packages:
peerDependencies:
webpack: ^4.27.0 || ^5.0.0
+ css-select@6.0.0:
+ resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==}
+
css-to-react-native@3.2.0:
resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
@@ -7921,6 +8958,10 @@ packages:
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+ css-what@7.0.0:
+ resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==}
+ engines: {node: '>= 6'}
+
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@@ -7940,6 +8981,10 @@ packages:
resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==}
engines: {node: '>=20'}
+ cssstyle@6.2.0:
+ resolution: {integrity: sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig==}
+ engines: {node: '>=20'}
+
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
@@ -7999,6 +9044,10 @@ packages:
resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==}
engines: {node: '>=20'}
+ data-urls@7.0.0:
+ resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
data-view-buffer@1.0.2:
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
engines: {node: '>= 0.4'}
@@ -8425,6 +9474,9 @@ packages:
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
engines: {node: '>=18'}
+ err-code@2.0.3:
+ resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
+
error-ex@1.3.4:
resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
@@ -8506,6 +9558,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.27.3:
+ resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -9048,6 +10105,10 @@ packages:
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
engines: {node: '>=6 <7 || >=8'}
+ fs-minipass@3.0.3:
+ resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
fs-monkey@1.0.3:
resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==}
@@ -9312,6 +10373,10 @@ packages:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
engines: {node: ^16.14.0 || >=18.0.0}
+ hosted-git-info@9.0.2:
+ resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
hsl-to-hex@1.0.0:
resolution: {integrity: sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==}
@@ -9342,9 +10407,15 @@ packages:
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+ htmlparser2@10.1.0:
+ resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==}
+
htmlparser2@8.0.2:
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+
http-errors@2.0.1:
resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
engines: {node: '>= 0.8'}
@@ -9402,6 +10473,10 @@ packages:
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ ignore-walk@8.0.0:
+ resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -9421,6 +10496,9 @@ packages:
immer@11.1.4:
resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==}
+ immutable@5.1.5:
+ resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==}
+
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
@@ -9736,6 +10814,10 @@ packages:
resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==}
engines: {node: '>=18'}
+ isexe@4.0.0:
+ resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==}
+ engines: {node: '>=20'}
+
istanbul-lib-coverage@3.2.2:
resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
engines: {node: '>=8'}
@@ -9744,6 +10826,10 @@ packages:
resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
engines: {node: '>=8'}
+ istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
+
istanbul-lib-report@3.0.1:
resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
engines: {node: '>=10'}
@@ -10053,6 +11139,15 @@ packages:
canvas:
optional: true
+ jsdom@28.1.0:
+ resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ canvas: ^3.0.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
@@ -10064,6 +11159,10 @@ packages:
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ json-parse-even-better-errors@5.0.0:
+ resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -10084,12 +11183,19 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
jsonfile@6.2.0:
resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
+ jsonparse@1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+
jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@@ -10229,84 +11335,72 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
lightningcss-linux-arm64-gnu@1.31.1:
resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
lightningcss-linux-arm64-gnu@1.32.0:
resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [musl]
lightningcss-linux-arm64-musl@1.31.1:
resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [musl]
lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [musl]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [glibc]
lightningcss-linux-x64-gnu@1.31.1:
resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [glibc]
lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [glibc]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [musl]
lightningcss-linux-x64-musl@1.31.1:
resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [musl]
lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [musl]
lightningcss-win32-arm64-msvc@1.30.2:
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
@@ -10375,6 +11469,10 @@ packages:
resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==}
engines: {node: '>=20.0.0'}
+ lmdb@3.5.1:
+ resolution: {integrity: sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==}
+ hasBin: true
+
load-tsconfig@0.2.5:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -10427,6 +11525,10 @@ packages:
resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
engines: {node: '>=18'}
+ log-symbols@7.0.1:
+ resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==}
+ engines: {node: '>=18'}
+
log-update@6.1.0:
resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
engines: {node: '>=18'}
@@ -10445,6 +11547,10 @@ packages:
resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
engines: {node: 20 || >=22}
+ lru-cache@11.2.7:
+ resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==}
+ engines: {node: 20 || >=22}
+
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -10508,6 +11614,10 @@ packages:
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+ make-fetch-happen@15.0.5:
+ resolution: {integrity: sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
makeerror@1.0.12:
resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
@@ -10855,6 +11965,30 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ minipass-collect@2.0.1:
+ resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minipass-fetch@5.0.2:
+ resolution: {integrity: sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ minipass-flush@1.0.5:
+ resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
+ engines: {node: '>= 8'}
+
+ minipass-pipeline@1.2.4:
+ resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
+ engines: {node: '>=8'}
+
+ minipass-sized@2.0.0:
+ resolution: {integrity: sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==}
+ engines: {node: '>=8'}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -10892,6 +12026,13 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ msgpackr-extract@3.0.3:
+ resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==}
+ hasBin: true
+
+ msgpackr@1.11.9:
+ resolution: {integrity: sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==}
+
msw@2.12.10:
resolution: {integrity: sha512-G3VUymSE0/iegFnuipujpwyTM2GuZAKXNeerUSrG2+Eg391wW63xFs5ixWsK9MWzr1AGoSkYGmyAzNgbR3+urw==}
engines: {node: '>=18'}
@@ -11006,6 +12147,12 @@ packages:
resolution: {integrity: sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==}
engines: {node: '>=10'}
+ node-addon-api@6.1.0:
+ resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
+
+ node-addon-api@7.1.1:
+ resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+
node-addon-api@8.6.0:
resolution: {integrity: sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==}
engines: {node: ^18 || ^20 || >= 21}
@@ -11023,10 +12170,19 @@ packages:
resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==}
engines: {node: '>= 6.13.0'}
+ node-gyp-build-optional-packages@5.2.2:
+ resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==}
+ hasBin: true
+
node-gyp-build@4.8.4:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true
+ node-gyp@12.2.0:
+ resolution: {integrity: sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
node-int64@0.4.0:
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
@@ -11043,6 +12199,11 @@ packages:
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
+ nopt@9.0.0:
+ resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -11050,10 +12211,38 @@ packages:
normalize-svg-path@1.1.0:
resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==}
+ npm-bundled@5.0.0:
+ resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ npm-install-checks@8.0.0:
+ resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ npm-normalize-package-bin@5.0.0:
+ resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
npm-package-arg@11.0.3:
resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==}
engines: {node: ^16.14.0 || >=18.0.0}
+ npm-package-arg@13.0.2:
+ resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ npm-packlist@10.0.4:
+ resolution: {integrity: sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ npm-pick-manifest@11.0.3:
+ resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
+ npm-registry-fetch@19.1.1:
+ resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -11062,6 +12251,9 @@ packages:
resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
engines: {node: '>=18'}
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
nullthrows@1.1.1:
resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
@@ -11164,6 +12356,13 @@ packages:
resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==}
engines: {node: '>=18'}
+ ora@9.3.0:
+ resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==}
+ engines: {node: '>=20'}
+
+ ordered-binary@1.6.1:
+ resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==}
+
outdent@0.5.0:
resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
@@ -11198,6 +12397,10 @@ packages:
resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
engines: {node: '>=6'}
+ p-map@7.0.4:
+ resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==}
+ engines: {node: '>=18'}
+
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
@@ -11211,6 +12414,11 @@ packages:
package-manager-detector@1.6.0:
resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==}
+ pacote@21.3.1:
+ resolution: {integrity: sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
pako@0.2.9:
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
@@ -11245,6 +12453,12 @@ packages:
parse-svg-path@0.1.2:
resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==}
+ parse5-html-rewriting-stream@8.0.0:
+ resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==}
+
+ parse5-sax-parser@8.0.0:
+ resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==}
+
parse5@6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
@@ -11346,6 +12560,10 @@ packages:
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
engines: {node: '>= 6'}
+ piscina@5.1.4:
+ resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==}
+ engines: {node: '>=20.x'}
+
pkce-challenge@5.0.1:
resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==}
engines: {node: '>=16.20.0'}
@@ -11387,6 +12605,9 @@ packages:
yaml:
optional: true
+ postcss-media-query-parser@0.2.3:
+ resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
+
postcss-modules-extract-imports@3.1.0:
resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==}
engines: {node: ^10 || ^12 || >= 14}
@@ -11411,6 +12632,12 @@ packages:
peerDependencies:
postcss: ^8.1.0
+ postcss-safe-parser@7.0.1:
+ resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==}
+ engines: {node: '>=18.0'}
+ peerDependencies:
+ postcss: ^8.4.31
+
postcss-selector-parser@7.1.1:
resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
engines: {node: '>=4'}
@@ -11466,6 +12693,11 @@ packages:
engines: {node: '>=14'}
hasBin: true
+ prettier@3.8.1:
+ resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
+ engines: {node: '>=14'}
+ hasBin: true
+
pretty-bytes@5.6.0:
resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
engines: {node: '>=6'}
@@ -11498,10 +12730,18 @@ packages:
resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ proc-log@6.1.0:
+ resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
+ promise-retry@2.0.1:
+ resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
+ engines: {node: '>=10'}
+
promise-worker-transferable@1.0.4:
resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==}
@@ -11846,6 +13086,9 @@ packages:
redux@5.0.1:
resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==}
+ reflect-metadata@0.2.2:
+ resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
+
reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
@@ -11998,6 +13241,10 @@ packages:
restructure@3.0.2:
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
retry@0.13.1:
resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
engines: {node: '>= 4'}
@@ -12017,6 +13264,11 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
+ rolldown@1.0.0-rc.4:
+ resolution: {integrity: sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
rollup@4.55.1:
resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -12047,6 +13299,9 @@ packages:
'@sveltejs/kit':
optional: true
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+
sade@1.8.1:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
@@ -12069,6 +13324,11 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ sass@1.97.3:
+ resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
satori@0.19.3:
resolution: {integrity: sha512-dKr8TNYSyceWqBoTHWntjy25xaiWMw5GF+f8QOqFsov9OpTswLs7xdbvZudGRp9jkzbhv/4mVjVZYFtpruGKiA==}
engines: {node: '>=16'}
@@ -12253,6 +13513,10 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
+ sigstore@4.1.0:
+ resolution: {integrity: sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
@@ -12288,10 +13552,22 @@ packages:
resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
engines: {node: '>=8.0.0'}
+ smart-buffer@4.2.0:
+ resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+
smol-toml@1.6.0:
resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==}
engines: {node: '>= 18'}
+ socks-proxy-agent@8.0.5:
+ resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
+ engines: {node: '>= 14'}
+
+ socks@2.8.7:
+ resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
+ engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+
solid-js@1.9.11:
resolution: {integrity: sha512-WEJtcc5mkh/BnHA6Yrg4whlF8g6QwpmXXRg4P2ztPmcKeHHlH4+djYecBLhSpecZY2RRECXYUwIc/C2r3yzQ4Q==}
@@ -12340,6 +13616,15 @@ packages:
spawndamnit@3.0.1:
resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==}
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@4.0.0:
+ resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==}
+
+ spdx-license-ids@3.0.23:
+ resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==}
+
split-on-first@1.1.0:
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
engines: {node: '>=6'}
@@ -12353,6 +13638,10 @@ packages:
sql.js@1.14.1:
resolution: {integrity: sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==}
+ ssri@13.0.1:
+ resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
stack-utils@2.0.6:
resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
engines: {node: '>=10'}
@@ -12391,6 +13680,10 @@ packages:
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
engines: {node: '>=18'}
+ stdin-discarder@0.3.1:
+ resolution: {integrity: sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==}
+ engines: {node: '>=18'}
+
stop-iteration-iterator@1.1.0:
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
engines: {node: '>= 0.4'}
@@ -12921,44 +14214,18 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
+ tuf-js@4.1.0:
+ resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
tunnel-rat@0.1.2:
resolution: {integrity: sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==}
- turbo-darwin-64@2.7.4:
- resolution: {integrity: sha512-xDR30ltfkSsRfGzABBckvl1nz1cZ3ssTujvdj+TPwOweeDRvZ0e06t5DS0rmRBvyKpgGs42K/EK6Mn2qLlFY9A==}
- cpu: [x64]
- os: [darwin]
-
- turbo-darwin-arm64@2.7.4:
- resolution: {integrity: sha512-P7sjqXtOL/+nYWPvcDGWhi8wf8M8mZHHB8XEzw2VX7VJrS8IGHyJHGD1AYfDvhAEcr7pnk3gGifz3/xyhI655w==}
- cpu: [arm64]
- os: [darwin]
-
- turbo-linux-64@2.7.4:
- resolution: {integrity: sha512-GofFOxRO/IhG8BcPyMSSB3Y2+oKQotsaYbHxL9yD6JPb20/o35eo+zUSyazOtilAwDHnak5dorAJFoFU8MIg2A==}
- cpu: [x64]
- os: [linux]
-
- turbo-linux-arm64@2.7.4:
- resolution: {integrity: sha512-+RQKgNjksVPxYAyAgmDV7w/1qj++qca+nSNTAOKGOfJiDtSvRKoci89oftJ6anGs00uamLKVEQ712TI/tfNAIw==}
- cpu: [arm64]
- os: [linux]
-
- turbo-windows-64@2.7.4:
- resolution: {integrity: sha512-rfak1+g+ON3czs1mDYsCS4X74ZmK6gOgRQTXjDICtzvR4o61paqtgAYtNPofcVsMWeF4wvCajSeoAkkeAnQ1kg==}
- cpu: [x64]
- os: [win32]
-
- turbo-windows-arm64@2.7.4:
- resolution: {integrity: sha512-1ZgBNjNRbDu/fPeqXuX9i26x3CJ/Y1gcwUpQ+Vp7kN9Un6RZ9kzs164f/knrjcu5E+szCRexVjRSJay1k5jApA==}
- cpu: [arm64]
- os: [win32]
-
- turbo@2.7.4:
- resolution: {integrity: sha512-bkO4AddmDishzJB2ze7aYYPaejMoJVfS0XnaR6RCdXFOY8JGJfQE+l9fKiV7uDPa5Ut44gmOWJL3894CIMeH9g==}
+ turbo@2.8.20:
+ resolution: {integrity: sha512-Rb4qk5YT8RUwwdXtkLpkVhNEe/lor6+WV7S5tTlLpxSz6MjV5Qi8jGNn4gS6NAvrYGA/rNrE6YUQM85sCZUDbQ==}
hasBin: true
turndown@7.2.2:
@@ -13058,10 +14325,21 @@ packages:
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+
undici@6.23.0:
resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==}
engines: {node: '>=18.17'}
+ undici@7.22.0:
+ resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==}
+ engines: {node: '>=20.18.1'}
+
+ undici@7.24.5:
+ resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==}
+ engines: {node: '>=20.18.1'}
+
unicode-canonical-property-names-ecmascript@2.0.1:
resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
engines: {node: '>=4'}
@@ -13424,6 +14702,9 @@ packages:
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ weak-lru-cache@1.2.2:
+ resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==}
+
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
@@ -13480,6 +14761,10 @@ packages:
resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
engines: {node: '>=18'}
+ whatwg-mimetype@5.0.0:
+ resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==}
+ engines: {node: '>=20'}
+
whatwg-url-without-unicode@8.0.0-3:
resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==}
engines: {node: '>=10'}
@@ -13488,6 +14773,10 @@ packages:
resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==}
engines: {node: '>=20'}
+ whatwg-url@16.0.1:
+ resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
whatwg-url@7.1.0:
resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
@@ -13521,6 +14810,11 @@ packages:
engines: {node: ^16.13.0 || >=18.0.0}
hasBin: true
+ which@6.0.1:
+ resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
why-is-node-running@2.3.0:
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
@@ -13684,6 +14978,10 @@ packages:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
+ yargs-parser@22.0.0:
+ resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
yargs@16.2.0:
resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
engines: {node: '>=10'}
@@ -13692,6 +14990,10 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
+ yargs@18.0.0:
+ resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
yauzl@2.10.0:
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
@@ -13727,6 +15029,9 @@ packages:
zod@4.3.6:
resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
+ zone.js@0.16.1:
+ resolution: {integrity: sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==}
+
zustand@4.5.7:
resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
engines: {node: '>=12.7.0'}
@@ -13889,8 +15194,252 @@ snapshots:
ansi-styles: 6.2.3
is-fullwidth-code-point: 5.1.0
+ '@algolia/abtesting@1.14.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/client-abtesting@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/client-analytics@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/client-common@5.48.1': {}
+
+ '@algolia/client-insights@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/client-personalization@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/client-query-suggestions@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/client-search@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/ingestion@1.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/monitoring@1.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/recommend@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
+ '@algolia/requester-browser-xhr@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+
+ '@algolia/requester-fetch@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+
+ '@algolia/requester-node-http@5.48.1':
+ dependencies:
+ '@algolia/client-common': 5.48.1
+
'@alloc/quick-lru@5.2.0': {}
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@angular-devkit/architect@0.2102.3(chokidar@5.0.0)':
+ dependencies:
+ '@angular-devkit/core': 21.2.3(chokidar@5.0.0)
+ rxjs: 7.8.2
+ transitivePeerDependencies:
+ - chokidar
+
+ '@angular-devkit/core@21.2.3(chokidar@5.0.0)':
+ dependencies:
+ ajv: 8.18.0
+ ajv-formats: 3.0.1(ajv@8.18.0)
+ jsonc-parser: 3.3.1
+ picomatch: 4.0.3
+ rxjs: 7.8.2
+ source-map: 0.7.6
+ optionalDependencies:
+ chokidar: 5.0.0
+
+ '@angular-devkit/schematics@21.2.3(chokidar@5.0.0)':
+ dependencies:
+ '@angular-devkit/core': 21.2.3(chokidar@5.0.0)
+ jsonc-parser: 3.3.1
+ magic-string: 0.30.21
+ ora: 9.3.0
+ rxjs: 7.8.2
+ transitivePeerDependencies:
+ - chokidar
+
+ '@angular/build@21.2.3(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@24.12.0)(chokidar@5.0.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.6)(tailwindcss@4.2.2)(terser@5.46.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@angular-devkit/architect': 0.2102.3(chokidar@5.0.0)
+ '@angular/compiler': 21.2.5
+ '@angular/compiler-cli': 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ '@babel/core': 7.29.0
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@inquirer/confirm': 5.1.21(@types/node@24.12.0)
+ '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ beasties: 0.4.1
+ browserslist: 4.28.1
+ esbuild: 0.27.3
+ https-proxy-agent: 7.0.6
+ istanbul-lib-instrument: 6.0.3
+ jsonc-parser: 3.3.1
+ listr2: 9.0.5
+ magic-string: 0.30.21
+ mrmime: 2.0.1
+ parse5-html-rewriting-stream: 8.0.0
+ picomatch: 4.0.3
+ piscina: 5.1.4
+ rolldown: 1.0.0-rc.4
+ sass: 1.97.3
+ semver: 7.7.4
+ source-map-support: 0.5.21
+ tinyglobby: 0.2.15
+ tslib: 2.8.1
+ typescript: 5.9.3
+ undici: 7.22.0
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ watchpack: 2.5.1
+ optionalDependencies:
+ '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser': 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ lmdb: 3.5.1
+ postcss: 8.5.6
+ tailwindcss: 4.2.2
+ vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ transitivePeerDependencies:
+ - '@types/node'
+ - chokidar
+ - jiti
+ - lightningcss
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ '@angular/cli@21.2.3(@types/node@24.12.0)(chokidar@5.0.0)':
+ dependencies:
+ '@angular-devkit/architect': 0.2102.3(chokidar@5.0.0)
+ '@angular-devkit/core': 21.2.3(chokidar@5.0.0)
+ '@angular-devkit/schematics': 21.2.3(chokidar@5.0.0)
+ '@inquirer/prompts': 7.10.1(@types/node@24.12.0)
+ '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.12.0))(@types/node@24.12.0)(listr2@9.0.5)
+ '@modelcontextprotocol/sdk': 1.26.0(zod@4.3.6)
+ '@schematics/angular': 21.2.3(chokidar@5.0.0)
+ '@yarnpkg/lockfile': 1.1.0
+ algoliasearch: 5.48.1
+ ini: 6.0.0
+ jsonc-parser: 3.3.1
+ listr2: 9.0.5
+ npm-package-arg: 13.0.2
+ pacote: 21.3.1
+ parse5-html-rewriting-stream: 8.0.0
+ semver: 7.7.4
+ yargs: 18.0.0
+ zod: 4.3.6
+ transitivePeerDependencies:
+ - '@cfworker/json-schema'
+ - '@types/node'
+ - chokidar
+ - supports-color
+
+ '@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
+ dependencies:
+ '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ rxjs: 7.8.2
+ tslib: 2.8.1
+
+ '@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)':
+ dependencies:
+ '@angular/compiler': 21.2.5
+ '@babel/core': 7.29.0
+ '@jridgewell/sourcemap-codec': 1.5.5
+ chokidar: 5.0.0
+ convert-source-map: 1.9.0
+ reflect-metadata: 0.2.2
+ semver: 7.7.4
+ tslib: 2.8.1
+ yargs: 18.0.0
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@angular/compiler@21.2.5':
+ dependencies:
+ tslib: 2.8.1
+
+ '@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)':
+ dependencies:
+ rxjs: 7.8.2
+ tslib: 2.8.1
+ optionalDependencies:
+ '@angular/compiler': 21.2.5
+ zone.js: 0.16.1
+
+ '@angular/platform-browser-dynamic@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))':
+ dependencies:
+ '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/compiler': 21.2.5
+ '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser': 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ tslib: 2.8.1
+
+ '@angular/platform-browser@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))':
+ dependencies:
+ '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ tslib: 2.8.1
+
'@antfu/ni@25.0.0':
dependencies:
ansis: 4.2.0
@@ -13906,6 +15455,14 @@ snapshots:
'@csstools/css-tokenizer': 3.0.4
lru-cache: 11.2.4
+ '@asamuzakjp/css-color@5.0.1':
+ dependencies:
+ '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-tokenizer': 4.0.0
+ lru-cache: 11.2.7
+
'@asamuzakjp/dom-selector@6.7.6':
dependencies:
'@asamuzakjp/nwsapi': 2.3.9
@@ -13914,6 +15471,14 @@ snapshots:
is-potential-custom-element-name: 1.0.1
lru-cache: 11.2.4
+ '@asamuzakjp/dom-selector@6.8.1':
+ dependencies:
+ '@asamuzakjp/nwsapi': 2.3.9
+ bidi-js: 1.0.3
+ css-tree: 3.1.0
+ is-potential-custom-element-name: 1.0.1
+ lru-cache: 11.2.7
+
'@asamuzakjp/nwsapi@2.3.9': {}
'@babel/code-frame@7.10.4':
@@ -13935,7 +15500,7 @@ snapshots:
'@babel/helper-compilation-targets': 7.28.6
'@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
'@babel/helpers': 7.28.6
- '@babel/parser': 7.29.0
+ '@babel/parser': 7.29.2
'@babel/template': 7.28.6
'@babel/traverse': 7.29.0
'@babel/types': 7.29.0
@@ -13950,7 +15515,7 @@ snapshots:
'@babel/generator@7.29.1':
dependencies:
- '@babel/parser': 7.29.0
+ '@babel/parser': 7.29.2
'@babel/types': 7.29.0
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
@@ -14059,6 +15624,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-split-export-declaration@7.24.7':
+ dependencies:
+ '@babel/types': 7.29.0
+
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.28.5': {}
@@ -14589,6 +16158,10 @@ snapshots:
'@borewit/text-codec@0.2.2':
optional: true
+ '@bramus/specificity@2.4.2':
+ dependencies:
+ css-tree: 3.1.0
+
'@changesets/apply-release-plan@7.0.14':
dependencies:
'@changesets/config': 3.1.2
@@ -14603,7 +16176,7 @@ snapshots:
outdent: 0.5.0
prettier: 2.8.8
resolve-from: 5.0.0
- semver: 7.7.3
+ semver: 7.7.4
'@changesets/assemble-release-plan@6.0.9':
dependencies:
@@ -14612,13 +16185,13 @@ snapshots:
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
- semver: 7.7.3
+ semver: 7.7.4
'@changesets/changelog-git@0.2.1':
dependencies:
'@changesets/types': 6.1.0
- '@changesets/cli@2.29.8(@types/node@22.19.6)':
+ '@changesets/cli@2.29.8(@types/node@24.12.0)':
dependencies:
'@changesets/apply-release-plan': 7.0.14
'@changesets/assemble-release-plan': 6.0.9
@@ -14634,7 +16207,7 @@ snapshots:
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
'@changesets/write': 0.4.0
- '@inquirer/external-editor': 1.0.3(@types/node@22.19.6)
+ '@inquirer/external-editor': 1.0.3(@types/node@24.12.0)
'@manypkg/get-packages': 1.1.3
ansi-colors: 4.1.3
ci-info: 3.9.0
@@ -14670,7 +16243,7 @@ snapshots:
'@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
picocolors: 1.1.1
- semver: 7.7.3
+ semver: 7.7.4
'@changesets/get-release-plan@4.0.14':
dependencies:
@@ -14735,11 +16308,18 @@ snapshots:
'@csstools/color-helpers@5.1.0': {}
+ '@csstools/color-helpers@6.0.2': {}
+
'@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
dependencies:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
+ '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-tokenizer': 4.0.0
+
'@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
dependencies:
'@csstools/color-helpers': 5.1.0
@@ -14747,14 +16327,31 @@ snapshots:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
+ '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ dependencies:
+ '@csstools/color-helpers': 6.0.2
+ '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-tokenizer': 4.0.0
+
'@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)':
dependencies:
'@csstools/css-tokenizer': 3.0.4
+ '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)':
+ dependencies:
+ '@csstools/css-tokenizer': 4.0.0
+
'@csstools/css-syntax-patches-for-csstree@1.0.25': {}
+ '@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.1.0)':
+ optionalDependencies:
+ css-tree: 3.1.0
+
'@csstools/css-tokenizer@3.0.4': {}
+ '@csstools/css-tokenizer@4.0.0': {}
+
'@dimforge/rapier3d-compat@0.12.0': {}
'@dimforge/rapier3d-compat@0.19.2': {}
@@ -14802,11 +16399,22 @@ snapshots:
dependencies:
'@noble/ciphers': 1.3.0
+ '@emnapi/core@1.9.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.0
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/runtime@1.8.1':
dependencies:
tslib: 2.8.1
optional: true
+ '@emnapi/wasi-threads@1.2.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@esbuild-kit/core-utils@3.3.2':
dependencies:
esbuild: 0.18.20
@@ -14826,6 +16434,9 @@ snapshots:
'@esbuild/aix-ppc64@0.27.2':
optional: true
+ '@esbuild/aix-ppc64@0.27.3':
+ optional: true
+
'@esbuild/android-arm64@0.18.20':
optional: true
@@ -14838,6 +16449,9 @@ snapshots:
'@esbuild/android-arm64@0.27.2':
optional: true
+ '@esbuild/android-arm64@0.27.3':
+ optional: true
+
'@esbuild/android-arm@0.18.20':
optional: true
@@ -14850,6 +16464,9 @@ snapshots:
'@esbuild/android-arm@0.27.2':
optional: true
+ '@esbuild/android-arm@0.27.3':
+ optional: true
+
'@esbuild/android-x64@0.18.20':
optional: true
@@ -14862,6 +16479,9 @@ snapshots:
'@esbuild/android-x64@0.27.2':
optional: true
+ '@esbuild/android-x64@0.27.3':
+ optional: true
+
'@esbuild/darwin-arm64@0.18.20':
optional: true
@@ -14874,6 +16494,9 @@ snapshots:
'@esbuild/darwin-arm64@0.27.2':
optional: true
+ '@esbuild/darwin-arm64@0.27.3':
+ optional: true
+
'@esbuild/darwin-x64@0.18.20':
optional: true
@@ -14886,6 +16509,9 @@ snapshots:
'@esbuild/darwin-x64@0.27.2':
optional: true
+ '@esbuild/darwin-x64@0.27.3':
+ optional: true
+
'@esbuild/freebsd-arm64@0.18.20':
optional: true
@@ -14898,6 +16524,9 @@ snapshots:
'@esbuild/freebsd-arm64@0.27.2':
optional: true
+ '@esbuild/freebsd-arm64@0.27.3':
+ optional: true
+
'@esbuild/freebsd-x64@0.18.20':
optional: true
@@ -14910,6 +16539,9 @@ snapshots:
'@esbuild/freebsd-x64@0.27.2':
optional: true
+ '@esbuild/freebsd-x64@0.27.3':
+ optional: true
+
'@esbuild/linux-arm64@0.18.20':
optional: true
@@ -14922,6 +16554,9 @@ snapshots:
'@esbuild/linux-arm64@0.27.2':
optional: true
+ '@esbuild/linux-arm64@0.27.3':
+ optional: true
+
'@esbuild/linux-arm@0.18.20':
optional: true
@@ -14934,6 +16569,9 @@ snapshots:
'@esbuild/linux-arm@0.27.2':
optional: true
+ '@esbuild/linux-arm@0.27.3':
+ optional: true
+
'@esbuild/linux-ia32@0.18.20':
optional: true
@@ -14946,6 +16584,9 @@ snapshots:
'@esbuild/linux-ia32@0.27.2':
optional: true
+ '@esbuild/linux-ia32@0.27.3':
+ optional: true
+
'@esbuild/linux-loong64@0.18.20':
optional: true
@@ -14958,6 +16599,9 @@ snapshots:
'@esbuild/linux-loong64@0.27.2':
optional: true
+ '@esbuild/linux-loong64@0.27.3':
+ optional: true
+
'@esbuild/linux-mips64el@0.18.20':
optional: true
@@ -14970,6 +16614,9 @@ snapshots:
'@esbuild/linux-mips64el@0.27.2':
optional: true
+ '@esbuild/linux-mips64el@0.27.3':
+ optional: true
+
'@esbuild/linux-ppc64@0.18.20':
optional: true
@@ -14982,6 +16629,9 @@ snapshots:
'@esbuild/linux-ppc64@0.27.2':
optional: true
+ '@esbuild/linux-ppc64@0.27.3':
+ optional: true
+
'@esbuild/linux-riscv64@0.18.20':
optional: true
@@ -14994,6 +16644,9 @@ snapshots:
'@esbuild/linux-riscv64@0.27.2':
optional: true
+ '@esbuild/linux-riscv64@0.27.3':
+ optional: true
+
'@esbuild/linux-s390x@0.18.20':
optional: true
@@ -15006,6 +16659,9 @@ snapshots:
'@esbuild/linux-s390x@0.27.2':
optional: true
+ '@esbuild/linux-s390x@0.27.3':
+ optional: true
+
'@esbuild/linux-x64@0.18.20':
optional: true
@@ -15018,6 +16674,9 @@ snapshots:
'@esbuild/linux-x64@0.27.2':
optional: true
+ '@esbuild/linux-x64@0.27.3':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.0':
optional: true
@@ -15027,6 +16686,9 @@ snapshots:
'@esbuild/netbsd-arm64@0.27.2':
optional: true
+ '@esbuild/netbsd-arm64@0.27.3':
+ optional: true
+
'@esbuild/netbsd-x64@0.18.20':
optional: true
@@ -15039,6 +16701,9 @@ snapshots:
'@esbuild/netbsd-x64@0.27.2':
optional: true
+ '@esbuild/netbsd-x64@0.27.3':
+ optional: true
+
'@esbuild/openbsd-arm64@0.25.0':
optional: true
@@ -15048,6 +16713,9 @@ snapshots:
'@esbuild/openbsd-arm64@0.27.2':
optional: true
+ '@esbuild/openbsd-arm64@0.27.3':
+ optional: true
+
'@esbuild/openbsd-x64@0.18.20':
optional: true
@@ -15060,12 +16728,18 @@ snapshots:
'@esbuild/openbsd-x64@0.27.2':
optional: true
+ '@esbuild/openbsd-x64@0.27.3':
+ optional: true
+
'@esbuild/openharmony-arm64@0.25.12':
optional: true
'@esbuild/openharmony-arm64@0.27.2':
optional: true
+ '@esbuild/openharmony-arm64@0.27.3':
+ optional: true
+
'@esbuild/sunos-x64@0.18.20':
optional: true
@@ -15078,6 +16752,9 @@ snapshots:
'@esbuild/sunos-x64@0.27.2':
optional: true
+ '@esbuild/sunos-x64@0.27.3':
+ optional: true
+
'@esbuild/win32-arm64@0.18.20':
optional: true
@@ -15090,6 +16767,9 @@ snapshots:
'@esbuild/win32-arm64@0.27.2':
optional: true
+ '@esbuild/win32-arm64@0.27.3':
+ optional: true
+
'@esbuild/win32-ia32@0.18.20':
optional: true
@@ -15102,6 +16782,9 @@ snapshots:
'@esbuild/win32-ia32@0.27.2':
optional: true
+ '@esbuild/win32-ia32@0.27.3':
+ optional: true
+
'@esbuild/win32-x64@0.18.20':
optional: true
@@ -15114,6 +16797,9 @@ snapshots:
'@esbuild/win32-x64@0.27.2':
optional: true
+ '@esbuild/win32-x64@0.27.3':
+ optional: true
+
'@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)':
dependencies:
eslint: 8.57.1
@@ -15181,6 +16867,10 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@exodus/bytes@1.15.0(@noble/hashes@1.8.0)':
+ optionalDependencies:
+ '@noble/hashes': 1.8.0
+
'@exodus/bytes@1.8.0': {}
'@expo/cli@54.0.23(expo-router@6.0.23)(expo@54.0.33)(graphql@16.12.0)(react-native@0.81.4(@babel/core@7.29.0)(@types/react@19.1.17)(react@19.1.0))':
@@ -15622,6 +17312,11 @@ snapshots:
'@fontsource-variable/inter@5.2.8': {}
+ '@gar/promise-retry@1.0.3': {}
+
+ '@harperfast/extended-iterable@1.0.3':
+ optional: true
+
'@hono/node-server@1.19.9(hono@4.12.0)':
dependencies:
hono: 4.12.0
@@ -15746,6 +17441,16 @@ snapshots:
'@inquirer/ansi@1.0.2': {}
+ '@inquirer/checkbox@4.3.2(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.12.0
+
'@inquirer/confirm@5.1.21(@types/node@22.19.6)':
dependencies:
'@inquirer/core': 10.3.2(@types/node@22.19.6)
@@ -15753,6 +17458,13 @@ snapshots:
optionalDependencies:
'@types/node': 22.19.6
+ '@inquirer/confirm@5.1.21(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ optionalDependencies:
+ '@types/node': 24.12.0
+
'@inquirer/core@10.3.2(@types/node@22.19.6)':
dependencies:
'@inquirer/ansi': 1.0.2
@@ -15766,19 +17478,116 @@ snapshots:
optionalDependencies:
'@types/node': 22.19.6
- '@inquirer/external-editor@1.0.3(@types/node@22.19.6)':
+ '@inquirer/core@10.3.2(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ cli-width: 4.1.0
+ mute-stream: 2.0.0
+ signal-exit: 4.1.0
+ wrap-ansi: 6.2.0
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/editor@4.2.23(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/external-editor': 1.0.3(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/expand@4.0.23(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/external-editor@1.0.3(@types/node@24.12.0)':
dependencies:
chardet: 2.1.1
iconv-lite: 0.7.2
optionalDependencies:
- '@types/node': 22.19.6
+ '@types/node': 24.12.0
'@inquirer/figures@1.0.15': {}
+ '@inquirer/input@4.3.1(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/number@3.0.23(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/password@4.0.23(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/prompts@7.10.1(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/checkbox': 4.3.2(@types/node@24.12.0)
+ '@inquirer/confirm': 5.1.21(@types/node@24.12.0)
+ '@inquirer/editor': 4.2.23(@types/node@24.12.0)
+ '@inquirer/expand': 4.0.23(@types/node@24.12.0)
+ '@inquirer/input': 4.3.1(@types/node@24.12.0)
+ '@inquirer/number': 3.0.23(@types/node@24.12.0)
+ '@inquirer/password': 4.0.23(@types/node@24.12.0)
+ '@inquirer/rawlist': 4.1.11(@types/node@24.12.0)
+ '@inquirer/search': 3.2.2(@types/node@24.12.0)
+ '@inquirer/select': 4.4.2(@types/node@24.12.0)
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/rawlist@4.1.11(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/search@3.2.2(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.12.0
+
+ '@inquirer/select@4.4.2(@types/node@24.12.0)':
+ dependencies:
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/core': 10.3.2(@types/node@24.12.0)
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.12.0
+
'@inquirer/type@3.0.10(@types/node@22.19.6)':
optionalDependencies:
'@types/node': 22.19.6
+ '@inquirer/type@3.0.10(@types/node@24.12.0)':
+ optionalDependencies:
+ '@types/node': 24.12.0
+
'@internationalized/date@3.11.0':
dependencies:
'@swc/helpers': 0.5.15
@@ -16068,6 +17877,35 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
+ '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.12.0))(@types/node@24.12.0)(listr2@9.0.5)':
+ dependencies:
+ '@inquirer/prompts': 7.10.1(@types/node@24.12.0)
+ '@inquirer/type': 3.0.10(@types/node@24.12.0)
+ listr2: 9.0.5
+ transitivePeerDependencies:
+ - '@types/node'
+
+ '@lmdb/lmdb-darwin-arm64@3.5.1':
+ optional: true
+
+ '@lmdb/lmdb-darwin-x64@3.5.1':
+ optional: true
+
+ '@lmdb/lmdb-linux-arm64@3.5.1':
+ optional: true
+
+ '@lmdb/lmdb-linux-arm@3.5.1':
+ optional: true
+
+ '@lmdb/lmdb-linux-x64@3.5.1':
+ optional: true
+
+ '@lmdb/lmdb-win32-arm64@3.5.1':
+ optional: true
+
+ '@lmdb/lmdb-win32-x64@3.5.1':
+ optional: true
+
'@lucide/svelte@0.561.0(svelte@5.53.5)':
dependencies:
svelte: 5.53.5
@@ -16097,7 +17935,7 @@ snapshots:
'@mdx-js/mdx': 3.1.1
source-map: 0.7.6
optionalDependencies:
- webpack: 5.96.1
+ webpack: 5.96.1(esbuild@0.25.0)
transitivePeerDependencies:
- supports-color
@@ -16172,6 +18010,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@modelcontextprotocol/sdk@1.26.0(zod@4.3.6)':
+ dependencies:
+ '@hono/node-server': 1.19.9(hono@4.12.0)
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
+ content-type: 1.0.5
+ cors: 2.8.6
+ cross-spawn: 7.0.6
+ eventsource: 3.0.7
+ eventsource-parser: 3.0.6
+ express: 5.2.1
+ express-rate-limit: 8.2.1(express@5.2.1)
+ hono: 4.12.0
+ jose: 6.1.3
+ json-schema-typed: 8.0.2
+ pkce-challenge: 5.0.1
+ raw-body: 3.0.2
+ zod: 4.3.6
+ zod-to-json-schema: 3.25.1(zod@4.3.6)
+ transitivePeerDependencies:
+ - supports-color
+
'@modelcontextprotocol/sdk@1.27.1(zod@4.3.6)':
dependencies:
'@hono/node-server': 1.19.9(hono@4.12.0)
@@ -16210,6 +18070,24 @@ snapshots:
promise-worker-transferable: 1.0.4
three: 0.183.2
+ '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
+ optional: true
+
+ '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3':
+ optional: true
+
+ '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3':
+ optional: true
+
+ '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3':
+ optional: true
+
+ '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3':
+ optional: true
+
+ '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3':
+ optional: true
+
'@mswjs/interceptors@0.41.3':
dependencies:
'@open-draft/deferred-promise': 2.2.0
@@ -16219,6 +18097,85 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
+ '@napi-rs/nice-android-arm-eabi@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-android-arm64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-darwin-arm64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-darwin-x64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-freebsd-x64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-arm-gnueabihf@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-arm64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-arm64-musl@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-ppc64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-riscv64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-s390x-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-x64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-x64-musl@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-openharmony-arm64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-win32-arm64-msvc@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-win32-ia32-msvc@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-win32-x64-msvc@1.1.1':
+ optional: true
+
+ '@napi-rs/nice@1.1.1':
+ optionalDependencies:
+ '@napi-rs/nice-android-arm-eabi': 1.1.1
+ '@napi-rs/nice-android-arm64': 1.1.1
+ '@napi-rs/nice-darwin-arm64': 1.1.1
+ '@napi-rs/nice-darwin-x64': 1.1.1
+ '@napi-rs/nice-freebsd-x64': 1.1.1
+ '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1
+ '@napi-rs/nice-linux-arm64-gnu': 1.1.1
+ '@napi-rs/nice-linux-arm64-musl': 1.1.1
+ '@napi-rs/nice-linux-ppc64-gnu': 1.1.1
+ '@napi-rs/nice-linux-riscv64-gnu': 1.1.1
+ '@napi-rs/nice-linux-s390x-gnu': 1.1.1
+ '@napi-rs/nice-linux-x64-gnu': 1.1.1
+ '@napi-rs/nice-linux-x64-musl': 1.1.1
+ '@napi-rs/nice-openharmony-arm64': 1.1.1
+ '@napi-rs/nice-win32-arm64-msvc': 1.1.1
+ '@napi-rs/nice-win32-ia32-msvc': 1.1.1
+ '@napi-rs/nice-win32-x64-msvc': 1.1.1
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.1.1':
+ dependencies:
+ '@emnapi/core': 1.9.1
+ '@emnapi/runtime': 1.8.1
+ '@tybys/wasm-util': 0.10.1
+ optional: true
+
'@next/env@16.1.1': {}
'@next/env@16.1.6': {}
@@ -16302,6 +18259,64 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
+ '@npmcli/agent@4.0.0':
+ dependencies:
+ agent-base: 7.1.4
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ lru-cache: 11.2.4
+ socks-proxy-agent: 8.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@npmcli/fs@5.0.0':
+ dependencies:
+ semver: 7.7.4
+
+ '@npmcli/git@7.0.2':
+ dependencies:
+ '@gar/promise-retry': 1.0.3
+ '@npmcli/promise-spawn': 9.0.1
+ ini: 6.0.0
+ lru-cache: 11.2.4
+ npm-pick-manifest: 11.0.3
+ proc-log: 6.1.0
+ semver: 7.7.4
+ which: 6.0.1
+
+ '@npmcli/installed-package-contents@4.0.0':
+ dependencies:
+ npm-bundled: 5.0.0
+ npm-normalize-package-bin: 5.0.0
+
+ '@npmcli/node-gyp@5.0.0': {}
+
+ '@npmcli/package-json@7.0.5':
+ dependencies:
+ '@npmcli/git': 7.0.2
+ glob: 13.0.1
+ hosted-git-info: 9.0.2
+ json-parse-even-better-errors: 5.0.0
+ proc-log: 6.1.0
+ semver: 7.7.4
+ spdx-expression-parse: 4.0.0
+
+ '@npmcli/promise-spawn@9.0.1':
+ dependencies:
+ which: 6.0.1
+
+ '@npmcli/redact@4.0.0': {}
+
+ '@npmcli/run-script@10.0.4':
+ dependencies:
+ '@npmcli/node-gyp': 5.0.0
+ '@npmcli/package-json': 7.0.5
+ '@npmcli/promise-spawn': 9.0.1
+ node-gyp: 12.2.0
+ proc-log: 6.1.0
+ transitivePeerDependencies:
+ - supports-color
+
'@one-ini/wasm@0.1.1': {}
'@open-draft/deferred-promise@2.2.0': {}
@@ -16315,6 +18330,69 @@ snapshots:
'@opentelemetry/api@1.9.0': {}
+ '@oxc-project/types@0.113.0': {}
+
+ '@parcel/watcher-android-arm64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-darwin-arm64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-darwin-x64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-freebsd-x64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm-glibc@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm-musl@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-musl@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-x64-glibc@2.5.6':
+ optional: true
+
+ '@parcel/watcher-linux-x64-musl@2.5.6':
+ optional: true
+
+ '@parcel/watcher-win32-arm64@2.5.6':
+ optional: true
+
+ '@parcel/watcher-win32-ia32@2.5.6':
+ optional: true
+
+ '@parcel/watcher-win32-x64@2.5.6':
+ optional: true
+
+ '@parcel/watcher@2.5.6':
+ dependencies:
+ detect-libc: 2.1.2
+ is-glob: 4.0.3
+ node-addon-api: 7.1.1
+ picomatch: 4.0.3
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.5.6
+ '@parcel/watcher-darwin-arm64': 2.5.6
+ '@parcel/watcher-darwin-x64': 2.5.6
+ '@parcel/watcher-freebsd-x64': 2.5.6
+ '@parcel/watcher-linux-arm-glibc': 2.5.6
+ '@parcel/watcher-linux-arm-musl': 2.5.6
+ '@parcel/watcher-linux-arm64-glibc': 2.5.6
+ '@parcel/watcher-linux-arm64-musl': 2.5.6
+ '@parcel/watcher-linux-x64-glibc': 2.5.6
+ '@parcel/watcher-linux-x64-musl': 2.5.6
+ '@parcel/watcher-win32-arm64': 2.5.6
+ '@parcel/watcher-win32-ia32': 2.5.6
+ '@parcel/watcher-win32-x64': 2.5.6
+ optional: true
+
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -18113,7 +20191,7 @@ snapshots:
'@react-email/render@2.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
html-to-text: 9.0.5
- prettier: 3.7.4
+ prettier: 3.8.1
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
@@ -18246,7 +20324,7 @@ snapshots:
metro: 0.83.3
metro-config: 0.83.3
metro-core: 0.83.3
- semver: 7.7.3
+ semver: 7.7.4
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -18260,7 +20338,7 @@ snapshots:
metro: 0.83.3
metro-config: 0.83.3
metro-core: 0.83.3
- semver: 7.7.3
+ semver: 7.7.4
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -18956,10 +21034,53 @@ snapshots:
'@resvg/resvg-js-win32-ia32-msvc': 2.6.2
'@resvg/resvg-js-win32-x64-msvc': 2.6.2
+ '@rolldown/binding-android-arm64@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.4':
+ dependencies:
+ '@napi-rs/wasm-runtime': 1.1.1
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4':
+ optional: true
+
'@rolldown/pluginutils@1.0.0-rc.2': {}
'@rolldown/pluginutils@1.0.0-rc.3': {}
+ '@rolldown/pluginutils@1.0.0-rc.4': {}
+
'@rollup/rollup-android-arm-eabi@4.55.1':
optional: true
@@ -19035,6 +21156,14 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.55.1':
optional: true
+ '@schematics/angular@21.2.3(chokidar@5.0.0)':
+ dependencies:
+ '@angular-devkit/core': 21.2.3(chokidar@5.0.0)
+ '@angular-devkit/schematics': 21.2.3(chokidar@5.0.0)
+ jsonc-parser: 3.3.1
+ transitivePeerDependencies:
+ - chokidar
+
'@sec-ant/readable-stream@0.4.1': {}
'@selderee/plugin-htmlparser2@0.11.0':
@@ -19080,6 +21209,38 @@ snapshots:
fflate: 0.7.4
string.prototype.codepointat: 0.2.1
+ '@sigstore/bundle@4.0.0':
+ dependencies:
+ '@sigstore/protobuf-specs': 0.5.0
+
+ '@sigstore/core@3.2.0': {}
+
+ '@sigstore/protobuf-specs@0.5.0': {}
+
+ '@sigstore/sign@4.1.1':
+ dependencies:
+ '@gar/promise-retry': 1.0.3
+ '@sigstore/bundle': 4.0.0
+ '@sigstore/core': 3.2.0
+ '@sigstore/protobuf-specs': 0.5.0
+ make-fetch-happen: 15.0.5
+ proc-log: 6.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@sigstore/tuf@4.0.2':
+ dependencies:
+ '@sigstore/protobuf-specs': 0.5.0
+ tuf-js: 4.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@sigstore/verify@3.1.0':
+ dependencies:
+ '@sigstore/bundle': 4.0.0
+ '@sigstore/core': 3.2.0
+ '@sigstore/protobuf-specs': 0.5.0
+
'@sinclair/typebox@0.24.51': {}
'@sinclair/typebox@0.27.10': {}
@@ -19143,7 +21304,7 @@ snapshots:
'@stripe/ui-extension-tools@0.0.1(@babel/core@7.29.0)(babel-jest@27.5.1(@babel/core@7.29.0))':
dependencies:
'@types/jest': 28.1.8
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@9.39.2(jiti@2.6.1))(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
'@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
eslint: 8.57.1
eslint-plugin-react: 7.37.5(eslint@8.57.1)
@@ -19171,15 +21332,15 @@ snapshots:
dependencies:
acorn: 8.16.0
- '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))':
+ '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))':
dependencies:
- '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
- '@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0)
- '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/cookie': 0.6.0
acorn: 8.15.0
cookie: 0.6.0
@@ -19191,16 +21352,16 @@ snapshots:
set-cookie-parser: 3.0.1
sirv: 3.0.2
svelte: 5.53.5
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
optionalDependencies:
'@opentelemetry/api': 1.9.0
typescript: 5.9.3
- '@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0)
- '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@types/cookie': 0.6.0
acorn: 8.15.0
cookie: 0.6.0
@@ -19212,17 +21373,17 @@ snapshots:
set-cookie-parser: 3.0.1
sirv: 3.0.2
svelte: 5.54.1
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
optionalDependencies:
'@opentelemetry/api': 1.9.0
typescript: 5.9.2
optional: true
- '@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0)
- '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/cookie': 0.6.0
acorn: 8.15.0
cookie: 0.6.0
@@ -19234,7 +21395,7 @@ snapshots:
set-cookie-parser: 3.0.1
sirv: 3.0.2
svelte: 5.54.1
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
optionalDependencies:
'@opentelemetry/api': 1.9.0
typescript: 5.9.3
@@ -19262,41 +21423,41 @@ snapshots:
transitivePeerDependencies:
- typescript
- '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
obug: 2.1.1
svelte: 5.53.5
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.1
svelte: 5.53.5
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
- '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.1
svelte: 5.54.1
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
optional: true
- '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.1
svelte: 5.54.1
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@swc/helpers@0.5.15':
dependencies:
@@ -19505,19 +21666,19 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.2.2
- '@tailwindcss/vite@4.2.1(vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@tailwindcss/vite@4.2.1(vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@tailwindcss/node': 4.2.1
'@tailwindcss/oxide': 4.2.1
tailwindcss: 4.2.1
- vite: 6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- '@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@tailwindcss/node': 4.2.1
'@tailwindcss/oxide': 4.2.1
tailwindcss: 4.2.1
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
'@testing-library/dom@10.4.1':
dependencies:
@@ -19554,14 +21715,14 @@ snapshots:
dependencies:
svelte: 5.53.5
- '@testing-library/svelte@5.3.1(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@testing-library/svelte@5.3.1(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@testing-library/dom': 10.4.1
'@testing-library/svelte-core': 1.0.0(svelte@5.53.5)
svelte: 5.53.5
optionalDependencies:
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
'@tokenizer/inflate@0.4.1':
dependencies:
@@ -19582,8 +21743,38 @@ snapshots:
minimatch: 10.1.2
path-browserify: 1.0.1
+ '@tufjs/canonical-json@2.0.0': {}
+
+ '@tufjs/models@4.1.0':
+ dependencies:
+ '@tufjs/canonical-json': 2.0.0
+ minimatch: 10.2.4
+
+ '@turbo/darwin-64@2.8.20':
+ optional: true
+
+ '@turbo/darwin-arm64@2.8.20':
+ optional: true
+
+ '@turbo/linux-64@2.8.20':
+ optional: true
+
+ '@turbo/linux-arm64@2.8.20':
+ optional: true
+
+ '@turbo/windows-64@2.8.20':
+ optional: true
+
+ '@turbo/windows-arm64@2.8.20':
+ optional: true
+
'@tweenjs/tween.js@23.1.3': {}
+ '@tybys/wasm-util@0.10.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@types/aria-query@5.0.4': {}
'@types/babel__core@7.20.5':
@@ -19707,6 +21898,10 @@ snapshots:
dependencies:
undici-types: 6.21.0
+ '@types/node@24.12.0':
+ dependencies:
+ undici-types: 7.16.0
+
'@types/offscreencanvas@2019.7.3': {}
'@types/prettier@2.7.3': {}
@@ -19812,7 +22007,7 @@ snapshots:
'@types/node': 22.19.6
optional: true
- '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@9.39.2(jiti@2.6.1))(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)':
+ '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)':
dependencies:
'@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
@@ -19946,7 +22141,7 @@ snapshots:
'@typescript-eslint/visitor-keys': 8.53.0
debug: 4.4.3
minimatch: 9.0.5
- semver: 7.7.3
+ semver: 7.7.4
tinyglobby: 0.2.15
ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
@@ -20032,10 +22227,10 @@ snapshots:
'@use-gesture/core': 10.3.1
react: 19.2.4
- '@vercel/analytics@1.6.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))':
+ '@vercel/analytics@1.6.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))':
optionalDependencies:
- '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
- next: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ next: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)
react: 19.2.3
svelte: 5.54.1
vue: 3.5.29(typescript@5.9.2)
@@ -20050,10 +22245,10 @@ snapshots:
'@vercel/oidc@3.1.0': {}
- '@vercel/speed-insights@1.3.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))':
+ '@vercel/speed-insights@1.3.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3))(react@19.2.3)(svelte@5.54.1)(vue@3.5.29(typescript@5.9.2))':
optionalDependencies:
- '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
- next: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.54.1)(typescript@5.9.2)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ next: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)
react: 19.2.3
svelte: 5.54.1
vue: 3.5.29(typescript@5.9.2)
@@ -20065,7 +22260,11 @@ snapshots:
'@visual-json/core': 0.1.1
react: 19.2.3
- '@vitejs/plugin-react@5.1.4(vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ dependencies:
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+
+ '@vitejs/plugin-react@5.1.4(vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
@@ -20073,11 +22272,11 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-rc.3
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
- vite: 6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
@@ -20085,14 +22284,14 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-rc.3
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.29(typescript@5.9.3))':
+ '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.29(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-rc.2
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vue: 3.5.29(typescript@5.9.3)
'@vitest/expect@4.0.17':
@@ -20104,23 +22303,23 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.0.3
- '@vitest/mocker@4.0.17(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitest/mocker@4.0.17(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@vitest/spy': 4.0.17
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.12.10(@types/node@22.19.6)(typescript@5.9.2)
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ msw: 2.12.10(@types/node@24.12.0)(typescript@5.9.2)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- '@vitest/mocker@4.0.17(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitest/mocker@4.0.17(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@vitest/spy': 4.0.17
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.12.10(@types/node@22.19.6)(typescript@5.9.3)
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ msw: 2.12.10(@types/node@24.12.0)(typescript@5.9.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
'@vitest/pretty-format@4.0.17':
dependencies:
@@ -20158,7 +22357,7 @@ snapshots:
'@vue/compiler-core@3.5.29':
dependencies:
- '@babel/parser': 7.29.0
+ '@babel/parser': 7.29.2
'@vue/shared': 3.5.29
entities: 7.0.1
estree-walker: 2.0.2
@@ -20321,10 +22520,14 @@ snapshots:
'@xtuc/long@4.2.2': {}
+ '@yarnpkg/lockfile@1.1.0': {}
+
abab@2.0.6: {}
abbrev@2.0.0: {}
+ abbrev@4.0.0: {}
+
abort-controller@3.0.0:
dependencies:
event-target-shim: 5.0.1
@@ -20426,6 +22629,10 @@ snapshots:
optionalDependencies:
ajv: 8.17.1
+ ajv-formats@3.0.1(ajv@8.18.0):
+ optionalDependencies:
+ ajv: 8.18.0
+
ajv-keywords@3.5.2(ajv@6.12.6):
dependencies:
ajv: 6.12.6
@@ -20449,6 +22656,30 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
+ ajv@8.18.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.0
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ algoliasearch@5.48.1:
+ dependencies:
+ '@algolia/abtesting': 1.14.1
+ '@algolia/client-abtesting': 5.48.1
+ '@algolia/client-analytics': 5.48.1
+ '@algolia/client-common': 5.48.1
+ '@algolia/client-insights': 5.48.1
+ '@algolia/client-personalization': 5.48.1
+ '@algolia/client-query-suggestions': 5.48.1
+ '@algolia/client-search': 5.48.1
+ '@algolia/ingestion': 1.48.1
+ '@algolia/monitoring': 1.48.1
+ '@algolia/recommend': 5.48.1
+ '@algolia/requester-browser-xhr': 5.48.1
+ '@algolia/requester-fetch': 5.48.1
+ '@algolia/requester-node-http': 5.48.1
+
alien-signals@3.1.2: {}
amdefine@1.0.1:
@@ -20462,10 +22693,6 @@ snapshots:
dependencies:
type-fest: 0.21.3
- ansi-escapes@7.2.0:
- dependencies:
- environment: 1.1.0
-
ansi-escapes@7.3.0:
dependencies:
environment: 1.1.0
@@ -20780,8 +23007,7 @@ snapshots:
balanced-match@1.0.2: {}
- balanced-match@4.0.4:
- optional: true
+ balanced-match@4.0.4: {}
base64-js@0.0.8: {}
@@ -20798,6 +23024,18 @@ snapshots:
optionalDependencies:
just-bash: 2.9.6
+ beasties@0.4.1:
+ dependencies:
+ css-select: 6.0.0
+ css-what: 7.0.0
+ dom-serializer: 2.0.0
+ domhandler: 5.0.3
+ htmlparser2: 10.1.0
+ picocolors: 1.1.1
+ postcss: 8.5.6
+ postcss-media-query-parser: 0.2.3
+ postcss-safe-parser: 7.0.1(postcss@8.5.6)
+
better-opn@3.0.2:
dependencies:
open: 8.4.2
@@ -20814,28 +23052,28 @@ snapshots:
big.js@5.2.2: {}
- bits-ui@2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5):
+ bits-ui@2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5):
dependencies:
'@floating-ui/core': 1.7.4
'@floating-ui/dom': 1.7.5
'@internationalized/date': 3.11.0
esm-env: 1.2.2
- runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
+ runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
svelte: 5.53.5
- svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
+ svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
tabbable: 6.4.0
transitivePeerDependencies:
- '@sveltejs/kit'
- bits-ui@2.16.3(@internationalized/date@3.12.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1):
+ bits-ui@2.16.3(@internationalized/date@3.12.0)(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1):
dependencies:
'@floating-ui/core': 1.7.5
'@floating-ui/dom': 1.7.6
'@internationalized/date': 3.12.0
esm-env: 1.2.2
- runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
+ runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
svelte: 5.54.1
- svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
+ svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
tabbable: 6.4.0
transitivePeerDependencies:
- '@sveltejs/kit'
@@ -20861,6 +23099,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ boolbase@1.0.0: {}
+
bplist-creator@0.1.0:
dependencies:
stream-buffers: 2.2.0
@@ -20885,7 +23125,6 @@ snapshots:
brace-expansion@5.0.4:
dependencies:
balanced-match: 4.0.4
- optional: true
braces@3.0.3:
dependencies:
@@ -20944,6 +23183,19 @@ snapshots:
cac@6.7.14: {}
+ cacache@20.0.4:
+ dependencies:
+ '@npmcli/fs': 5.0.0
+ fs-minipass: 3.0.3
+ glob: 13.0.1
+ lru-cache: 11.2.4
+ minipass: 7.1.2
+ minipass-collect: 2.0.1
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ p-map: 7.0.4
+ ssri: 13.0.1
+
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
@@ -21069,6 +23321,8 @@ snapshots:
cli-spinners@2.9.2: {}
+ cli-spinners@3.4.0: {}
+
cli-truncate@5.1.1:
dependencies:
slice-ansi: 7.1.2
@@ -21090,6 +23344,12 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
+ cliui@9.0.1:
+ dependencies:
+ string-width: 7.2.0
+ strip-ansi: 7.1.2
+ wrap-ansi: 9.0.2
+
clone@1.0.4: {}
clone@2.1.2: {}
@@ -21271,6 +23531,14 @@ snapshots:
semver: 7.7.4
webpack: 5.96.1(esbuild@0.25.0)
+ css-select@6.0.0:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 7.0.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ nth-check: 2.1.1
+
css-to-react-native@3.2.0:
dependencies:
camelize: 1.0.1
@@ -21282,6 +23550,8 @@ snapshots:
mdn-data: 2.12.2
source-map-js: 1.2.1
+ css-what@7.0.0: {}
+
cssesc@3.0.0: {}
cssom@0.3.8: {}
@@ -21299,6 +23569,13 @@ snapshots:
css-tree: 3.1.0
lru-cache: 11.2.4
+ cssstyle@6.2.0:
+ dependencies:
+ '@asamuzakjp/css-color': 5.0.1
+ '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.1.0)
+ css-tree: 3.1.0
+ lru-cache: 11.2.7
+
csstype@3.2.3: {}
d3-array@3.2.4:
@@ -21352,6 +23629,13 @@ snapshots:
whatwg-mimetype: 4.0.0
whatwg-url: 15.1.0
+ data-urls@7.0.0(@noble/hashes@1.8.0):
+ dependencies:
+ whatwg-mimetype: 5.0.0
+ whatwg-url: 16.0.1(@noble/hashes@1.8.0)
+ transitivePeerDependencies:
+ - '@noble/hashes'
+
data-view-buffer@1.0.2:
dependencies:
call-bound: 1.0.4
@@ -21637,6 +23921,8 @@ snapshots:
environment@1.1.0: {}
+ err-code@2.0.3: {}
+
error-ex@1.3.4:
dependencies:
is-arrayish: 0.2.1
@@ -21764,12 +24050,12 @@ snapshots:
esast-util-from-estree: 2.0.0
vfile-message: 4.0.3
- esbuild-plugin-solid@0.6.0(esbuild@0.27.2)(solid-js@1.9.11):
+ esbuild-plugin-solid@0.6.0(esbuild@0.27.3)(solid-js@1.9.11):
dependencies:
'@babel/core': 7.29.0
'@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
babel-preset-solid: 1.9.10(@babel/core@7.29.0)(solid-js@1.9.11)
- esbuild: 0.27.2
+ esbuild: 0.27.3
solid-js: 1.9.11
transitivePeerDependencies:
- supports-color
@@ -21892,6 +24178,35 @@ snapshots:
'@esbuild/win32-ia32': 0.27.2
'@esbuild/win32-x64': 0.27.2
+ esbuild@0.27.3:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.3
+ '@esbuild/android-arm': 0.27.3
+ '@esbuild/android-arm64': 0.27.3
+ '@esbuild/android-x64': 0.27.3
+ '@esbuild/darwin-arm64': 0.27.3
+ '@esbuild/darwin-x64': 0.27.3
+ '@esbuild/freebsd-arm64': 0.27.3
+ '@esbuild/freebsd-x64': 0.27.3
+ '@esbuild/linux-arm': 0.27.3
+ '@esbuild/linux-arm64': 0.27.3
+ '@esbuild/linux-ia32': 0.27.3
+ '@esbuild/linux-loong64': 0.27.3
+ '@esbuild/linux-mips64el': 0.27.3
+ '@esbuild/linux-ppc64': 0.27.3
+ '@esbuild/linux-riscv64': 0.27.3
+ '@esbuild/linux-s390x': 0.27.3
+ '@esbuild/linux-x64': 0.27.3
+ '@esbuild/netbsd-arm64': 0.27.3
+ '@esbuild/netbsd-x64': 0.27.3
+ '@esbuild/openbsd-arm64': 0.27.3
+ '@esbuild/openbsd-x64': 0.27.3
+ '@esbuild/openharmony-arm64': 0.27.3
+ '@esbuild/sunos-x64': 0.27.3
+ '@esbuild/win32-arm64': 0.27.3
+ '@esbuild/win32-ia32': 0.27.3
+ '@esbuild/win32-x64': 0.27.3
+
escalade@3.2.0: {}
escape-html@1.0.3: {}
@@ -21970,11 +24285,11 @@ snapshots:
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
- eslint-plugin-turbo@2.7.4(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.4):
+ eslint-plugin-turbo@2.7.4(eslint@9.39.2(jiti@2.6.1))(turbo@2.8.20):
dependencies:
dotenv: 16.0.3
eslint: 9.39.2(jiti@2.6.1)
- turbo: 2.7.4
+ turbo: 2.8.20
eslint-scope@5.1.1:
dependencies:
@@ -22779,6 +25094,10 @@ snapshots:
jsonfile: 4.0.0
universalify: 0.1.2
+ fs-minipass@3.0.3:
+ dependencies:
+ minipass: 7.1.2
+
fs-monkey@1.0.3: {}
fs.realpath@1.0.0: {}
@@ -22803,13 +25122,13 @@ snapshots:
fzf@0.5.2: {}
- geist@1.7.0(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)):
+ geist@1.7.0(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)):
dependencies:
- next: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ next: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3)
- geist@1.7.0(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)):
+ geist@1.7.0(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)):
dependencies:
- next: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ next: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3)
generator-function@2.0.1: {}
@@ -23115,6 +25434,10 @@ snapshots:
dependencies:
lru-cache: 10.4.3
+ hosted-git-info@9.0.2:
+ dependencies:
+ lru-cache: 11.2.4
+
hsl-to-hex@1.0.0:
dependencies:
hsl-to-rgb-for-reals: 1.1.1
@@ -23125,11 +25448,11 @@ snapshots:
dependencies:
whatwg-encoding: 1.0.5
- html-encoding-sniffer@6.0.0:
+ html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0):
dependencies:
- '@exodus/bytes': 1.8.0
+ '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0)
transitivePeerDependencies:
- - '@exodus/crypto'
+ - '@noble/hashes'
html-entities@2.3.3: {}
@@ -23147,6 +25470,13 @@ snapshots:
html-void-elements@3.0.0: {}
+ htmlparser2@10.1.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ entities: 7.0.1
+
htmlparser2@8.0.2:
dependencies:
domelementtype: 2.3.0
@@ -23154,6 +25484,8 @@ snapshots:
domutils: 3.2.2
entities: 4.5.0
+ http-cache-semantics@4.2.0: {}
+
http-errors@2.0.1:
dependencies:
depd: 2.0.0
@@ -23215,6 +25547,10 @@ snapshots:
ieee754@1.2.1: {}
+ ignore-walk@8.0.0:
+ dependencies:
+ minimatch: 10.2.4
+
ignore@5.3.2: {}
ignore@7.0.5: {}
@@ -23227,6 +25563,8 @@ snapshots:
immer@11.1.4: {}
+ immutable@5.1.5: {}
+
import-fresh@3.3.1:
dependencies:
parent-module: 1.0.1
@@ -23250,8 +25588,7 @@ snapshots:
ini@1.3.8: {}
- ini@6.0.0:
- optional: true
+ ini@6.0.0: {}
ink@6.8.0(@types/react@19.2.14)(react-devtools-core@6.1.5)(react@19.2.4):
dependencies:
@@ -23544,6 +25881,8 @@ snapshots:
isexe@3.1.5: {}
+ isexe@4.0.0: {}
+
istanbul-lib-coverage@3.2.2: {}
istanbul-lib-instrument@5.2.1:
@@ -23556,6 +25895,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ istanbul-lib-instrument@6.0.3:
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.2
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.7.4
+ transitivePeerDependencies:
+ - supports-color
+
istanbul-lib-report@3.0.1:
dependencies:
istanbul-lib-coverage: 3.2.2
@@ -24157,7 +26506,7 @@ snapshots:
- supports-color
- utf-8-validate
- jsdom@27.4.0:
+ jsdom@27.4.0(@noble/hashes@1.8.0):
dependencies:
'@acemir/cssom': 0.9.31
'@asamuzakjp/dom-selector': 6.7.6
@@ -24165,7 +26514,7 @@ snapshots:
cssstyle: 5.3.7
data-urls: 6.0.0
decimal.js: 10.6.0
- html-encoding-sniffer: 6.0.0
+ html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0)
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
is-potential-custom-element-name: 1.0.1
@@ -24181,16 +26530,46 @@ snapshots:
xml-name-validator: 5.0.0
transitivePeerDependencies:
- '@exodus/crypto'
+ - '@noble/hashes'
- bufferutil
- supports-color
- utf-8-validate
+ jsdom@28.1.0(@noble/hashes@1.8.0):
+ dependencies:
+ '@acemir/cssom': 0.9.31
+ '@asamuzakjp/dom-selector': 6.8.1
+ '@bramus/specificity': 2.4.2
+ '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0)
+ cssstyle: 6.2.0
+ data-urls: 7.0.0(@noble/hashes@1.8.0)
+ decimal.js: 10.6.0
+ html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0)
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ is-potential-custom-element-name: 1.0.1
+ parse5: 8.0.0
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 6.0.0
+ undici: 7.24.5
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 8.0.1
+ whatwg-mimetype: 5.0.0
+ whatwg-url: 16.0.1(@noble/hashes@1.8.0)
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - '@noble/hashes'
+ - supports-color
+
jsesc@3.1.0: {}
json-buffer@3.0.1: {}
json-parse-even-better-errors@2.3.1: {}
+ json-parse-even-better-errors@5.0.0: {}
+
json-schema-traverse@0.4.1: {}
json-schema-traverse@1.0.0: {}
@@ -24203,6 +26582,8 @@ snapshots:
json5@2.2.3: {}
+ jsonc-parser@3.3.1: {}
+
jsonfile@4.0.0:
optionalDependencies:
graceful-fs: 4.2.11
@@ -24213,6 +26594,8 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
+ jsonparse@1.3.1: {}
+
jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.9
@@ -24453,6 +26836,24 @@ snapshots:
rfdc: 1.4.1
wrap-ansi: 9.0.2
+ lmdb@3.5.1:
+ dependencies:
+ '@harperfast/extended-iterable': 1.0.3
+ msgpackr: 1.11.9
+ node-addon-api: 6.1.0
+ node-gyp-build-optional-packages: 5.2.2
+ ordered-binary: 1.6.1
+ weak-lru-cache: 1.2.2
+ optionalDependencies:
+ '@lmdb/lmdb-darwin-arm64': 3.5.1
+ '@lmdb/lmdb-darwin-x64': 3.5.1
+ '@lmdb/lmdb-linux-arm': 3.5.1
+ '@lmdb/lmdb-linux-arm64': 3.5.1
+ '@lmdb/lmdb-linux-x64': 3.5.1
+ '@lmdb/lmdb-win32-arm64': 3.5.1
+ '@lmdb/lmdb-win32-x64': 3.5.1
+ optional: true
+
load-tsconfig@0.2.5: {}
loader-runner@4.3.1: {}
@@ -24496,9 +26897,14 @@ snapshots:
chalk: 5.6.2
is-unicode-supported: 1.3.0
+ log-symbols@7.0.1:
+ dependencies:
+ is-unicode-supported: 2.1.0
+ yoctocolors: 2.1.2
+
log-update@6.1.0:
dependencies:
- ansi-escapes: 7.2.0
+ ansi-escapes: 7.3.0
cli-cursor: 5.0.0
slice-ansi: 7.1.2
strip-ansi: 7.1.2
@@ -24514,6 +26920,8 @@ snapshots:
lru-cache@11.2.4: {}
+ lru-cache@11.2.7: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
@@ -24573,6 +26981,23 @@ snapshots:
make-error@1.3.6: {}
+ make-fetch-happen@15.0.5:
+ dependencies:
+ '@gar/promise-retry': 1.0.3
+ '@npmcli/agent': 4.0.0
+ '@npmcli/redact': 4.0.0
+ cacache: 20.0.4
+ http-cache-semantics: 4.2.0
+ minipass: 7.1.2
+ minipass-fetch: 5.0.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ negotiator: 1.0.0
+ proc-log: 6.1.0
+ ssri: 13.0.1
+ transitivePeerDependencies:
+ - supports-color
+
makeerror@1.0.12:
dependencies:
tmpl: 1.0.5
@@ -25262,24 +27687,51 @@ snapshots:
dependencies:
'@isaacs/brace-expansion': 5.0.1
- minimatch@10.2.4:
+ minimatch@10.2.4:
+ dependencies:
+ brace-expansion: 5.0.4
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.12
+
+ minimatch@9.0.1:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimist@1.2.8: {}
+
+ minipass-collect@2.0.1:
+ dependencies:
+ minipass: 7.1.2
+
+ minipass-fetch@5.0.2:
+ dependencies:
+ minipass: 7.1.2
+ minipass-sized: 2.0.0
+ minizlib: 3.1.0
+ optionalDependencies:
+ iconv-lite: 0.7.2
+
+ minipass-flush@1.0.5:
dependencies:
- brace-expansion: 5.0.4
- optional: true
+ minipass: 3.3.6
- minimatch@3.1.2:
+ minipass-pipeline@1.2.4:
dependencies:
- brace-expansion: 1.1.12
+ minipass: 3.3.6
- minimatch@9.0.1:
+ minipass-sized@2.0.0:
dependencies:
- brace-expansion: 2.0.2
+ minipass: 7.1.2
- minimatch@9.0.5:
+ minipass@3.3.6:
dependencies:
- brace-expansion: 2.0.2
-
- minimist@1.2.8: {}
+ yallist: 4.0.0
minipass@7.1.2: {}
@@ -25310,7 +27762,24 @@ snapshots:
ms@2.1.3: {}
- msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2):
+ msgpackr-extract@3.0.3:
+ dependencies:
+ node-gyp-build-optional-packages: 5.2.2
+ optionalDependencies:
+ '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3
+ '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3
+ '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3
+ '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3
+ '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3
+ '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3
+ optional: true
+
+ msgpackr@1.11.9:
+ optionalDependencies:
+ msgpackr-extract: 3.0.3
+ optional: true
+
+ msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3):
dependencies:
'@inquirer/confirm': 5.1.21(@types/node@22.19.6)
'@mswjs/interceptors': 0.41.3
@@ -25330,15 +27799,40 @@ snapshots:
type-fest: 5.4.4
until-async: 3.0.2
yargs: 17.7.2
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@types/node'
+
+ msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2):
+ dependencies:
+ '@inquirer/confirm': 5.1.21(@types/node@24.12.0)
+ '@mswjs/interceptors': 0.41.3
+ '@open-draft/deferred-promise': 2.2.0
+ '@types/statuses': 2.0.6
+ cookie: 1.1.1
+ graphql: 16.12.0
+ headers-polyfill: 4.0.3
+ is-node-process: 1.2.0
+ outvariant: 1.4.3
+ path-to-regexp: 6.3.0
+ picocolors: 1.1.1
+ rettime: 0.10.1
+ statuses: 2.0.2
+ strict-event-emitter: 0.5.1
+ tough-cookie: 6.0.0
+ type-fest: 5.4.4
+ until-async: 3.0.2
+ yargs: 17.7.2
optionalDependencies:
typescript: 5.9.2
transitivePeerDependencies:
- '@types/node'
optional: true
- msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3):
+ msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3):
dependencies:
- '@inquirer/confirm': 5.1.21(@types/node@22.19.6)
+ '@inquirer/confirm': 5.1.21(@types/node@24.12.0)
'@mswjs/interceptors': 0.41.3
'@open-draft/deferred-promise': 2.2.0
'@types/statuses': 2.0.6
@@ -25360,6 +27854,7 @@ snapshots:
typescript: 5.9.3
transitivePeerDependencies:
- '@types/node'
+ optional: true
muggle-string@0.4.1: {}
@@ -25407,7 +27902,7 @@ snapshots:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
- next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3):
dependencies:
'@next/env': 16.1.1
'@swc/helpers': 0.5.15
@@ -25428,12 +27923,13 @@ snapshots:
'@next/swc-win32-x64-msvc': 16.1.1
'@opentelemetry/api': 1.9.0
babel-plugin-react-compiler: 1.0.0
+ sass: 1.97.3
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
- next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3):
dependencies:
'@next/env': 16.1.6
'@swc/helpers': 0.5.15
@@ -25454,6 +27950,7 @@ snapshots:
'@next/swc-win32-x64-msvc': 16.1.6
'@opentelemetry/api': 1.9.0
babel-plugin-react-compiler: 1.0.0
+ sass: 1.97.3
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
@@ -25464,6 +27961,12 @@ snapshots:
semver: 7.7.4
optional: true
+ node-addon-api@6.1.0:
+ optional: true
+
+ node-addon-api@7.1.1:
+ optional: true
+
node-addon-api@8.6.0:
optional: true
@@ -25477,9 +27980,29 @@ snapshots:
node-forge@1.3.3: {}
+ node-gyp-build-optional-packages@5.2.2:
+ dependencies:
+ detect-libc: 2.1.2
+ optional: true
+
node-gyp-build@4.8.4:
optional: true
+ node-gyp@12.2.0:
+ dependencies:
+ env-paths: 2.2.1
+ exponential-backoff: 3.1.3
+ graceful-fs: 4.2.11
+ make-fetch-happen: 15.0.5
+ nopt: 9.0.0
+ proc-log: 6.1.0
+ semver: 7.7.4
+ tar: 7.5.7
+ tinyglobby: 0.2.15
+ which: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+
node-int64@0.4.0: {}
node-liblzma@2.2.0:
@@ -25494,12 +28017,26 @@ snapshots:
dependencies:
abbrev: 2.0.0
+ nopt@9.0.0:
+ dependencies:
+ abbrev: 4.0.0
+
normalize-path@3.0.0: {}
normalize-svg-path@1.1.0:
dependencies:
svg-arc-to-cubic-bezier: 3.2.0
+ npm-bundled@5.0.0:
+ dependencies:
+ npm-normalize-package-bin: 5.0.0
+
+ npm-install-checks@8.0.0:
+ dependencies:
+ semver: 7.7.4
+
+ npm-normalize-package-bin@5.0.0: {}
+
npm-package-arg@11.0.3:
dependencies:
hosted-git-info: 7.0.2
@@ -25507,6 +28044,38 @@ snapshots:
semver: 7.7.4
validate-npm-package-name: 5.0.1
+ npm-package-arg@13.0.2:
+ dependencies:
+ hosted-git-info: 9.0.2
+ proc-log: 6.1.0
+ semver: 7.7.4
+ validate-npm-package-name: 7.0.2
+
+ npm-packlist@10.0.4:
+ dependencies:
+ ignore-walk: 8.0.0
+ proc-log: 6.1.0
+
+ npm-pick-manifest@11.0.3:
+ dependencies:
+ npm-install-checks: 8.0.0
+ npm-normalize-package-bin: 5.0.0
+ npm-package-arg: 13.0.2
+ semver: 7.7.4
+
+ npm-registry-fetch@19.1.1:
+ dependencies:
+ '@npmcli/redact': 4.0.0
+ jsonparse: 1.3.1
+ make-fetch-happen: 15.0.5
+ minipass: 7.1.2
+ minipass-fetch: 5.0.2
+ minizlib: 3.1.0
+ npm-package-arg: 13.0.2
+ proc-log: 6.1.0
+ transitivePeerDependencies:
+ - supports-color
+
npm-run-path@4.0.1:
dependencies:
path-key: 3.1.1
@@ -25516,6 +28085,10 @@ snapshots:
path-key: 4.0.0
unicorn-magic: 0.3.0
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
nullthrows@1.1.1: {}
nwsapi@2.2.23: {}
@@ -25648,6 +28221,20 @@ snapshots:
string-width: 7.2.0
strip-ansi: 7.1.2
+ ora@9.3.0:
+ dependencies:
+ chalk: 5.6.2
+ cli-cursor: 5.0.0
+ cli-spinners: 3.4.0
+ is-interactive: 2.0.0
+ is-unicode-supported: 2.1.0
+ log-symbols: 7.0.1
+ stdin-discarder: 0.3.1
+ string-width: 8.2.0
+
+ ordered-binary@1.6.1:
+ optional: true
+
outdent@0.5.0: {}
outvariant@1.4.3: {}
@@ -25680,6 +28267,8 @@ snapshots:
p-map@2.1.0: {}
+ p-map@7.0.4: {}
+
p-try@2.2.0: {}
package-json-from-dist@1.0.1: {}
@@ -25690,6 +28279,28 @@ snapshots:
package-manager-detector@1.6.0: {}
+ pacote@21.3.1:
+ dependencies:
+ '@npmcli/git': 7.0.2
+ '@npmcli/installed-package-contents': 4.0.0
+ '@npmcli/package-json': 7.0.5
+ '@npmcli/promise-spawn': 9.0.1
+ '@npmcli/run-script': 10.0.4
+ cacache: 20.0.4
+ fs-minipass: 3.0.3
+ minipass: 7.1.2
+ npm-package-arg: 13.0.2
+ npm-packlist: 10.0.4
+ npm-pick-manifest: 11.0.3
+ npm-registry-fetch: 19.1.1
+ proc-log: 6.1.0
+ promise-retry: 2.0.1
+ sigstore: 4.1.0
+ ssri: 13.0.1
+ tar: 7.5.7
+ transitivePeerDependencies:
+ - supports-color
+
pako@0.2.9: {}
pako@1.0.11: {}
@@ -25731,6 +28342,16 @@ snapshots:
parse-svg-path@0.1.2: {}
+ parse5-html-rewriting-stream@8.0.0:
+ dependencies:
+ entities: 6.0.1
+ parse5: 8.0.0
+ parse5-sax-parser: 8.0.0
+
+ parse5-sax-parser@8.0.0:
+ dependencies:
+ parse5: 8.0.0
+
parse5@6.0.1: {}
parse5@7.3.0:
@@ -25801,6 +28422,10 @@ snapshots:
pirates@4.0.7: {}
+ piscina@5.1.4:
+ optionalDependencies:
+ '@napi-rs/nice': 1.1.1
+
pkce-challenge@5.0.1: {}
pkg-dir@4.2.0:
@@ -25841,6 +28466,8 @@ snapshots:
tsx: 4.21.0
yaml: 2.8.3
+ postcss-media-query-parser@0.2.3: {}
+
postcss-modules-extract-imports@3.1.0(postcss@8.5.6):
dependencies:
postcss: 8.5.6
@@ -25862,6 +28489,10 @@ snapshots:
icss-utils: 5.1.0(postcss@8.5.6)
postcss: 8.5.6
+ postcss-safe-parser@7.0.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
postcss-selector-parser@7.1.1:
dependencies:
cssesc: 3.0.0
@@ -25919,6 +28550,8 @@ snapshots:
prettier@3.7.4: {}
+ prettier@3.8.1: {}
+
pretty-bytes@5.6.0: {}
pretty-format@26.6.2:
@@ -25955,8 +28588,15 @@ snapshots:
proc-log@4.2.0: {}
+ proc-log@6.1.0: {}
+
progress@2.0.3: {}
+ promise-retry@2.0.1:
+ dependencies:
+ err-code: 2.0.3
+ retry: 0.12.0
+
promise-worker-transferable@1.0.4:
dependencies:
is-promise: 2.2.2
@@ -26676,6 +29316,8 @@ snapshots:
redux@5.0.1: {}
+ reflect-metadata@0.2.2: {}
+
reflect.getprototypeof@1.0.10:
dependencies:
call-bind: 1.0.8
@@ -26874,6 +29516,8 @@ snapshots:
restructure@3.0.2: {}
+ retry@0.12.0: {}
+
retry@0.13.1: {}
rettime@0.10.1: {}
@@ -26886,6 +29530,25 @@ snapshots:
dependencies:
glob: 7.2.3
+ rolldown@1.0.0-rc.4:
+ dependencies:
+ '@oxc-project/types': 0.113.0
+ '@rolldown/pluginutils': 1.0.0-rc.4
+ optionalDependencies:
+ '@rolldown/binding-android-arm64': 1.0.0-rc.4
+ '@rolldown/binding-darwin-arm64': 1.0.0-rc.4
+ '@rolldown/binding-darwin-x64': 1.0.0-rc.4
+ '@rolldown/binding-freebsd-x64': 1.0.0-rc.4
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.4
+ '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.4
+ '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.4
+ '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4
+ '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4
+ '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4
+ '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4
+ '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4
+ '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4
+
rollup@4.55.1:
dependencies:
'@types/estree': 1.0.8
@@ -26938,23 +29601,27 @@ snapshots:
esm-env: 1.2.2
svelte: 5.54.1
- runed@0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5):
+ runed@0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5):
dependencies:
dequal: 2.0.3
esm-env: 1.2.2
lz-string: 1.5.0
svelte: 5.53.5
optionalDependencies:
- '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
- runed@0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1):
+ runed@0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1):
dependencies:
dequal: 2.0.3
esm-env: 1.2.2
lz-string: 1.5.0
svelte: 5.54.1
optionalDependencies:
- '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@sveltejs/kit': 2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
sade@1.8.1:
dependencies:
@@ -26983,6 +29650,14 @@ snapshots:
safer-buffer@2.1.2: {}
+ sass@1.97.3:
+ dependencies:
+ chokidar: 4.0.3
+ immutable: 5.1.5
+ source-map-js: 1.2.1
+ optionalDependencies:
+ '@parcel/watcher': 2.5.6
+
satori@0.19.3:
dependencies:
'@shuding/opentype.js': 1.4.0-beta.0
@@ -27292,6 +29967,17 @@ snapshots:
signal-exit@4.1.0: {}
+ sigstore@4.1.0:
+ dependencies:
+ '@sigstore/bundle': 4.0.0
+ '@sigstore/core': 3.2.0
+ '@sigstore/protobuf-specs': 0.5.0
+ '@sigstore/sign': 4.1.1
+ '@sigstore/tuf': 4.0.2
+ '@sigstore/verify': 3.1.0
+ transitivePeerDependencies:
+ - supports-color
+
simple-concat@1.0.1:
optional: true
@@ -27334,9 +30020,24 @@ snapshots:
slugify@1.6.6: {}
+ smart-buffer@4.2.0: {}
+
smol-toml@1.6.0:
optional: true
+ socks-proxy-agent@8.0.5:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3
+ socks: 2.8.7
+ transitivePeerDependencies:
+ - supports-color
+
+ socks@2.8.7:
+ dependencies:
+ ip-address: 10.0.1
+ smart-buffer: 4.2.0
+
solid-js@1.9.11:
dependencies:
csstype: 3.2.3
@@ -27388,6 +30089,15 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@4.0.0:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.23
+
+ spdx-license-ids@3.0.23: {}
+
split-on-first@1.1.0: {}
sprintf-js@1.0.3: {}
@@ -27398,6 +30108,10 @@ snapshots:
sql.js@1.14.1:
optional: true
+ ssri@13.0.1:
+ dependencies:
+ minipass: 7.1.2
+
stack-utils@2.0.6:
dependencies:
escape-string-regexp: 2.0.0
@@ -27430,6 +30144,8 @@ snapshots:
stdin-discarder@0.2.2: {}
+ stdin-discarder@0.3.1: {}
+
stop-iteration-iterator@1.1.0:
dependencies:
es-errors: 1.3.0
@@ -27504,7 +30220,7 @@ snapshots:
string-width@7.2.0:
dependencies:
emoji-regex: 10.6.0
- get-east-asian-width: 1.4.0
+ get-east-asian-width: 1.5.0
strip-ansi: 7.1.2
string-width@8.2.0:
@@ -27697,19 +30413,19 @@ snapshots:
transitivePeerDependencies:
- picomatch
- svelte-toolbelt@0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5):
+ svelte-toolbelt@0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5):
dependencies:
clsx: 2.1.1
- runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
+ runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.53.5)
style-to-object: 1.0.14
svelte: 5.53.5
transitivePeerDependencies:
- '@sveltejs/kit'
- svelte-toolbelt@0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1):
+ svelte-toolbelt@0.10.6(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1):
dependencies:
clsx: 2.1.1
- runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
+ runed: 0.35.1(@sveltejs/kit@2.53.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.54.1)
style-to-object: 1.0.14
svelte: 5.54.1
transitivePeerDependencies:
@@ -27863,16 +30579,6 @@ snapshots:
optionalDependencies:
esbuild: 0.25.0
- terser-webpack-plugin@5.3.16(webpack@5.96.1):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- jest-worker: 27.5.1
- schema-utils: 4.3.3
- serialize-javascript: 6.0.2
- terser: 5.46.0
- webpack: 5.96.1
- optional: true
-
terser@5.46.0:
dependencies:
'@jridgewell/source-map': 0.3.11
@@ -28135,6 +30841,14 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ tuf-js@4.1.0:
+ dependencies:
+ '@tufjs/models': 4.1.0
+ debug: 4.4.3
+ make-fetch-happen: 15.0.5
+ transitivePeerDependencies:
+ - supports-color
+
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1
@@ -28148,32 +30862,14 @@ snapshots:
- immer
- react
- turbo-darwin-64@2.7.4:
- optional: true
-
- turbo-darwin-arm64@2.7.4:
- optional: true
-
- turbo-linux-64@2.7.4:
- optional: true
-
- turbo-linux-arm64@2.7.4:
- optional: true
-
- turbo-windows-64@2.7.4:
- optional: true
-
- turbo-windows-arm64@2.7.4:
- optional: true
-
- turbo@2.7.4:
+ turbo@2.8.20:
optionalDependencies:
- turbo-darwin-64: 2.7.4
- turbo-darwin-arm64: 2.7.4
- turbo-linux-64: 2.7.4
- turbo-linux-arm64: 2.7.4
- turbo-windows-64: 2.7.4
- turbo-windows-arm64: 2.7.4
+ '@turbo/darwin-64': 2.8.20
+ '@turbo/darwin-arm64': 2.8.20
+ '@turbo/linux-64': 2.8.20
+ '@turbo/linux-arm64': 2.8.20
+ '@turbo/windows-64': 2.8.20
+ '@turbo/windows-arm64': 2.8.20
turndown@7.2.2:
dependencies:
@@ -28276,8 +30972,14 @@ snapshots:
undici-types@6.21.0: {}
+ undici-types@7.16.0: {}
+
undici@6.23.0: {}
+ undici@7.22.0: {}
+
+ undici@7.24.5: {}
+
unicode-canonical-property-names-ecmascript@2.0.1: {}
unicode-match-property-ecmascript@2.0.0:
@@ -28526,13 +31228,13 @@ snapshots:
string_decoder: 1.3.0
util-deprecate: 1.0.2
- vite-plugin-singlefile@2.3.0(rollup@4.55.1)(vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-plugin-singlefile@2.3.0(rollup@4.55.1)(vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
micromatch: 4.0.8
rollup: 4.55.1
- vite: 6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
'@babel/core': 7.29.0
'@types/babel__core': 7.20.5
@@ -28540,12 +31242,12 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.11
solid-refresh: 0.6.3(solid-js@1.9.11)
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
transitivePeerDependencies:
- supports-color
- vite@6.4.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
dependencies:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3)
@@ -28554,15 +31256,16 @@ snapshots:
rollup: 4.55.1
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 22.19.6
+ '@types/node': 24.12.0
fsevents: 2.3.3
jiti: 2.6.1
lightningcss: 1.32.0
+ sass: 1.97.3
terser: 5.46.0
tsx: 4.21.0
yaml: 2.8.3
- vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.2
fdir: 6.5.0(picomatch@4.0.3)
@@ -28575,11 +31278,13 @@ snapshots:
fsevents: 2.3.3
jiti: 2.6.1
lightningcss: 1.32.0
+ sass: 1.97.3
terser: 5.46.0
tsx: 4.21.0
yaml: 2.8.2
+ optional: true
- vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.2
fdir: 6.5.0(picomatch@4.0.3)
@@ -28588,27 +31293,46 @@ snapshots:
rollup: 4.55.1
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 22.19.6
+ '@types/node': 24.12.0
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ lightningcss: 1.32.0
+ sass: 1.97.3
+ terser: 5.46.0
+ tsx: 4.21.0
+ yaml: 2.8.2
+
+ vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ dependencies:
+ esbuild: 0.27.2
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.55.1
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 24.12.0
fsevents: 2.3.3
jiti: 2.6.1
lightningcss: 1.32.0
+ sass: 1.97.3
terser: 5.46.0
tsx: 4.21.0
yaml: 2.8.3
- vitefu@1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
+ vitefu@1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
optionalDependencies:
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
optional: true
- vitefu@1.1.2(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vitefu@1.1.2(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
optionalDependencies:
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
dependencies:
'@vitest/expect': 4.0.17
- '@vitest/mocker': 4.0.17(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.2))(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@vitest/mocker': 4.0.17(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.2))(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/pretty-format': 4.0.17
'@vitest/runner': 4.0.17
'@vitest/snapshot': 4.0.17
@@ -28625,12 +31349,12 @@ snapshots:
tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@types/node': 22.19.6
- jsdom: 27.4.0
+ '@types/node': 24.12.0
+ jsdom: 27.4.0(@noble/hashes@1.8.0)
transitivePeerDependencies:
- jiti
- less
@@ -28644,10 +31368,10 @@ snapshots:
- tsx
- yaml
- vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@vitest/expect': 4.0.17
- '@vitest/mocker': 4.0.17(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@vitest/mocker': 4.0.17(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/pretty-format': 4.0.17
'@vitest/runner': 4.0.17
'@vitest/snapshot': 4.0.17
@@ -28664,12 +31388,12 @@ snapshots:
tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@types/node': 22.19.6
- jsdom: 27.4.0
+ '@types/node': 24.12.0
+ jsdom: 28.1.0(@noble/hashes@1.8.0)
transitivePeerDependencies:
- jiti
- less
@@ -28683,10 +31407,10 @@ snapshots:
- tsx
- yaml
- vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@22.19.6)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
dependencies:
'@vitest/expect': 4.0.17
- '@vitest/mocker': 4.0.17(msw@2.12.10(@types/node@22.19.6)(typescript@5.9.3))(vite@7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@vitest/mocker': 4.0.17(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/pretty-format': 4.0.17
'@vitest/runner': 4.0.17
'@vitest/snapshot': 4.0.17
@@ -28703,12 +31427,12 @@ snapshots:
tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.3.1(@types/node@22.19.6)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@types/node': 22.19.6
- jsdom: 27.4.0
+ '@types/node': 24.12.0
+ jsdom: 28.1.0(@noble/hashes@1.8.0)
transitivePeerDependencies:
- jiti
- less
@@ -28782,6 +31506,9 @@ snapshots:
dependencies:
defaults: 1.0.4
+ weak-lru-cache@1.2.2:
+ optional: true
+
web-namespaces@2.0.1: {}
web-streams-polyfill@3.3.3: {}
@@ -28800,37 +31527,6 @@ snapshots:
webpack-sources@3.3.3: {}
- webpack@5.96.1:
- dependencies:
- '@types/eslint-scope': 3.7.7
- '@types/estree': 1.0.8
- '@webassemblyjs/ast': 1.14.1
- '@webassemblyjs/wasm-edit': 1.14.1
- '@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.15.0
- browserslist: 4.28.1
- chrome-trace-event: 1.0.4
- enhanced-resolve: 5.19.0
- es-module-lexer: 1.7.0
- eslint-scope: 5.1.1
- events: 3.3.0
- glob-to-regexp: 0.4.1
- graceful-fs: 4.2.11
- json-parse-even-better-errors: 2.3.1
- loader-runner: 4.3.1
- mime-types: 2.1.35
- neo-async: 2.6.2
- schema-utils: 3.3.0
- tapable: 2.3.0
- terser-webpack-plugin: 5.3.16(webpack@5.96.1)
- watchpack: 2.5.1
- webpack-sources: 3.3.3
- transitivePeerDependencies:
- - '@swc/core'
- - esbuild
- - uglify-js
- optional: true
-
webpack@5.96.1(esbuild@0.25.0):
dependencies:
'@types/eslint-scope': 3.7.7
@@ -28871,6 +31567,8 @@ snapshots:
whatwg-mimetype@4.0.0: {}
+ whatwg-mimetype@5.0.0: {}
+
whatwg-url-without-unicode@8.0.0-3:
dependencies:
buffer: 5.7.1
@@ -28882,6 +31580,14 @@ snapshots:
tr46: 6.0.0
webidl-conversions: 8.0.1
+ whatwg-url@16.0.1(@noble/hashes@1.8.0):
+ dependencies:
+ '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0)
+ tr46: 6.0.0
+ webidl-conversions: 8.0.1
+ transitivePeerDependencies:
+ - '@noble/hashes'
+
whatwg-url@7.1.0:
dependencies:
lodash.sortby: 4.7.0
@@ -28943,6 +31649,10 @@ snapshots:
dependencies:
isexe: 3.1.5
+ which@6.0.1:
+ dependencies:
+ isexe: 4.0.0
+
why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
@@ -29049,6 +31759,8 @@ snapshots:
yargs-parser@21.1.1: {}
+ yargs-parser@22.0.0: {}
+
yargs@16.2.0:
dependencies:
cliui: 7.0.4
@@ -29069,6 +31781,15 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
+ yargs@18.0.0:
+ dependencies:
+ cliui: 9.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ string-width: 7.2.0
+ y18n: 5.0.8
+ yargs-parser: 22.0.0
+
yauzl@2.10.0:
dependencies:
buffer-crc32: 0.2.13
@@ -29098,6 +31819,8 @@ snapshots:
zod@4.3.6: {}
+ zone.js@0.16.1: {}
+
zustand@4.5.7(@types/react@19.2.3)(immer@11.1.4)(react@19.2.4):
dependencies:
use-sync-external-store: 1.6.0(react@19.2.4)
diff --git a/turbo.json b/turbo.json
index 0870c62a..270ec7e6 100644
--- a/turbo.json
+++ b/turbo.json
@@ -1,5 +1,5 @@
{
- "$schema": "https://turborepo.dev/schema.json",
+ "$schema": "https://turbo.build/schema.json",
"ui": "tui",
"globalEnv": ["AI_GATEWAY_MODEL", "ELEVENLABS_API_KEY", "KV_REST_API_URL", "KV_REST_API_TOKEN", "RATE_LIMIT_PER_MINUTE", "RATE_LIMIT_PER_DAY"],
"tasks": {