diff --git a/packages/stack/package.json b/packages/stack/package.json index ea61bf74..5fc64e06 100644 --- a/packages/stack/package.json +++ b/packages/stack/package.json @@ -1,6 +1,6 @@ { "name": "@btst/stack", - "version": "2.12.0", + "version": "2.12.1", "description": "A composable, plugin-based library for building full-stack applications.", "repository": { "type": "git", diff --git a/packages/stack/registry/btst-cms.json b/packages/stack/registry/btst-cms.json index abd0ea0d..48cfc907 100644 --- a/packages/stack/registry/btst-cms.json +++ b/packages/stack/registry/btst-cms.json @@ -31,13 +31,13 @@ { "path": "btst/cms/types.ts", "type": "registry:lib", - "content": "import type { z } from \"zod\";\n\n/**\n * Configuration for a content type defined by the developer.\n *\n * Field types are now specified directly in the Zod schema via .meta():\n * @example\n * ```typescript\n * const ProductSchema = z.object({\n * description: z.string().meta({ fieldType: \"textarea\" }),\n * image: z.string().optional().meta({ fieldType: \"file\" }),\n * });\n * ```\n */\nexport interface ContentTypeConfig {\n\t/** Display name for the content type (e.g., \"Product\", \"Testimonial\") */\n\tname: string;\n\t/** URL-friendly slug (e.g., \"product\", \"testimonial\") */\n\tslug: string;\n\t/** Optional description shown in the admin UI */\n\tdescription?: string;\n\t/** Zod schema defining the content type's fields. Use .meta({ fieldType: \"...\" }) for field type overrides. */\n\tschema: z.ZodObject;\n}\n\n/**\n * Content type stored in the database\n */\nexport type ContentType = {\n\tid: string;\n\t/** Display name */\n\tname: string;\n\t/** URL-friendly slug - unique identifier */\n\tslug: string;\n\t/** Optional description */\n\tdescription?: string;\n\t/** JSON Schema representation of the Zod schema (stringified) */\n\tjsonSchema: string;\n\t/** @deprecated Legacy field config - now embedded in jsonSchema. Kept for backwards compat. */\n\tfieldConfig?: string;\n\t/** AutoForm schema version. 1 = legacy (separate fieldConfig), 2 = unified (fieldType in jsonSchema) */\n\tautoFormVersion?: number;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n};\n\n/**\n * Content item stored in the database\n */\nexport type ContentItem = {\n\tid: string;\n\t/** Reference to the content type */\n\tcontentTypeId: string;\n\t/** URL-friendly slug - unique within content type */\n\tslug: string;\n\t/** JSON data matching the content type's schema (stringified) */\n\tdata: string;\n\t/** Optional author ID for tracking who created/modified */\n\tauthorId?: string;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n};\n\n/**\n * Content item with its content type joined\n */\nexport type ContentItemWithType = ContentItem & {\n\tcontentType?: ContentType;\n};\n\n/**\n * Content relation stored in the database (junction table)\n * Links source content items to target content items for relationship fields\n */\nexport type ContentRelation = {\n\tid: string;\n\t/** The content item that has the relation field */\n\tsourceId: string;\n\t/** The content item being referenced */\n\ttargetId: string;\n\t/** The field name in the source content type schema (e.g., \"categoryIds\") */\n\tfieldName: string;\n\tcreatedAt: Date;\n};\n\n// ========== Relation Field Types ==========\n\n/**\n * Configuration for a relation field in schema metadata.\n * Use with .meta({ fieldType: \"relation\", relation: {...} })\n *\n * The schema stores relation values as simple `{ id: string }` references.\n * When `creatable: true`, the frontend sends `{ _new: true, data: {...} }`\n * which the API processes before validation - creating new items and\n * converting them to ID references.\n *\n * @example\n * ```typescript\n * const ResourceSchema = z.object({\n * // Simple array of ID references - API handles _new items before validation\n * categoryIds: z.array(z.object({ id: z.string() })).default([]).meta({\n * fieldType: \"relation\",\n * relation: {\n * type: \"manyToMany\",\n * targetType: \"category\",\n * displayField: \"name\",\n * creatable: true,\n * },\n * }),\n * });\n * ```\n */\nexport interface RelationConfig {\n\t/** Relation type */\n\ttype: \"belongsTo\" | \"hasMany\" | \"manyToMany\";\n\t/** Target content type slug */\n\ttargetType: string;\n\t/** Field to display in the dropdown (e.g., \"name\", \"title\") */\n\tdisplayField: string;\n\t/** Allow creating new items inline via modal (default: false) */\n\tcreatable?: boolean;\n}\n\n/**\n * Value for a relation field - either a reference to existing item or a new item to create.\n *\n * @example\n * ```typescript\n * // Reference to existing item\n * const existing: RelationValue = { id: \"abc123\" };\n *\n * // New item to create on save\n * const newItem: RelationValue = {\n * _new: true,\n * data: { name: \"New Category\", description: \"...\" }\n * };\n * ```\n */\nexport type RelationValue =\n\t| { id: string }\n\t| { _new: true; data: Record };\n\n/**\n * Represents an inverse relation (content types that reference this type via belongsTo)\n */\nexport interface InverseRelation {\n\t/** The content type slug that has the belongsTo relation */\n\tsourceType: string;\n\t/** Display name of the source content type */\n\tsourceTypeName: string;\n\t/** The field name that contains the belongsTo relation */\n\tfieldName: string;\n\t/** Count of items with this relation (when itemId is provided) */\n\tcount: number;\n}\n\n/**\n * Serialized content type for API responses (dates as strings)\n */\nexport interface SerializedContentType\n\textends Omit {\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\n/**\n * Serialized content item for API responses (dates as strings)\n */\nexport interface SerializedContentItem\n\textends Omit {\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\n/**\n * Serialized content item with parsed data and joined content type\n * @template TData - The type of the parsed data (defaults to Record)\n */\nexport interface SerializedContentItemWithType>\n\textends SerializedContentItem {\n\t/** Parsed data object (JSON.parse of data field). */\n\tparsedData: TData;\n\t/** Joined content type */\n\tcontentType?: SerializedContentType;\n\t/**\n\t * Populated relation data (only present when using populated endpoints/hooks).\n\t * Keys are field names, values are arrays of related content items.\n\t */\n\t_relations?: Record;\n}\n\n/**\n * Paginated list response for content items\n * @template TData - The type of the parsed data (defaults to Record)\n */\nexport interface PaginatedContentItems> {\n\titems: SerializedContentItemWithType[];\n\ttotal: number;\n\tlimit: number;\n\toffset: number;\n}\n\n/**\n * Type helper to define a map of content type slugs to their data types.\n * Use with z.infer to get the type from your Zod schemas.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\"\n *\n * // Define your schemas\n * export const ProductSchema = z.object({\n * name: z.string(),\n * price: z.number(),\n * })\n *\n * export const TestimonialSchema = z.object({\n * author: z.string(),\n * quote: z.string(),\n * })\n *\n * // Create the type map\n * export type MyCMSTypes = {\n * product: z.infer\n * testimonial: z.infer\n * }\n *\n * // Use in hooks for type-safe parsedData\n * const { items } = useContent(\"product\")\n * // items[0].parsedData.name is typed as string\n * // items[0].parsedData.price is typed as number\n * ```\n */\nexport type CMSContentTypeMap = Record>;\n\n/**\n * Context passed to CMS backend hooks\n */\nexport interface CMSHookContext {\n\t/** Content type slug */\n\ttypeSlug: string;\n\t/** User ID if authenticated */\n\tuserId?: string;\n\t/** Request headers */\n\theaders?: Headers;\n}\n\n/**\n * Hooks for customizing CMS backend behavior\n *\n * Note: Before hooks deny operations by throwing an error.\n * They cannot modify the data being saved. This ensures consistency\n * between the stored content item data and relation junction tables.\n */\nexport interface CMSBackendHooks {\n\t/** Called before creating a content item. Throw an error to deny the operation. */\n\tonBeforeCreate?: (\n\t\tdata: Record,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called after creating a content item */\n\tonAfterCreate?: (\n\t\titem: SerializedContentItem,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called before updating a content item. Throw an error to deny the operation. */\n\tonBeforeUpdate?: (\n\t\tid: string,\n\t\tdata: Record,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called after updating a content item */\n\tonAfterUpdate?: (\n\t\titem: SerializedContentItem,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called before deleting a content item. Throw an error to deny the operation. */\n\tonBeforeDelete?: (\n\t\tid: string,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called after deleting a content item */\n\tonAfterDelete?: (id: string, context: CMSHookContext) => Promise | void;\n\n\t/** Called on any CMS error */\n\tonError?: (\n\t\terror: Error,\n\t\toperation: \"create\" | \"update\" | \"delete\" | \"list\" | \"get\",\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n}\n\n/**\n * Configuration for the CMS backend plugin\n */\nexport interface CMSBackendConfig {\n\t/** Content types defined by the developer */\n\tcontentTypes: ContentTypeConfig[];\n\t/** Optional hooks for customizing behavior */\n\thooks?: CMSBackendHooks;\n}\n", + "content": "import type { z } from \"zod\";\n\n/**\n * Configuration for a content type defined by the developer.\n *\n * Field types are now specified directly in the Zod schema via .meta():\n * @example\n * ```typescript\n * const ProductSchema = z.object({\n * description: z.string().meta({ fieldType: \"textarea\" }),\n * image: z.string().optional().meta({ fieldType: \"file\" }),\n * });\n * ```\n */\nexport interface ContentTypeConfig {\n\t/** Display name for the content type (e.g., \"Product\", \"Testimonial\") */\n\tname: string;\n\t/** URL-friendly slug (e.g., \"product\", \"testimonial\") */\n\tslug: string;\n\t/** Optional description shown in the admin UI */\n\tdescription?: string;\n\t/** Zod schema defining the content type's fields. Use .meta({ fieldType: \"...\" }) for field type overrides. */\n\tschema: z.ZodObject;\n}\n\n/**\n * Content type stored in the database\n */\nexport type ContentType = {\n\tid: string;\n\t/** Display name */\n\tname: string;\n\t/** URL-friendly slug - unique identifier */\n\tslug: string;\n\t/** Optional description */\n\tdescription?: string;\n\t/** JSON Schema representation of the Zod schema (stringified) */\n\tjsonSchema: string;\n\t/** @deprecated Legacy field config - now embedded in jsonSchema. Kept for backwards compat. */\n\tfieldConfig?: string;\n\t/** AutoForm schema version. 1 = legacy (separate fieldConfig), 2 = unified (fieldType in jsonSchema) */\n\tautoFormVersion?: number;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n};\n\n/**\n * Content item stored in the database\n */\nexport type ContentItem = {\n\tid: string;\n\t/** Reference to the content type */\n\tcontentTypeId: string;\n\t/** URL-friendly slug - unique within content type */\n\tslug: string;\n\t/** JSON data matching the content type's schema (stringified) */\n\tdata: string;\n\t/** Optional author ID for tracking who created/modified */\n\tauthorId?: string;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n};\n\n/**\n * Content item with its content type joined\n */\nexport type ContentItemWithType = ContentItem & {\n\tcontentType?: ContentType;\n};\n\n/**\n * Content relation stored in the database (junction table)\n * Links source content items to target content items for relationship fields\n */\nexport type ContentRelation = {\n\tid: string;\n\t/** The content item that has the relation field */\n\tsourceId: string;\n\t/** The content item being referenced */\n\ttargetId: string;\n\t/** The field name in the source content type schema (e.g., \"categoryIds\") */\n\tfieldName: string;\n\tcreatedAt: Date;\n};\n\n// ========== Relation Field Types ==========\n\n/**\n * Configuration for a relation field in schema metadata.\n * Use with .meta({ fieldType: \"relation\", relation: {...} })\n *\n * The schema stores relation values as simple `{ id: string }` references.\n * When `creatable: true`, the frontend sends `{ _new: true, data: {...} }`\n * which the API processes before validation - creating new items and\n * converting them to ID references.\n *\n * @example\n * ```typescript\n * const ResourceSchema = z.object({\n * // Simple array of ID references - API handles _new items before validation\n * categoryIds: z.array(z.object({ id: z.string() })).default([]).meta({\n * fieldType: \"relation\",\n * relation: {\n * type: \"manyToMany\",\n * targetType: \"category\",\n * displayField: \"name\",\n * creatable: true,\n * },\n * }),\n * });\n * ```\n */\nexport interface RelationConfig {\n\t/** Relation type */\n\ttype: \"belongsTo\" | \"hasMany\" | \"manyToMany\";\n\t/** Target content type slug */\n\ttargetType: string;\n\t/** Field to display in the dropdown (e.g., \"name\", \"title\") */\n\tdisplayField: string;\n\t/** Allow creating new items inline via modal (default: false) */\n\tcreatable?: boolean;\n}\n\n/**\n * Value for a relation field - either a reference to existing item or a new item to create.\n *\n * @example\n * ```typescript\n * // Reference to existing item\n * const existing: RelationValue = { id: \"abc123\" };\n *\n * // New item to create on save\n * const newItem: RelationValue = {\n * _new: true,\n * data: { name: \"New Category\", description: \"...\" }\n * };\n * ```\n */\nexport type RelationValue =\n\t| { id: string }\n\t| { _new: true; data: Record };\n\n/**\n * Represents an inverse relation (content types that reference this type via belongsTo)\n */\nexport interface InverseRelation {\n\t/** The content type slug that has the belongsTo relation */\n\tsourceType: string;\n\t/** Display name of the source content type */\n\tsourceTypeName: string;\n\t/** The field name that contains the belongsTo relation */\n\tfieldName: string;\n\t/** Count of items with this relation (when itemId is provided) */\n\tcount: number;\n}\n\n/**\n * Serialized content type for API responses (dates as strings)\n */\nexport interface SerializedContentType\n\textends Omit {\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\n/**\n * Serialized content item for API responses (dates as strings)\n */\nexport interface SerializedContentItem\n\textends Omit {\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\n/**\n * Serialized content item with parsed data and joined content type\n * @template TData - The type of the parsed data (defaults to Record)\n */\nexport interface SerializedContentItemWithType>\n\textends SerializedContentItem {\n\t/** Parsed data object (JSON.parse of data field). */\n\tparsedData: TData;\n\t/** Joined content type */\n\tcontentType?: SerializedContentType;\n\t/**\n\t * Populated relation data (only present when using populated endpoints/hooks).\n\t * Keys are field names, values are arrays of related content items.\n\t */\n\t_relations?: Record;\n}\n\n/**\n * Paginated list response for content items\n * @template TData - The type of the parsed data (defaults to Record)\n */\nexport interface PaginatedContentItems> {\n\titems: SerializedContentItemWithType[];\n\ttotal: number;\n\tlimit: number;\n\toffset: number;\n}\n\n/**\n * Type helper to define a map of content type slugs to their data types.\n * Use with z.infer to get the type from your Zod schemas.\n *\n * @example\n * ```typescript\n * import { z } from \"zod\"\n *\n * // Define your schemas\n * export const ProductSchema = z.object({\n * name: z.string(),\n * price: z.number(),\n * })\n *\n * export const TestimonialSchema = z.object({\n * author: z.string(),\n * quote: z.string(),\n * })\n *\n * // Create the type map\n * export type MyCMSTypes = {\n * product: z.infer\n * testimonial: z.infer\n * }\n *\n * // Use in hooks for type-safe parsedData\n * const { items } = useContent(\"product\")\n * // items[0].parsedData.name is typed as string\n * // items[0].parsedData.price is typed as number\n * ```\n */\nexport type CMSContentTypeMap = Record>;\n\n/**\n * Context passed to CMS backend hooks\n */\nexport interface CMSHookContext {\n\t/** Content type slug */\n\ttypeSlug: string;\n\t/** User ID if authenticated */\n\tuserId?: string;\n\t/** Request headers */\n\theaders?: Headers;\n}\n\n/**\n * Hooks for customizing CMS backend behavior\n *\n * Note: Before hooks deny operations by throwing an error.\n * They cannot modify the data being saved. This ensures consistency\n * between the stored content item data and relation junction tables.\n */\nexport interface CMSBackendHooks {\n\t/** Called before creating a content item. Throw an error to deny the operation. */\n\tonBeforeCreate?: (\n\t\tdata: Record,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called after creating a content item */\n\tonAfterCreate?: (\n\t\titem: SerializedContentItem,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called before updating a content item. Throw an error to deny the operation. */\n\tonBeforeUpdate?: (\n\t\tid: string,\n\t\tdata: Record,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called after updating a content item */\n\tonAfterUpdate?: (\n\t\titem: SerializedContentItem,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called before deleting a content item. Throw an error to deny the operation. */\n\tonBeforeDelete?: (\n\t\tid: string,\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n\n\t/** Called after deleting a content item */\n\tonAfterDelete?: (id: string, context: CMSHookContext) => Promise | void;\n\n\t/** Called on any CMS error */\n\tonError?: (\n\t\terror: Error,\n\t\toperation: \"create\" | \"update\" | \"delete\" | \"list\" | \"get\",\n\t\tcontext: CMSHookContext,\n\t) => Promise | void;\n}\n\n/**\n * Configuration for the CMS backend plugin\n */\nexport interface CMSBackendConfig {\n\t/** Content types defined by the developer */\n\tcontentTypes: ContentTypeConfig[];\n\t/** Optional hooks for customizing behavior */\n\thooks?: CMSBackendHooks;\n\t/**\n\t * Maximum number of items that can be requested in a single page.\n\t * Applied to all list endpoints (`/content/:typeSlug`, by-relation, and inverse-relation).\n\t *\n\t * Raise this when your content types have many items and you need to fetch\n\t * large pages (e.g. for SSG, CSV export, or programmatic access).\n\t *\n\t * @default 1000\n\t */\n\tmaxPageSize?: number;\n}\n", "target": "src/components/btst/cms/types.ts" }, { "path": "btst/cms/schemas.ts", "type": "registry:lib", - "content": "import { z } from \"zod\";\n\n/**\n * Schema for listing content items with pagination\n */\nexport const listContentQuerySchema = z.object({\n\tslug: z.string().optional(),\n\tlimit: z.coerce.number().min(1).max(100).optional().default(20),\n\toffset: z.coerce.number().min(0).optional().default(0),\n});\n\n/**\n * Schema for creating a content item\n * Note: The actual data validation is done dynamically based on the content type's schema\n */\nexport const createContentSchema = z.object({\n\tslug: z.string().min(1, \"Slug is required\"),\n\t// Use passthrough object instead of z.record(z.unknown()) due to Zod v4 bug\n\tdata: z.object({}).passthrough(),\n});\n\n/**\n * Schema for updating a content item\n * Note: The actual data validation is done dynamically based on the content type's schema\n */\nexport const updateContentSchema = z.object({\n\tslug: z.string().min(1, \"Slug is required\").optional(),\n\t// Use passthrough object instead of z.record(z.unknown()) due to Zod v4 bug\n\tdata: z.object({}).passthrough().optional(),\n});\n\n/**\n * Schema for content type response\n * Note: fieldConfig is no longer included - it's merged into jsonSchema during read\n */\nexport const contentTypeResponseSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tslug: z.string(),\n\tdescription: z.string().nullable().optional(),\n\tjsonSchema: z.string(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n});\n\n/**\n * Schema for content item response\n */\nexport const contentItemResponseSchema = z.object({\n\tid: z.string(),\n\tcontentTypeId: z.string(),\n\tslug: z.string(),\n\tdata: z.string(),\n\tauthorId: z.string().nullable().optional(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n});\n\n/**\n * Schema for content item with parsed data response\n */\nexport const contentItemWithDataResponseSchema =\n\tcontentItemResponseSchema.extend({\n\t\t// Use passthrough object instead of z.record(z.unknown()) due to Zod v4 bug\n\t\tparsedData: z.object({}).passthrough(),\n\t\tcontentType: contentTypeResponseSchema.optional(),\n\t});\n\n/**\n * Schema for paginated content items response\n */\nexport const paginatedContentResponseSchema = z.object({\n\titems: z.array(contentItemWithDataResponseSchema),\n\ttotal: z.number(),\n\tlimit: z.number(),\n\toffset: z.number(),\n});\n\nexport type ListContentQuery = z.infer;\nexport type CreateContentInput = z.infer;\nexport type UpdateContentInput = z.infer;\n", + "content": "import { z } from \"zod\";\n\n/** Default upper bound for a single page when no maxPageSize is configured. */\nexport const DEFAULT_MAX_PAGE_SIZE = 1000;\n\n/**\n * Factory that creates the list-content query schema with a configurable\n * upper bound on the `limit` parameter.\n *\n * Use this inside the backend plugin factory (where `config.maxPageSize` is\n * available) so the cap is set at registration time rather than hardcoded.\n */\nexport function createListContentQuerySchema(\n\tmaxPageSize = DEFAULT_MAX_PAGE_SIZE,\n) {\n\treturn z.object({\n\t\tslug: z.string().optional(),\n\t\tlimit: z.coerce.number().min(1).max(maxPageSize).optional().default(20),\n\t\toffset: z.coerce.number().min(0).optional().default(0),\n\t});\n}\n\n/**\n * Schema for listing content items with pagination.\n * Uses the default maxPageSize (1000).\n *\n * @deprecated Prefer {@link createListContentQuerySchema} inside plugin\n * factories so consumers can configure the upper bound via `maxPageSize`.\n */\nexport const listContentQuerySchema = createListContentQuerySchema();\n\n/**\n * Schema for creating a content item\n * Note: The actual data validation is done dynamically based on the content type's schema\n */\nexport const createContentSchema = z.object({\n\tslug: z.string().min(1, \"Slug is required\"),\n\t// Use passthrough object instead of z.record(z.unknown()) due to Zod v4 bug\n\tdata: z.object({}).passthrough(),\n});\n\n/**\n * Schema for updating a content item\n * Note: The actual data validation is done dynamically based on the content type's schema\n */\nexport const updateContentSchema = z.object({\n\tslug: z.string().min(1, \"Slug is required\").optional(),\n\t// Use passthrough object instead of z.record(z.unknown()) due to Zod v4 bug\n\tdata: z.object({}).passthrough().optional(),\n});\n\n/**\n * Schema for content type response\n * Note: fieldConfig is no longer included - it's merged into jsonSchema during read\n */\nexport const contentTypeResponseSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tslug: z.string(),\n\tdescription: z.string().nullable().optional(),\n\tjsonSchema: z.string(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n});\n\n/**\n * Schema for content item response\n */\nexport const contentItemResponseSchema = z.object({\n\tid: z.string(),\n\tcontentTypeId: z.string(),\n\tslug: z.string(),\n\tdata: z.string(),\n\tauthorId: z.string().nullable().optional(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n});\n\n/**\n * Schema for content item with parsed data response\n */\nexport const contentItemWithDataResponseSchema =\n\tcontentItemResponseSchema.extend({\n\t\t// Use passthrough object instead of z.record(z.unknown()) due to Zod v4 bug\n\t\tparsedData: z.object({}).passthrough(),\n\t\tcontentType: contentTypeResponseSchema.optional(),\n\t});\n\n/**\n * Schema for paginated content items response\n */\nexport const paginatedContentResponseSchema = z.object({\n\titems: z.array(contentItemWithDataResponseSchema),\n\ttotal: z.number(),\n\tlimit: z.number(),\n\toffset: z.number(),\n});\n\nexport type ListContentQuery = z.infer;\nexport type CreateContentInput = z.infer;\nexport type UpdateContentInput = z.infer;\n", "target": "src/components/btst/cms/schemas.ts" }, { @@ -61,7 +61,7 @@ { "path": "btst/cms/client/components/forms/relation-field.tsx", "type": "registry:component", - "content": "\"use client\";\n\nimport { useState, useCallback, useMemo } from \"react\";\nimport { useContent, useCreateContent } from \"@btst/stack/plugins/cms/client/hooks\";\nimport MultipleSelector from \"@/components/ui/multi-select\";\nimport type { Option } from \"@/components/ui/multi-select\";\nimport { Button } from \"@/components/ui/button\";\nimport { Plus, X } from \"lucide-react\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport type { AutoFormInputComponentProps } from \"@/components/ui/auto-form/types\";\nimport type { RelationConfig } from \"../../../types\";\n\ninterface RelationFieldProps extends AutoFormInputComponentProps {\n\trelation: RelationConfig;\n}\n\n/**\n * A form field component for handling CMS content relationships.\n * Supports selecting existing items and optionally creating new items inline.\n *\n * Handles two value formats:\n * - belongsTo: single object { id: string } or undefined\n * - hasMany/manyToMany: array of { id: string }\n */\nexport function RelationField({\n\tfield,\n\tfieldConfigItem,\n\tlabel,\n\tisRequired,\n\trelation,\n}: RelationFieldProps) {\n\tconst [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false);\n\tconst [newItemName, setNewItemName] = useState(\"\");\n\tconst [newItemDescription, setNewItemDescription] = useState(\"\");\n\tconst [createError, setCreateError] = useState(null);\n\n\t// For belongsTo (single relation), we only allow one selection\n\tconst isSingleSelect = relation.type === \"belongsTo\";\n\n\t// Fetch available items from the target content type\n\tconst { items: availableItems, isLoading } = useContent(relation.targetType, {\n\t\tlimit: 100, // Load a good chunk for the dropdown\n\t});\n\n\t// Mutation for creating new items\n\tconst createMutation = useCreateContent(relation.targetType);\n\n\t// Normalize the field value to an array for internal use\n\t// belongsTo stores as single object { id }, hasMany/manyToMany store as array\n\tconst normalizedValue = useMemo((): Array<{ id: string }> => {\n\t\tif (!field.value) return [];\n\n\t\tif (isSingleSelect) {\n\t\t\t// belongsTo: value is { id: string } or undefined\n\t\t\tconst singleValue = field.value as { id?: string } | undefined;\n\t\t\tif (singleValue && singleValue.id) {\n\t\t\t\treturn [{ id: singleValue.id }];\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\n\t\t// hasMany/manyToMany: value is array\n\t\treturn (field.value as Array<{ id: string }>) || [];\n\t}, [field.value, isSingleSelect]);\n\n\t// Convert normalized value to Option[] for MultipleSelector\n\tconst selectedOptions: Option[] = normalizedValue\n\t\t.map((v) => {\n\t\t\tconst item = availableItems.find((item) => item.id === v.id);\n\t\t\tif (item) {\n\t\t\t\tconst displayValue =\n\t\t\t\t\t(item.parsedData as Record)?.[\n\t\t\t\t\t\trelation.displayField\n\t\t\t\t\t] || item.slug;\n\t\t\t\treturn {\n\t\t\t\t\tvalue: item.id,\n\t\t\t\t\tlabel: String(displayValue),\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Item not found in loaded items - show ID\n\t\t\treturn { value: v.id, label: `ID: ${v.id.slice(0, 8)}...` };\n\t\t})\n\t\t.filter(Boolean);\n\n\t// Convert available items to options\n\tconst options: Option[] = availableItems.map((item) => {\n\t\tconst displayValue =\n\t\t\t(item.parsedData as Record)?.[relation.displayField] ||\n\t\t\titem.slug;\n\t\treturn {\n\t\t\tvalue: item.id,\n\t\t\tlabel: String(displayValue),\n\t\t};\n\t});\n\n\t// Handle selection change - convert back to appropriate format\n\tconst handleChange = useCallback(\n\t\t(newOptions: Option[]) => {\n\t\t\tif (isSingleSelect) {\n\t\t\t\t// belongsTo: store as single object or undefined\n\t\t\t\tif (newOptions.length > 0) {\n\t\t\t\t\tfield.onChange({ id: newOptions[0]!.value });\n\t\t\t\t} else {\n\t\t\t\t\tfield.onChange(undefined);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// hasMany/manyToMany: store as array\n\t\t\t\tconst newValue = newOptions.map((opt) => ({ id: opt.value }));\n\t\t\t\tfield.onChange(newValue);\n\t\t\t}\n\t\t},\n\t\t[field, isSingleSelect],\n\t);\n\n\t// Handle creating a new item\n\tconst handleCreateItem = async () => {\n\t\tif (!newItemName.trim()) return;\n\n\t\tsetCreateError(null);\n\t\ttry {\n\t\t\tconst result = await createMutation.mutateAsync({\n\t\t\t\tslug: newItemName.toLowerCase().replace(/\\s+/g, \"-\"),\n\t\t\t\tdata: {\n\t\t\t\t\t[relation.displayField]: newItemName,\n\t\t\t\t\tdescription: newItemDescription || undefined,\n\t\t\t\t} as Record,\n\t\t\t});\n\n\t\t\t// Add the new item to the selection\n\t\t\tif (isSingleSelect) {\n\t\t\t\t// belongsTo: replace with new item\n\t\t\t\tfield.onChange({ id: result.id });\n\t\t\t} else {\n\t\t\t\t// hasMany/manyToMany: append to array\n\t\t\t\tconst newValue = [...normalizedValue, { id: result.id }];\n\t\t\t\tfield.onChange(newValue);\n\t\t\t}\n\n\t\t\t// Reset and close dialog\n\t\t\tsetNewItemName(\"\");\n\t\t\tsetNewItemDescription(\"\");\n\t\t\tsetIsCreateDialogOpen(false);\n\t\t} catch (error) {\n\t\t\tconst message =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Failed to create item. Please try again.\";\n\t\t\tsetCreateError(message);\n\t\t}\n\t};\n\n\t// Handle removing an item\n\tconst handleRemove = useCallback(\n\t\t(idToRemove: string) => {\n\t\t\tif (isSingleSelect) {\n\t\t\t\t// belongsTo: clear the value\n\t\t\t\tfield.onChange(undefined);\n\t\t\t} else {\n\t\t\t\t// hasMany/manyToMany: filter out the item\n\t\t\t\tconst newValue = normalizedValue.filter((v) => v.id !== idToRemove);\n\t\t\t\tfield.onChange(newValue);\n\t\t\t}\n\t\t},\n\t\t[normalizedValue, field, isSingleSelect],\n\t);\n\n\treturn (\n\t\t
\n\t\t\t\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\t\tNo {relation.targetType} items found\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmaxSelected={isSingleSelect ? 1 : undefined}\n\t\t\t\t\t\tclassName=\"min-h-10\"\n\t\t\t\t\t/>\n\t\t\t\t
\n\n\t\t\t\t{/* Create new item button/dialog */}\n\t\t\t\t{relation.creatable && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCreate New {relation.targetType}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{createError && (\n\t\t\t\t\t\t\t\t\t

{createError}

\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setNewItemName(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={`Enter ${relation.displayField}...`}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setNewItemDescription(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"Enter description...\"\n\t\t\t\t\t\t\t\t\t\trows={3}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t setIsCreateDialogOpen(false)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{createMutation.isPending ? \"Creating...\" : \"Create\"}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t{/* Show selected items as removable badges */}\n\t\t\t{selectedOptions.length > 0 && (\n\t\t\t\t
\n\t\t\t\t\t{selectedOptions.map((opt) => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t handleRemove(opt.value)}\n\t\t\t\t\t\t\t\tclassName=\"hover:text-destructive\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t))}\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{fieldConfigItem?.description && (\n\t\t\t\t

\n\t\t\t\t\t{fieldConfigItem.description}\n\t\t\t\t

\n\t\t\t)}\n\t\t\n\t);\n}\n", + "content": "\"use client\";\n\nimport { useState, useCallback, useMemo } from \"react\";\nimport { useQueries } from \"@tanstack/react-query\";\nimport { createApiClient } from \"@btst/stack/plugins/client\";\nimport { usePluginOverrides } from \"@btst/stack/context\";\nimport { useContent, useCreateContent } from \"@btst/stack/plugins/cms/client/hooks\";\nimport type { CMSApiRouter } from \"@btst/stack/plugins/cms/api\";\nimport type { SerializedContentItemWithType } from \"../../../types\";\nimport type { CMSPluginOverrides } from \"../../overrides\";\nimport { createCMSQueryKeys } from \"@btst/stack/plugins/cms/api\";\nimport MultipleSelector from \"@/components/ui/multi-select\";\nimport type { Option } from \"@/components/ui/multi-select\";\nimport { Button } from \"@/components/ui/button\";\nimport { Plus, X } from \"lucide-react\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport type { AutoFormInputComponentProps } from \"@/components/ui/auto-form/types\";\nimport type { RelationConfig } from \"../../../types\";\n\n/** Match cms-hooks SHARED_QUERY_CONFIG for detail fetches (deduped labels). */\nconst RELATION_DETAIL_QUERY_OPTS = {\n\tretry: false,\n\trefetchOnWindowFocus: false,\n\trefetchOnMount: false,\n\trefetchOnReconnect: false,\n\tstaleTime: 1000 * 60 * 5,\n\tgcTime: 1000 * 60 * 10,\n} as const;\n\ninterface RelationFieldProps extends AutoFormInputComponentProps {\n\trelation: RelationConfig;\n}\n\n/**\n * A form field component for handling CMS content relationships.\n * Supports selecting existing items and optionally creating new items inline.\n *\n * Handles two value formats:\n * - belongsTo: single object { id: string } or undefined\n * - hasMany/manyToMany: array of { id: string }\n */\nexport function RelationField({\n\tfield,\n\tfieldConfigItem,\n\tlabel,\n\tisRequired,\n\trelation,\n}: RelationFieldProps) {\n\tconst [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false);\n\tconst [newItemName, setNewItemName] = useState(\"\");\n\tconst [newItemDescription, setNewItemDescription] = useState(\"\");\n\tconst [createError, setCreateError] = useState(null);\n\n\tconst { apiBaseURL, apiBasePath, headers } =\n\t\tusePluginOverrides(\"cms\");\n\n\tconst listClient = useMemo(\n\t\t() =>\n\t\t\tcreateApiClient({\n\t\t\t\tbaseURL: apiBaseURL,\n\t\t\t\tbasePath: apiBasePath,\n\t\t\t}),\n\t\t[apiBaseURL, apiBasePath],\n\t);\n\n\tconst cmsQueries = useMemo(\n\t\t() => createCMSQueryKeys(listClient, headers),\n\t\t[listClient, headers],\n\t);\n\n\t// For belongsTo (single relation), we only allow one selection\n\tconst isSingleSelect = relation.type === \"belongsTo\";\n\n\t// Normalize the field value to an array for internal use\n\t// belongsTo stores as single object { id }, hasMany/manyToMany store as array\n\tconst normalizedValue = useMemo((): Array<{ id: string }> => {\n\t\tif (!field.value) return [];\n\n\t\tif (isSingleSelect) {\n\t\t\t// belongsTo: value is { id: string } or undefined\n\t\t\tconst singleValue = field.value as { id?: string } | undefined;\n\t\t\tif (singleValue && singleValue.id) {\n\t\t\t\treturn [{ id: singleValue.id }];\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\n\t\t// hasMany/manyToMany: value is array\n\t\treturn (field.value as Array<{ id: string }>) || [];\n\t}, [field.value, isSingleSelect]);\n\n\t// Fetch available items from the target content type (first page only)\n\tconst { items: availableItems, isLoading } = useContent(relation.targetType, {\n\t\tlimit: 500,\n\t});\n\n\tconst missingDetailIds = useMemo(() => {\n\t\tconst loadedIds = new Set(availableItems.map((i) => i.id));\n\t\treturn normalizedValue\n\t\t\t.map((v) => v.id)\n\t\t\t.filter((id) => id.length > 0 && !loadedIds.has(id));\n\t}, [availableItems, normalizedValue]);\n\n\tconst hydrationResult = useQueries({\n\t\tqueries: missingDetailIds.map((id) => ({\n\t\t\t...cmsQueries.cmsContent.detail(relation.targetType, id),\n\t\t\t...RELATION_DETAIL_QUERY_OPTS,\n\t\t\tenabled: Boolean(relation.targetType && id),\n\t\t})),\n\t\tcombine: (results) => ({\n\t\t\tdata: results.map(\n\t\t\t\t(r) => r.data as SerializedContentItemWithType | null | undefined,\n\t\t\t),\n\t\t\tisHydrating: results.some((r) => r.isFetching),\n\t\t}),\n\t});\n\n\tconst isHydratingLabels = hydrationResult.isHydrating;\n\n\tconst itemById = useMemo(() => {\n\t\tconst m = new Map();\n\t\tfor (const it of availableItems) {\n\t\t\tm.set(it.id, it as SerializedContentItemWithType);\n\t\t}\n\t\tfor (let i = 0; i < missingDetailIds.length; i++) {\n\t\t\tconst row = hydrationResult.data[i];\n\t\t\tif (row?.id) {\n\t\t\t\tm.set(row.id, row);\n\t\t\t}\n\t\t}\n\t\treturn m;\n\t}, [availableItems, missingDetailIds, hydrationResult.data]);\n\n\t// Convert normalized value to Option[] for MultipleSelector\n\tconst selectedOptions: Option[] = normalizedValue.map((v) => {\n\t\tconst item = itemById.get(v.id);\n\t\tif (item) {\n\t\t\tconst displayValue =\n\t\t\t\t(item.parsedData as Record)?.[relation.displayField] ||\n\t\t\t\titem.slug;\n\t\t\treturn {\n\t\t\t\tvalue: item.id,\n\t\t\t\tlabel: String(displayValue),\n\t\t\t};\n\t\t}\n\t\treturn { value: v.id, label: `ID: ${v.id.slice(0, 8)}...` };\n\t});\n\n\t// Listed options + any selected partners loaded by id (not on first list page)\n\tconst options: Option[] = useMemo(() => {\n\t\tconst merged: SerializedContentItemWithType[] = [\n\t\t\t...(availableItems as SerializedContentItemWithType[]),\n\t\t];\n\t\tconst seen = new Set(merged.map((x) => x.id));\n\t\tfor (let i = 0; i < missingDetailIds.length; i++) {\n\t\t\tconst row = hydrationResult.data[i];\n\t\t\tif (row?.id && !seen.has(row.id)) {\n\t\t\t\tmerged.push(row);\n\t\t\t\tseen.add(row.id);\n\t\t\t}\n\t\t}\n\t\treturn merged.map((item) => {\n\t\t\tconst displayValue =\n\t\t\t\t(item.parsedData as Record)?.[relation.displayField] ||\n\t\t\t\titem.slug;\n\t\t\treturn {\n\t\t\t\tvalue: item.id,\n\t\t\t\tlabel: String(displayValue),\n\t\t\t};\n\t\t});\n\t}, [\n\t\tavailableItems,\n\t\thydrationResult.data,\n\t\tmissingDetailIds,\n\t\trelation.displayField,\n\t]);\n\n\t// Mutation for creating new items\n\tconst createMutation = useCreateContent(relation.targetType);\n\n\t// Handle selection change - convert back to appropriate format\n\tconst handleChange = useCallback(\n\t\t(newOptions: Option[]) => {\n\t\t\tif (isSingleSelect) {\n\t\t\t\t// belongsTo: store as single object or undefined\n\t\t\t\tif (newOptions.length > 0) {\n\t\t\t\t\tfield.onChange({ id: newOptions[0]!.value });\n\t\t\t\t} else {\n\t\t\t\t\tfield.onChange(undefined);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// hasMany/manyToMany: store as array\n\t\t\t\tconst newValue = newOptions.map((opt) => ({ id: opt.value }));\n\t\t\t\tfield.onChange(newValue);\n\t\t\t}\n\t\t},\n\t\t[field, isSingleSelect],\n\t);\n\n\t// Handle creating a new item\n\tconst handleCreateItem = async () => {\n\t\tif (!newItemName.trim()) return;\n\n\t\tsetCreateError(null);\n\t\ttry {\n\t\t\tconst result = await createMutation.mutateAsync({\n\t\t\t\tslug: newItemName.toLowerCase().replace(/\\s+/g, \"-\"),\n\t\t\t\tdata: {\n\t\t\t\t\t[relation.displayField]: newItemName,\n\t\t\t\t\tdescription: newItemDescription || undefined,\n\t\t\t\t} as Record,\n\t\t\t});\n\n\t\t\t// Add the new item to the selection\n\t\t\tif (isSingleSelect) {\n\t\t\t\t// belongsTo: replace with new item\n\t\t\t\tfield.onChange({ id: result.id });\n\t\t\t} else {\n\t\t\t\t// hasMany/manyToMany: append to array\n\t\t\t\tconst newValue = [...normalizedValue, { id: result.id }];\n\t\t\t\tfield.onChange(newValue);\n\t\t\t}\n\n\t\t\t// Reset and close dialog\n\t\t\tsetNewItemName(\"\");\n\t\t\tsetNewItemDescription(\"\");\n\t\t\tsetIsCreateDialogOpen(false);\n\t\t} catch (error) {\n\t\t\tconst message =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Failed to create item. Please try again.\";\n\t\t\tsetCreateError(message);\n\t\t}\n\t};\n\n\t// Handle removing an item\n\tconst handleRemove = useCallback(\n\t\t(idToRemove: string) => {\n\t\t\tif (isSingleSelect) {\n\t\t\t\t// belongsTo: clear the value\n\t\t\t\tfield.onChange(undefined);\n\t\t\t} else {\n\t\t\t\t// hasMany/manyToMany: filter out the item\n\t\t\t\tconst newValue = normalizedValue.filter((v) => v.id !== idToRemove);\n\t\t\t\tfield.onChange(newValue);\n\t\t\t}\n\t\t},\n\t\t[normalizedValue, field, isSingleSelect],\n\t);\n\n\treturn (\n\t\t
\n\t\t\t\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\t\tNo {relation.targetType} items found\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmaxSelected={isSingleSelect ? 1 : undefined}\n\t\t\t\t\t\tclassName=\"min-h-10\"\n\t\t\t\t\t/>\n\t\t\t\t
\n\n\t\t\t\t{/* Create new item button/dialog */}\n\t\t\t\t{relation.creatable && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCreate New {relation.targetType}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{createError && (\n\t\t\t\t\t\t\t\t\t

{createError}

\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setNewItemName(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={`Enter ${relation.displayField}...`}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setNewItemDescription(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"Enter description...\"\n\t\t\t\t\t\t\t\t\t\trows={3}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t setIsCreateDialogOpen(false)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{createMutation.isPending ? \"Creating...\" : \"Create\"}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t{/* Show selected items as removable badges */}\n\t\t\t{selectedOptions.length > 0 && (\n\t\t\t\t
\n\t\t\t\t\t{selectedOptions.map((opt) => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t handleRemove(opt.value)}\n\t\t\t\t\t\t\t\tclassName=\"hover:text-destructive\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t))}\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{fieldConfigItem?.description && (\n\t\t\t\t

\n\t\t\t\t\t{fieldConfigItem.description}\n\t\t\t\t

\n\t\t\t)}\n\t\t\n\t);\n}\n", "target": "src/components/btst/cms/client/components/forms/relation-field.tsx" }, { diff --git a/packages/stack/src/plugins/cms/__tests__/schema-roundtrip.test.ts b/packages/stack/src/plugins/cms/__tests__/schema-roundtrip.test.ts index 73fe5439..ea9bafc0 100644 --- a/packages/stack/src/plugins/cms/__tests__/schema-roundtrip.test.ts +++ b/packages/stack/src/plugins/cms/__tests__/schema-roundtrip.test.ts @@ -804,3 +804,206 @@ describe("Zod to JSON Schema roundtrip", () => { }); }); }); + +/** + * These tests confirm and protect against a bug where `useFieldArray` in + * AutoFormArray corrupts primitive string values in arrays like + * `structuredContraindications: z.array(z.string()).default([])`. + * + * When react-hook-form's `useFieldArray` processes a primitive array + * (e.g. `["pregnancy", "active malignancy"]`), it wraps each element as a + * tracking object `{ id: "rhf_generated_id" }`, discarding the original + * string value. When `form.watch()` fires, it returns these objects. The + * `handleValuesChange` callback then calls `setFormData(values)` which stores + * the corrupted objects. On form submit, `zodResolver` validates the corrupted + * values against `z.array(z.string())` and FAILS — causing the Save button + * to do nothing (no error shown, no API request made). + * + * The fix: AutoFormArray must NOT use `useFieldArray` for primitive (non-object) + * arrays. Instead it uses `form.watch` + `form.setValue` directly so primitive + * values are always preserved in the form state. + */ +describe("Primitive string array — useFieldArray corruption bug", () => { + /** + * Simulates what zodToFormSchema + formSchemaToZod does: + * Zod schema → JSON Schema (stored in DB) → reconstructed Zod schema. + */ + function roundtripSchema(schema: z.ZodType): z.ZodType { + const jsonSchema = z.toJSONSchema(schema, { unrepresentable: "any" }); + return z.fromJSONSchema(jsonSchema as z.core.JSONSchema.JSONSchema); + } + + it("z.array(z.string()) survives JSON Schema roundtrip and accepts string values", () => { + const schema = z.object({ + structuredContraindications: z.array(z.string()).default([]), + }); + + const reconstructed = roundtripSchema(schema); + + // Actual compound data — should PASS + expect( + reconstructed.safeParse({ + structuredContraindications: [ + "pregnancy", + "active malignancy", + "active cancer", + "trying to conceive", + ], + }).success, + ).toBe(true); + + // Empty array — should PASS (default) + expect( + reconstructed.safeParse({ structuredContraindications: [] }).success, + ).toBe(true); + }); + + it("useFieldArray-corrupted values (objects) fail z.array(z.string()) validation — this is the root cause of the silent save failure", () => { + const schema = z.object({ + structuredContraindications: z.array(z.string()).default([]), + }); + + const reconstructed = roundtripSchema(schema); + + // Simulates what react-hook-form's useFieldArray returns when used with + // primitive string arrays: each string is replaced by a tracking object + // { id: "rhf_generated_id" } and the original value is lost. + const corruptedByUseFieldArray = { + structuredContraindications: [ + { id: "rhf_internal_id_1" }, + { id: "rhf_internal_id_2" }, + { id: "rhf_internal_id_3" }, + { id: "rhf_internal_id_4" }, + ], + }; + + // This is the actual validation error that occurs when Save is clicked: + // zodResolver validates the corrupted objects against z.array(z.string()) + // and FAILS, so onSubmit is never called → no API request → "nothing happens" + const result = reconstructed.safeParse(corruptedByUseFieldArray); + expect(result.success).toBe(false); + if (!result.success) { + // Confirm the error is specifically about the string array elements + const paths = result.error.issues.map((i) => i.path.join(".")); + expect( + paths.some((p) => p.startsWith("structuredContraindications")), + ).toBe(true); + } + }); + + it("primitive string array values are preserved correctly (NOT corrupted) when form state is managed without useFieldArray", () => { + // After the fix, AutoFormArray uses form.watch + form.setValue for primitive + // arrays. The values remain as strings throughout the lifecycle: + // initialData → formData → form state → zodResolver → submit + + const schema = z.object({ + structuredContraindications: z.array(z.string()).default([]), + }); + + const reconstructed = roundtripSchema(schema); + + // The correctly-preserved values (no useFieldArray wrapping) + const preservedValues = { + structuredContraindications: [ + "pregnancy", + "active malignancy", + "active cancer", + "trying to conceive", + ], + }; + + // With the fix applied, these values pass validation → Save works + expect(reconstructed.safeParse(preservedValues).success).toBe(true); + }); + + it("compound schema with structuredContraindications passes full validation with string array values", () => { + // Representative subset of CompoundSchema fields that appear on the + // Epitalon compound page — verifies the full schema round-trip for the + // fields that are relevant to the reported bug. + const compoundSchema = z.object({ + name: z.string().min(1), + compoundType: z.enum([ + "healing-peptide", + "gh-axis", + "metabolic-peptide", + "sarm", + "steroid", + "nootropic", + "supplement", + "ancillary-pct", + "longevity", + "hair", + "skin", + "sexual", + "other", + ]), + researchStatus: z.enum([ + "research-only", + "approved", + "banned", + "grey-market", + "supplement", + ]), + legalStatus: z.enum([ + "OTC", + "Research", + "Grey-Market", + "Rx-Only", + "Schedule-III", + "Banned", + ]), + doseUnit: z.enum(["mcg", "mg", "IU", "ml", "g"]), + doseFrequency: z.enum([ + "once-daily", + "twice-daily", + "three-times-daily", + "every-other-day", + "weekly", + "twice-weekly", + "three-times-weekly", + "as-needed", + "custom", + ]), + structuredContraindications: z.array(z.string()).default([]), + affiliates: z + .array( + z.object({ + partnerId: z.object({ id: z.string() }).optional(), + title: z.string().optional(), + url: z.string().min(1), + }), + ) + .default([]), + }); + + const reconstructed = roundtripSchema(compoundSchema); + + // Epitalon-like data — all values as they come from parsedData + const epitalon = { + name: "Epitalon", + compoundType: "longevity", + researchStatus: "research-only", + legalStatus: "Research", + doseUnit: "mg", + doseFrequency: "once-daily", + // The 4 string items that were causing the silent save failure + structuredContraindications: [ + "pregnancy", + "active malignancy", + "active cancer", + "trying to conceive", + ], + affiliates: [ + { + partnerId: { id: "v6yAqOSO_example_id" }, + title: "Buy Epitalon 10mg", + url: "https://swisschems.is/product/epitalon-10mg-price-is-per-vial/", + }, + ], + }; + + const result = reconstructed.safeParse(epitalon); + // After the fix, this should PASS (the save button works) + expect(result.success).toBe(true); + }); +}); diff --git a/packages/stack/src/plugins/cms/api/index.ts b/packages/stack/src/plugins/cms/api/index.ts index 2c24b752..fc125677 100644 --- a/packages/stack/src/plugins/cms/api/index.ts +++ b/packages/stack/src/plugins/cms/api/index.ts @@ -18,3 +18,4 @@ export { type CreateCMSContentItemOptions, } from "./mutations"; export { CMS_QUERY_KEYS } from "./query-key-defs"; +export { createCMSQueryKeys } from "../query-keys"; diff --git a/packages/stack/src/plugins/cms/api/plugin.ts b/packages/stack/src/plugins/cms/api/plugin.ts index 30bc5e72..1530a0a1 100644 --- a/packages/stack/src/plugins/cms/api/plugin.ts +++ b/packages/stack/src/plugins/cms/api/plugin.ts @@ -18,7 +18,10 @@ import type { RelationValue, InverseRelation, } from "../types"; -import { listContentQuerySchema } from "../schemas"; +import { + createListContentQuerySchema, + DEFAULT_MAX_PAGE_SIZE, +} from "../schemas"; import { slugify } from "../utils"; import { getAllContentTypes, @@ -492,6 +495,20 @@ export const cmsBackendPlugin = (config: CMSBackendConfig) => { }), routes: (adapter: Adapter) => { + // Build pagination schemas once — honours config.maxPageSize + const listContentQuerySchema = createListContentQuerySchema( + config.maxPageSize, + ); + const paginationQuerySchema = z.object({ + limit: z.coerce + .number() + .min(1) + .max(config.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE) + .optional() + .default(20), + offset: z.coerce.number().min(0).optional().default(0), + }); + // Helper to get content type by slug const getContentType = async ( slug: string, @@ -525,10 +542,10 @@ export const cmsBackendPlugin = (config: CMSBackendConfig) => { sortBy: { field: "name", direction: "asc" }, }); - // Get item counts for each content type + // Get item counts for each content type via adapter.count() (avoids N+1 scan) const typesWithCounts = await Promise.all( contentTypes.map(async (ct) => { - const items = await adapter.findMany({ + const itemCount: number = await adapter.count({ model: "contentItem", where: [ { @@ -540,7 +557,7 @@ export const cmsBackendPlugin = (config: CMSBackendConfig) => { }); return { ...serializeContentType(ct), - itemCount: items.length, + itemCount, }; }), ); @@ -964,12 +981,12 @@ export const cmsBackendPlugin = (config: CMSBackendConfig) => { { method: "GET", params: z.object({ typeSlug: z.string() }), - query: z.object({ - field: z.string(), - targetId: z.string(), - limit: z.coerce.number().min(1).max(100).optional().default(20), - offset: z.coerce.number().min(0).optional().default(0), - }), + query: z + .object({ + field: z.string(), + targetId: z.string(), + }) + .merge(paginationQuerySchema), }, async (ctx) => { const { typeSlug } = ctx.params; @@ -1144,12 +1161,12 @@ export const cmsBackendPlugin = (config: CMSBackendConfig) => { slug: z.string(), sourceType: z.string(), }), - query: z.object({ - itemId: z.string(), - fieldName: z.string(), - limit: z.coerce.number().min(1).max(100).optional().default(20), - offset: z.coerce.number().min(0).optional().default(0), - }), + query: z + .object({ + itemId: z.string(), + fieldName: z.string(), + }) + .merge(paginationQuerySchema), }, async (ctx) => { const { slug, sourceType } = ctx.params; diff --git a/packages/stack/src/plugins/cms/client/components/forms/relation-field.tsx b/packages/stack/src/plugins/cms/client/components/forms/relation-field.tsx index 1192df32..702be7a0 100644 --- a/packages/stack/src/plugins/cms/client/components/forms/relation-field.tsx +++ b/packages/stack/src/plugins/cms/client/components/forms/relation-field.tsx @@ -1,7 +1,14 @@ "use client"; import { useState, useCallback, useMemo } from "react"; +import { useQueries } from "@tanstack/react-query"; +import { createApiClient } from "@btst/stack/plugins/client"; +import { usePluginOverrides } from "@btst/stack/context"; import { useContent, useCreateContent } from "../../hooks"; +import type { CMSApiRouter } from "../../../api"; +import type { SerializedContentItemWithType } from "../../../types"; +import type { CMSPluginOverrides } from "../../overrides"; +import { createCMSQueryKeys } from "../../../query-keys"; import MultipleSelector from "@workspace/ui/components/multi-select"; import type { Option } from "@workspace/ui/components/multi-select"; import { Button } from "@workspace/ui/components/button"; @@ -19,6 +26,16 @@ import { Textarea } from "@workspace/ui/components/textarea"; import type { AutoFormInputComponentProps } from "@workspace/ui/components/auto-form/types"; import type { RelationConfig } from "../../../types"; +/** Match cms-hooks SHARED_QUERY_CONFIG for detail fetches (deduped labels). */ +const RELATION_DETAIL_QUERY_OPTS = { + retry: false, + refetchOnWindowFocus: false, + refetchOnMount: false, + refetchOnReconnect: false, + staleTime: 1000 * 60 * 5, + gcTime: 1000 * 60 * 10, +} as const; + interface RelationFieldProps extends AutoFormInputComponentProps { relation: RelationConfig; } @@ -43,16 +60,25 @@ export function RelationField({ const [newItemDescription, setNewItemDescription] = useState(""); const [createError, setCreateError] = useState(null); - // For belongsTo (single relation), we only allow one selection - const isSingleSelect = relation.type === "belongsTo"; + const { apiBaseURL, apiBasePath, headers } = + usePluginOverrides("cms"); - // Fetch available items from the target content type - const { items: availableItems, isLoading } = useContent(relation.targetType, { - limit: 100, // Load a good chunk for the dropdown - }); + const listClient = useMemo( + () => + createApiClient({ + baseURL: apiBaseURL, + basePath: apiBasePath, + }), + [apiBaseURL, apiBasePath], + ); - // Mutation for creating new items - const createMutation = useCreateContent(relation.targetType); + const cmsQueries = useMemo( + () => createCMSQueryKeys(listClient, headers), + [listClient, headers], + ); + + // For belongsTo (single relation), we only allow one selection + const isSingleSelect = relation.type === "belongsTo"; // Normalize the field value to an array for internal use // belongsTo stores as single object { id }, hasMany/manyToMany store as array @@ -72,36 +98,95 @@ export function RelationField({ return (field.value as Array<{ id: string }>) || []; }, [field.value, isSingleSelect]); - // Convert normalized value to Option[] for MultipleSelector - const selectedOptions: Option[] = normalizedValue - .map((v) => { - const item = availableItems.find((item) => item.id === v.id); - if (item) { - const displayValue = - (item.parsedData as Record)?.[ - relation.displayField - ] || item.slug; - return { - value: item.id, - label: String(displayValue), - }; + // Fetch available items from the target content type (first page only) + const { items: availableItems, isLoading } = useContent(relation.targetType, { + limit: 500, + }); + + const missingDetailIds = useMemo(() => { + const loadedIds = new Set(availableItems.map((i) => i.id)); + return normalizedValue + .map((v) => v.id) + .filter((id) => id.length > 0 && !loadedIds.has(id)); + }, [availableItems, normalizedValue]); + + const hydrationResult = useQueries({ + queries: missingDetailIds.map((id) => ({ + ...cmsQueries.cmsContent.detail(relation.targetType, id), + ...RELATION_DETAIL_QUERY_OPTS, + enabled: Boolean(relation.targetType && id), + })), + combine: (results) => ({ + data: results.map( + (r) => r.data as SerializedContentItemWithType | null | undefined, + ), + isHydrating: results.some((r) => r.isFetching), + }), + }); + + const isHydratingLabels = hydrationResult.isHydrating; + + const itemById = useMemo(() => { + const m = new Map(); + for (const it of availableItems) { + m.set(it.id, it as SerializedContentItemWithType); + } + for (let i = 0; i < missingDetailIds.length; i++) { + const row = hydrationResult.data[i]; + if (row?.id) { + m.set(row.id, row); } - // Item not found in loaded items - show ID - return { value: v.id, label: `ID: ${v.id.slice(0, 8)}...` }; - }) - .filter(Boolean); + } + return m; + }, [availableItems, missingDetailIds, hydrationResult.data]); - // Convert available items to options - const options: Option[] = availableItems.map((item) => { - const displayValue = - (item.parsedData as Record)?.[relation.displayField] || - item.slug; - return { - value: item.id, - label: String(displayValue), - }; + // Convert normalized value to Option[] for MultipleSelector + const selectedOptions: Option[] = normalizedValue.map((v) => { + const item = itemById.get(v.id); + if (item) { + const displayValue = + (item.parsedData as Record)?.[relation.displayField] || + item.slug; + return { + value: item.id, + label: String(displayValue), + }; + } + return { value: v.id, label: `ID: ${v.id.slice(0, 8)}...` }; }); + // Listed options + any selected partners loaded by id (not on first list page) + const options: Option[] = useMemo(() => { + const merged: SerializedContentItemWithType[] = [ + ...(availableItems as SerializedContentItemWithType[]), + ]; + const seen = new Set(merged.map((x) => x.id)); + for (let i = 0; i < missingDetailIds.length; i++) { + const row = hydrationResult.data[i]; + if (row?.id && !seen.has(row.id)) { + merged.push(row); + seen.add(row.id); + } + } + return merged.map((item) => { + const displayValue = + (item.parsedData as Record)?.[relation.displayField] || + item.slug; + return { + value: item.id, + label: String(displayValue), + }; + }); + }, [ + availableItems, + hydrationResult.data, + missingDetailIds, + relation.displayField, + ]); + + // Mutation for creating new items + const createMutation = useCreateContent(relation.targetType); + // Handle selection change - convert back to appropriate format const handleChange = useCallback( (newOptions: Option[]) => { @@ -187,11 +272,11 @@ export function RelationField({ onChange={handleChange} options={options} placeholder={ - isLoading + isLoading || isHydratingLabels ? "Loading..." : `Select ${relation.targetType}${isSingleSelect ? "" : "(s)"}...` } - disabled={isLoading} + disabled={isLoading || isHydratingLabels} hidePlaceholderWhenSelected emptyIndicator={

diff --git a/packages/stack/src/plugins/cms/schemas.ts b/packages/stack/src/plugins/cms/schemas.ts index 59792bd4..e9f5aacb 100644 --- a/packages/stack/src/plugins/cms/schemas.ts +++ b/packages/stack/src/plugins/cms/schemas.ts @@ -1,13 +1,33 @@ import { z } from "zod"; +/** Default upper bound for a single page when no maxPageSize is configured. */ +export const DEFAULT_MAX_PAGE_SIZE = 1000; + /** - * Schema for listing content items with pagination + * Factory that creates the list-content query schema with a configurable + * upper bound on the `limit` parameter. + * + * Use this inside the backend plugin factory (where `config.maxPageSize` is + * available) so the cap is set at registration time rather than hardcoded. */ -export const listContentQuerySchema = z.object({ - slug: z.string().optional(), - limit: z.coerce.number().min(1).max(100).optional().default(20), - offset: z.coerce.number().min(0).optional().default(0), -}); +export function createListContentQuerySchema( + maxPageSize = DEFAULT_MAX_PAGE_SIZE, +) { + return z.object({ + slug: z.string().optional(), + limit: z.coerce.number().min(1).max(maxPageSize).optional().default(20), + offset: z.coerce.number().min(0).optional().default(0), + }); +} + +/** + * Schema for listing content items with pagination. + * Uses the default maxPageSize (1000). + * + * @deprecated Prefer {@link createListContentQuerySchema} inside plugin + * factories so consumers can configure the upper bound via `maxPageSize`. + */ +export const listContentQuerySchema = createListContentQuerySchema(); /** * Schema for creating a content item diff --git a/packages/stack/src/plugins/cms/types.ts b/packages/stack/src/plugins/cms/types.ts index 261a1c4d..a6be5c9c 100644 --- a/packages/stack/src/plugins/cms/types.ts +++ b/packages/stack/src/plugins/cms/types.ts @@ -303,4 +303,14 @@ export interface CMSBackendConfig { contentTypes: ContentTypeConfig[]; /** Optional hooks for customizing behavior */ hooks?: CMSBackendHooks; + /** + * Maximum number of items that can be requested in a single page. + * Applied to all list endpoints (`/content/:typeSlug`, by-relation, and inverse-relation). + * + * Raise this when your content types have many items and you need to fetch + * large pages (e.g. for SSG, CSV export, or programmatic access). + * + * @default 1000 + */ + maxPageSize?: number; } diff --git a/packages/ui/src/components/auto-form/fields/array.tsx b/packages/ui/src/components/auto-form/fields/array.tsx index edec1af9..76b09578 100644 --- a/packages/ui/src/components/auto-form/fields/array.tsx +++ b/packages/ui/src/components/auto-form/fields/array.tsx @@ -4,35 +4,33 @@ import { AccordionTrigger, } from "@workspace/ui/components/accordion"; import { Button } from "@workspace/ui/components/button"; +import { + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@workspace/ui/components/form"; +import { Input } from "@workspace/ui/components/input"; import { Separator } from "@workspace/ui/components/separator"; import { Plus, Trash } from "lucide-react"; -import { useFieldArray, useForm } from "react-hook-form"; +import { useFieldArray, useForm, useWatch } from "react-hook-form"; import * as z from "zod"; -import { beautifyObjectName } from "../helpers"; +import { beautifyObjectName, getBaseSchema, getBaseType } from "../helpers"; import AutoFormObject from "./object"; -/** - * Get the def type from a Zod schema (Zod v4 compatible). - */ function getDefType(schema: z.ZodType): string { return (schema as any)._zod?.def?.type || ""; } -/** - * Get the element type from an array or wrapped array schema. - * Handles: array, optional array, default array, nullable array - * In Zod v4, array element type is at _zod.def.element - */ function getArrayElementType(item: z.ZodType): z.ZodType | null { const def = (item as any)._zod?.def; const defType = getDefType(item); - // Direct array if (defType === "array") { return def?.element || null; } - // Wrapped types (default, optional, nullable) - unwrap and recurse if (["default", "optional", "nullable"].includes(defType)) { const innerType = def?.innerType; if (innerType) { @@ -43,6 +41,19 @@ function getArrayElementType(item: z.ZodType): z.ZodType | null { return null; } +function getPrimitiveDefault(itemSchema: z.ZodType): unknown { + const base = getBaseSchema(itemSchema as z.ZodType); + if (!base) return ""; + switch (getBaseType(base)) { + case "ZodBoolean": + return false; + case "ZodNumber": + return 0; + default: + return ""; + } +} + export default function AutoFormArray({ name, item, @@ -56,16 +67,70 @@ export default function AutoFormArray({ path?: string[]; fieldConfig?: any; }) { - // The full path for useFieldArray - path already includes the array name + const itemDefType = getArrayElementType(item); + const elementBaseSchema = itemDefType + ? getBaseSchema(itemDefType as z.ZodType) + : null; + const elementPrimitiveType = elementBaseSchema + ? getBaseType(elementBaseSchema as z.ZodType) + : ""; + const isObjectArray = !!itemDefType && elementPrimitiveType === "ZodObject"; + + const title = fieldConfig?.label ?? beautifyObjectName(name); + + if (isObjectArray) { + return ( + } + title={title} + /> + ); + } + + return ( + + ); +} + +/** + * ObjectAutoFormArray — uses useFieldArray (safe for object arrays because + * react-hook-form only wraps objects; the `id` field it injects doesn't affect + * validation since the schema doesn't include it). + */ +function ObjectAutoFormArray({ + name, + form, + path = [], + fieldConfig, + itemDefType, + title, +}: { + name: string; + item: z.ZodArray | z.ZodDefault; + form: ReturnType; + path?: string[]; + fieldConfig?: any; + itemDefType: z.ZodObject; + title: string; +}) { const fieldPath = path.join("."); - const { fields, append, remove } = useFieldArray({ control: form.control, name: fieldPath, }); - const title = fieldConfig?.label ?? beautifyObjectName(name); - - const itemDefType = getArrayElementType(item); return ( @@ -74,9 +139,9 @@ export default function AutoFormArray({ {fields.map((_field, index) => { const key = _field.id; return ( -

+
} + schema={itemDefType} form={form} fieldConfig={fieldConfig} path={[...path, index.toString()]} @@ -89,10 +154,9 @@ export default function AutoFormArray({ className="hover:bg-zinc-300 hover:text-black focus:ring-0 focus:ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0 dark:bg-white dark:text-black dark:hover:bg-zinc-300 dark:hover:text-black dark:hover:ring-0 dark:hover:ring-offset-0 dark:focus-visible:ring-0 dark:focus-visible:ring-offset-0" onClick={() => remove(index)} > - +
-
); @@ -110,3 +174,167 @@ export default function AutoFormArray({ ); } + +/** + * PrimitiveAutoFormArray — does NOT use useFieldArray. + * + * useFieldArray wraps every element in an object `{ id: "...", }` which + * corrupts primitive arrays (string[], number[], boolean[]). Instead we use + * useWatch to observe the raw array and form.setValue to mutate it, keeping + * the values as plain primitives that will pass Zod validation on submit. + */ +function PrimitiveAutoFormArray({ + name, + item, + form, + path = [], + fieldConfig, + itemDefType, + title, +}: { + name: string; + item: z.ZodArray | z.ZodDefault; + form: ReturnType; + path?: string[]; + fieldConfig?: any; + itemDefType: z.ZodType | null; + title: string; +}) { + const fieldPath = path.join("."); + const rawValues: unknown[] = useWatch({ control: form.control, name: fieldPath }) ?? []; + const values = Array.isArray(rawValues) ? rawValues : []; + + const appendItem = () => { + const def = itemDefType ? getPrimitiveDefault(itemDefType) : ""; + form.setValue(fieldPath as any, [...values, def] as any, { + shouldDirty: true, + shouldValidate: false, + }); + }; + + const removeItem = (index: number) => { + const next = values.filter((_, i) => i !== index); + form.setValue(fieldPath as any, next as any, { + shouldDirty: true, + shouldValidate: false, + }); + }; + + return ( + + {title} + + {values.map((_, index) => { + const cellPath = `${fieldPath}.${index}`; + return ( +
+ {itemDefType ? ( + + ) : null} +
+ +
+ +
+ ); + })} + +
+
+ ); +} + +function PrimitiveArrayRow({ + form, + itemSchema, + cellPath, +}: { + form: ReturnType; + itemSchema: z.ZodType; + cellPath: string; +}) { + const baseSchema = getBaseSchema(itemSchema) as z.ZodType | null; + const t = baseSchema ? getBaseType(baseSchema) : ""; + + if (t === "ZodBoolean") { + return ( + ( + + + field.onChange(e.target.checked)} + /> + + + {(field.value as boolean | undefined) ? "Selected" : "Not selected"} + + + + )} + /> + ); + } + + const inputType = t === "ZodNumber" ? ("number" as const) : ("text" as const); + + return ( + ( + + Row value + + + field.onChange( + inputType === "number" + ? Number.isNaN(ev.target.valueAsNumber) + ? undefined + : ev.target.valueAsNumber + : ev.target.value, + ) + } + /> + + + + )} + /> + ); +} diff --git a/packages/ui/src/components/auto-form/index.tsx b/packages/ui/src/components/auto-form/index.tsx index 09e36e3f..249fb347 100644 --- a/packages/ui/src/components/auto-form/index.tsx +++ b/packages/ui/src/components/auto-form/index.tsx @@ -1,6 +1,6 @@ "use client"; import { Form } from "@workspace/ui/components/form"; -import React from "react"; +import React, { useState } from "react"; import type { DefaultValues, FormState, @@ -77,10 +77,21 @@ function AutoForm({ values: valuesProp as any, }); + const [schemaSubmitError, setSchemaSubmitError] = useState(null); + function onSubmit(values: Record) { + setSchemaSubmitError(null); const parsedValues = formSchema.safeParse(values); if (parsedValues.success) { onSubmitProp?.(parsedValues.data as z.infer, form as any); + } else { + const message = parsedValues.error.issues + .map( + (issue) => + `${issue.path.length ? `${issue.path.join(".")}: ` : ""}${issue.message}`, + ) + .join(" · "); + setSchemaSubmitError(message); } } @@ -106,7 +117,7 @@ function AutoForm({
{ - form.handleSubmit(onSubmit)(e); + form.handleSubmit(onSubmit, () => setSchemaSubmitError(null))(e); }} className={cn("space-y-5", className)} > @@ -117,6 +128,15 @@ function AutoForm({ fieldConfig={fieldConfig as any} /> + {schemaSubmitError ? ( +
+ {schemaSubmitError} +
+ ) : null} + {renderChildren} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7698e11d..b46f5ab9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,345 +68,6 @@ importers: specifier: 'catalog:' version: 3.2.4(@types/debug@4.1.12)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@2.0.1))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.2) - codegen-projects/nextjs: - dependencies: - '@ai-sdk/openai': - specifier: ^2.0.68 - version: 2.0.102(zod@4.2.1) - '@btst/adapter-memory': - specifier: ^2.1.1 - version: 2.2.0(27fffac3f827cd12a9c7fe19c351211e) - '@btst/stack': - specifier: workspace:* - version: link:../../packages/stack - '@tanstack/react-query': - specifier: ^5.90.2 - version: 5.90.10(react@19.2.4) - '@tanstack/react-query-devtools': - specifier: ^5.90.2 - version: 5.97.0(@tanstack/react-query@5.90.10(react@19.2.4))(react@19.2.4) - ai: - specifier: ^5.0.94 - version: 5.0.94(zod@4.2.1) - class-variance-authority: - specifier: ^0.7.1 - version: 0.7.1 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - lucide-react: - specifier: ^0.545.0 - version: 0.545.0(react@19.2.4) - next: - specifier: 16.1.7 - version: 16.1.7(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - next-themes: - specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - radix-ui: - specifier: ^1.4.3 - version: 1.4.3(@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) - react: - specifier: ^19.2.0 - version: 19.2.4 - react-dom: - specifier: ^19.2.4 - version: 19.2.4(react@19.2.4) - shadcn: - specifier: ^4.2.0 - version: 4.2.0(@types/node@25.5.0)(typescript@5.9.3) - sonner: - specifier: ^2.0.7 - version: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - tailwind-merge: - specifier: ^3.5.0 - version: 3.5.0 - tw-animate-css: - specifier: ^1.4.0 - version: 1.4.0 - zod: - specifier: ^4.2.0 - version: 4.2.1 - devDependencies: - '@eslint/eslintrc': - specifier: ^3 - version: 3.3.5 - '@tailwindcss/postcss': - specifier: ^4.2.1 - version: 4.2.2 - '@types/node': - specifier: ^25.5.0 - version: 25.5.0 - '@types/react': - specifier: ^19.2.14 - version: 19.2.14 - '@types/react-dom': - specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.14) - eslint: - specifier: ^9.39.4 - version: 9.39.4(jiti@2.6.1) - eslint-config-next: - specifier: 16.1.7 - version: 16.1.7(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - postcss: - specifier: ^8 - version: 8.5.6 - prettier: - specifier: ^3.8.1 - version: 3.8.1 - prettier-plugin-tailwindcss: - specifier: ^0.7.2 - version: 0.7.2(prettier@3.8.1) - tailwindcss: - specifier: ^4.2.1 - version: 4.2.2 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - - codegen-projects/react-router: - dependencies: - '@ai-sdk/openai': - specifier: ^2.0.68 - version: 2.0.102(zod@4.2.1) - '@btst/adapter-memory': - specifier: ^2.1.1 - version: 2.2.0(2fd0c1e92899dca3eb1a7d871f00b916) - '@btst/stack': - specifier: workspace:* - version: link:../../packages/stack - '@fontsource-variable/geist': - specifier: ^5.2.8 - version: 5.2.8 - '@react-router/node': - specifier: 7.13.1 - version: 7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - '@react-router/serve': - specifier: 7.13.1 - version: 7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - '@tanstack/react-query': - specifier: ^5.90.2 - version: 5.90.10(react@19.2.4) - '@tanstack/react-query-devtools': - specifier: ^5.90.2 - version: 5.97.0(@tanstack/react-query@5.90.10(react@19.2.4))(react@19.2.4) - ai: - specifier: ^5.0.94 - version: 5.0.94(zod@4.2.1) - class-variance-authority: - specifier: ^0.7.1 - version: 0.7.1 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - isbot: - specifier: ^5.1.36 - version: 5.1.37 - lucide-react: - specifier: ^0.545.0 - version: 0.545.0(react@19.2.4) - next-themes: - specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - radix-ui: - specifier: ^1.4.3 - version: 1.4.3(@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) - react: - specifier: ^19.2.0 - version: 19.2.4 - react-dom: - specifier: ^19.2.4 - version: 19.2.4(react@19.2.4) - react-router: - specifier: 7.13.1 - version: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - shadcn: - specifier: ^4.2.0 - version: 4.2.0(@types/node@22.19.17)(typescript@5.9.3) - sonner: - specifier: ^2.0.7 - version: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - tailwind-merge: - specifier: ^3.5.0 - version: 3.5.0 - tw-animate-css: - specifier: ^1.4.0 - version: 1.4.0 - zod: - specifier: ^4.2.0 - version: 4.2.1 - devDependencies: - '@react-router/dev': - specifier: 7.13.1 - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) - '@tailwindcss/vite': - specifier: ^4.2.1 - version: 4.2.2(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@types/node': - specifier: ^22 - version: 22.19.17 - '@types/react': - specifier: ^19.2.14 - version: 19.2.14 - '@types/react-dom': - specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.14) - prettier: - specifier: ^3.8.1 - version: 3.8.1 - prettier-plugin-tailwindcss: - specifier: ^0.7.2 - version: 0.7.2(prettier@3.8.1) - tailwindcss: - specifier: ^4.2.1 - version: 4.2.2 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - - codegen-projects/tanstack: - dependencies: - '@ai-sdk/openai': - specifier: ^2.0.68 - version: 2.0.102(zod@4.2.1) - '@btst/adapter-memory': - specifier: ^2.1.1 - version: 2.2.0(2fd0c1e92899dca3eb1a7d871f00b916) - '@btst/stack': - specifier: workspace:* - version: link:../../packages/stack - '@fontsource-variable/geist': - specifier: ^5.2.8 - version: 5.2.8 - '@tailwindcss/vite': - specifier: ^4.2.1 - version: 4.2.2(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@tanstack/react-devtools': - specifier: ^0.10.0 - version: 0.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.12) - '@tanstack/react-query': - specifier: ^5.90.2 - version: 5.90.10(react@19.2.4) - '@tanstack/react-query-devtools': - specifier: ^5.90.2 - version: 5.97.0(@tanstack/react-query@5.90.10(react@19.2.4))(react@19.2.4) - '@tanstack/react-router': - specifier: ^1.167.4 - version: 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-router-devtools': - specifier: ^1.166.9 - version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-router-ssr-query': - specifier: ^1.166.9 - version: 1.166.10(@tanstack/query-core@5.90.10)(@tanstack/react-query@5.90.10(react@19.2.4))(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-start': - specifier: ^1.166.15 - version: 1.167.16(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@tanstack/router-plugin': - specifier: ^1.166.13 - version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - ai: - specifier: ^5.0.94 - version: 5.0.94(zod@4.2.1) - class-variance-authority: - specifier: ^0.7.1 - version: 0.7.1 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - lucide-react: - specifier: ^0.545.0 - version: 0.545.0(react@19.2.4) - next-themes: - specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - nitro: - specifier: latest - version: 3.0.260311-beta(@electric-sql/pglite@0.3.15)(@vercel/blob@0.27.3)(chokidar@4.0.3)(dotenv@17.2.3)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(giget@2.0.0)(jiti@2.6.1)(lru-cache@11.2.7)(mongodb@6.21.0(socks@2.8.7))(mysql2@3.15.3)(rollup@4.53.2)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - radix-ui: - specifier: ^1.4.3 - version: 1.4.3(@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) - react: - specifier: ^19.2.0 - version: 19.2.4 - react-dom: - specifier: ^19.2.4 - version: 19.2.4(react@19.2.4) - shadcn: - specifier: ^4.2.0 - version: 4.2.0(@types/node@22.19.17)(typescript@5.9.3) - sonner: - specifier: ^2.0.7 - version: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - tailwind-merge: - specifier: ^3.5.0 - version: 3.5.0 - tailwindcss: - specifier: ^4.2.1 - version: 4.2.2 - tw-animate-css: - specifier: ^1.4.0 - version: 1.4.0 - vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - zod: - specifier: ^4.2.0 - version: 4.2.1 - devDependencies: - '@tanstack/devtools-vite': - specifier: ^0.6.0 - version: 0.6.0(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@tanstack/eslint-config': - specifier: ^0.4.0 - version: 0.4.0(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@testing-library/dom': - specifier: ^10.4.1 - version: 10.4.1 - '@testing-library/react': - specifier: ^16.3.2 - 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) - '@types/node': - specifier: ^22.19.15 - version: 22.19.17 - '@types/react': - specifier: ^19.2.14 - version: 19.2.14 - '@types/react-dom': - specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.14) - '@vitejs/plugin-react': - specifier: ^5.2.0 - version: 5.2.0(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - jsdom: - specifier: ^27.4.0 - version: 27.4.0(@noble/hashes@2.0.1) - prettier: - specifier: ^3.8.1 - version: 3.8.1 - prettier-plugin-tailwindcss: - specifier: ^0.7.2 - version: 0.7.2(prettier@3.8.1) - typescript: - specifier: ^5.9.3 - version: 5.9.3 - vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.17)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@2.0.1))(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.17)(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.2) - web-vitals: - specifier: ^5.1.0 - version: 5.2.0 - docs: dependencies: '@btst/stack': @@ -542,7 +203,7 @@ importers: dependencies: '@btst/db': specifier: 2.2.1 - version: 2.2.1(b4b66a3d8201949f032a66a65356d694) + version: 2.2.1(978ca99c0af2c0aaed707e79eeac04ed) '@hookform/resolvers': specifier: '>=5.0.0' version: 5.2.2(react-hook-form@7.66.1(react@19.2.4)) @@ -642,7 +303,7 @@ importers: version: 3.1011.0 '@btst/adapter-memory': specifier: 2.2.1 - version: 2.2.1(4f48d1b8782178a965c4b7cd971a4c82) + version: 2.2.1(27fffac3f827cd12a9c7fe19c351211e) '@btst/yar': specifier: 1.2.0 version: 1.2.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14) @@ -1050,32 +711,16 @@ packages: peerDependencies: zod: ^4.2.0 - '@ai-sdk/openai@2.0.102': - resolution: {integrity: sha512-tYarHJhyMioGegsnhpqz1/tKoCAJJ6zBHoIQaredNkt8V3o/JXj2647NnEOJVe7WHQXGvCfzbfnP1TADFhPmcA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^4.2.0 - '@ai-sdk/provider-utils@3.0.17': resolution: {integrity: sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw==} engines: {node: '>=18'} peerDependencies: zod: ^4.2.0 - '@ai-sdk/provider-utils@3.0.23': - resolution: {integrity: sha512-60GYsRj5wIJQRcq5YwYJq4KhwLeStceXEJiZdecP1miiH+6FMmrnc7lZDOJoQ6m9lrudEb+uI4LEwddLz5+rPQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^4.2.0 - '@ai-sdk/provider@2.0.0': resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - '@ai-sdk/provider@2.0.1': - resolution: {integrity: sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==} - engines: {node: '>=18'} - '@ai-sdk/react@2.0.94': resolution: {integrity: sha512-eVhV6O4uUn/aIckiRomSukovzMAqARsiLn3X0s92p/EpO+LGDixUcWsdw58hym6VQtM3r5f/qIYzhSFv6gnirQ==} engines: {node: '>=18'} @@ -1375,18 +1020,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.28.5': resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} @@ -1574,21 +1207,12 @@ packages: cpu: [x64] os: [win32] - '@btst/adapter-memory@2.2.0': - resolution: {integrity: sha512-05vjdpyNSDgmRaiiS6OaYX7K0D9c8TSAbwJ5u+GGwfQgvx8kVuJpwMxQxEqHLNZGwVmbKeVRc1iBiiBVW3iCQQ==} - peerDependencies: - '@better-auth/core': '>=1.6.0' - better-auth: '>=1.6.0' - '@btst/adapter-memory@2.2.1': resolution: {integrity: sha512-EkDOy85cbvQ2zrk7jSzyIDFHVR2N04iVlyuaJh6Zi5yR1rNg3EKt8P+viSmYXOzZed2LfAHtc7sD+O9xzVHMlw==} peerDependencies: '@better-auth/core': '>=1.6.0' better-auth: '>=1.6.0' - '@btst/db@2.2.0': - resolution: {integrity: sha512-aU6DSo33UyIvXNSTPxwl4odmT9/z7YM5av+eG3OQsyJZbrYbR2D+glFey51ZUZ7O0Rz5OJVuns+0ZBIOn/VxbQ==} - '@btst/db@2.2.1': resolution: {integrity: sha512-nT4up3AUkkUxmaNDDbBjhaHHlT5ewWvo+5uO3t0COgPnnqndkvQ0gspsW+3AlmZcp20W4VjWJdgAN0LkGgSsRQ==} @@ -2144,51 +1768,14 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@10.0.1': - resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^10.0.0 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - 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} @@ -2223,9 +1810,6 @@ packages: '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} - '@fontsource-variable/geist@5.2.8': - resolution: {integrity: sha512-cJ6m9e+8MQ5dCYJsLylfZrgBh6KkG4bOLckB35Tr9J/EqdkEM6QllH5PxqP1dhTvFup+HtMRPuz9xOjxXJggxw==} - '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} @@ -2240,14 +1824,6 @@ packages: peerDependencies: react-hook-form: ^7.55.0 - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.7': - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} - engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -2261,10 +1837,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - '@img/colour@1.0.0': resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} @@ -2612,9 +2184,6 @@ packages: '@milkdown/utils@7.17.1': resolution: {integrity: sha512-QTjbaxv+ZOB4a1BaQULkeJExyIvMnQw69UKf9QoM/E8iY2q1c8kppnN6i6ZeN9ZkCh4lXu+r7w/LH6zSFXrsdA==} - '@mjackson/node-fetch-server@0.2.0': - resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} - '@modelcontextprotocol/sdk@1.29.0': resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} engines: {node: '>=18'} @@ -2645,12 +2214,6 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.1.3': - resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@next/env@16.0.10': resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==} @@ -2660,9 +2223,6 @@ packages: '@next/eslint-plugin-next@15.3.4': resolution: {integrity: sha512-lBxYdj7TI8phbJcLSAqDt57nIcobEign5NYIKCiy0hXQhrUbTqLqOaSDi568U6vFg4hJfBdZYsG4iP/uKhCqgg==} - '@next/eslint-plugin-next@16.1.7': - resolution: {integrity: sha512-v/bRGOJlfRCO+NDKt0bZlIIWjhMKU8xbgEQBo+rV9C8S6czZvs96LZ/v24/GvpEnovZlL4QDpku/RzWHVbmPpA==} - '@next/swc-darwin-arm64@16.0.10': resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==} engines: {node: '>= 10'} @@ -2843,9 +2403,6 @@ packages: resolution: {integrity: sha512-scSmQBD8eANlMUOglxHrN1JdSW8tDghsPuS83otqealBiIeMukCQMOf/wc0JJjDXomqwNdEQFLXLGHrU6PGxuA==} engines: {node: '>= 20.0.0'} - '@oxc-project/types@0.124.0': - resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} - '@oxc-resolver/binding-android-arm-eabi@11.19.1': resolution: {integrity: sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==} cpu: [arm] @@ -3872,175 +3429,19 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@react-router/dev@7.13.1': - resolution: {integrity: sha512-H+kEvbbOaWGaitOyL6CgqPsHqRUh66HuVRvIEaZEqdoAY/1xChdhmmq6ZumMHzcFHgHlfOcoXgNHlz6ZO4NWcg==} - engines: {node: '>=20.0.0'} - hasBin: true + '@remirror/core-constants@3.0.0': + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} + + '@rolldown/pluginutils@1.0.0-beta.40': + resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==} + + '@rollup/plugin-alias@5.1.1': + resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} + engines: {node: '>=14.0.0'} peerDependencies: - '@react-router/serve': ^7.13.1 - '@vitejs/plugin-rsc': ~0.5.7 - react-router: ^7.13.1 - react-server-dom-webpack: ^19.2.3 - typescript: ^5.1.0 - vite: ^5.1.0 || ^6.0.0 || ^7.0.0 - wrangler: ^3.28.2 || ^4.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: - '@react-router/serve': - optional: true - '@vitejs/plugin-rsc': - optional: true - react-server-dom-webpack: - optional: true - typescript: - optional: true - wrangler: - optional: true - - '@react-router/express@7.13.1': - resolution: {integrity: sha512-ujHom4LiEWsbnohNArwNT86QP3WRB5p+rY8AAll6s4gdrzgOXIy3FHDc3up5Lz8juUrZKh0d+B+PZa/IdDSK3A==} - engines: {node: '>=20.0.0'} - peerDependencies: - express: ^4.17.1 || ^5 - react-router: 7.13.1 - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true - - '@react-router/node@7.13.1': - resolution: {integrity: sha512-IWPPf+Q3nJ6q4bwyTf5leeGUfg8GAxSN1RKj5wp9SK915zKK+1u4TCOfOmr8hmC6IW1fcjKV0WChkM0HkReIiw==} - engines: {node: '>=20.0.0'} - peerDependencies: - react-router: 7.13.1 - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true - - '@react-router/serve@7.13.1': - resolution: {integrity: sha512-vh5lr41rioXLz/zNLTYo0zq4yh97AkgEkJK7bhPeXnNbLNtI36WCZ2AeBtSJ4sdx4gx5LZvcjP8zoWFfSbNupA==} - engines: {node: '>=20.0.0'} - hasBin: true - peerDependencies: - react-router: 7.13.1 - - '@remirror/core-constants@3.0.0': - resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} - - '@remix-run/node-fetch-server@0.13.0': - resolution: {integrity: sha512-1EsNo0ZpgXu/90AWoRZf/oE3RVTUS80tiTUpt+hv5pjtAkw7icN4WskDwz/KdAw5ARbJLMhZBrO1NqThmy/McA==} - - '@rolldown/binding-android-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.0.0-rc.15': - resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': - resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': - resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': - resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': - resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': - resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': - resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': - resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@rolldown/pluginutils@1.0.0-beta.40': - resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==} - - '@rolldown/pluginutils@1.0.0-rc.15': - resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} - - '@rolldown/pluginutils@1.0.0-rc.3': - resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} - - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: + rollup: optional: true '@rollup/plugin-commonjs@28.0.9': @@ -4465,36 +3866,6 @@ packages: resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} engines: {node: '>=18.0.0'} - '@solid-primitives/event-listener@2.4.5': - resolution: {integrity: sha512-nwRV558mIabl4yVAhZKY8cb6G+O1F0M6Z75ttTu5hk+SxdOnKSGj+eetDIu7Oax1P138ZdUU01qnBPR8rnxaEA==} - peerDependencies: - solid-js: ^1.6.12 - - '@solid-primitives/keyboard@1.3.5': - resolution: {integrity: sha512-sav+l+PL+74z3yaftVs7qd8c2SXkqzuxPOVibUe5wYMt+U5Hxp3V3XCPgBPN2I6cANjvoFtz0NiU8uHVLdi9FQ==} - peerDependencies: - solid-js: ^1.6.12 - - '@solid-primitives/resize-observer@2.1.5': - resolution: {integrity: sha512-AiyTknKcNBaKHbcSMuxtSNM8FjIuiSuFyFghdD0TcCMU9hKi9EmsC5pjfjDwxE+5EueB1a+T/34PLRI5vbBbKw==} - peerDependencies: - solid-js: ^1.6.12 - - '@solid-primitives/rootless@1.5.3': - resolution: {integrity: sha512-N8cIDAHbWcLahNRLr0knAAQvXyEdEMoAZvIMZKmhNb1mlx9e2UOv9BRD5YNwQUJwbNoYVhhLwFOEOcVXFx0HqA==} - peerDependencies: - solid-js: ^1.6.12 - - '@solid-primitives/static-store@0.1.3': - resolution: {integrity: sha512-uxez7SXnr5GiRnzqO2IEDjOJRIXaG+0LZLBizmUA1FwSi+hrpuMzVBwyk70m4prcl8X6FDDXUl9O8hSq8wHbBQ==} - peerDependencies: - solid-js: ^1.6.12 - - '@solid-primitives/utils@6.4.0': - resolution: {integrity: sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A==} - peerDependencies: - solid-js: ^1.6.12 - '@stackblitz/sdk@1.11.0': resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==} @@ -4507,12 +3878,6 @@ packages: '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} - '@stylistic/eslint-plugin@5.10.0': - resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -4613,50 +3978,6 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tailwindcss/vite@4.2.2': - resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==} - peerDependencies: - vite: ^5.2.0 || ^6 || ^7 || ^8 - - '@tanstack/devtools-client@0.0.6': - resolution: {integrity: sha512-f85ZJXJnDIFOoykG/BFIixuAevJovCvJF391LPs6YjBAPhGYC50NWlx1y4iF/UmK5/cCMx+/JqI5SBOz7FanQQ==} - engines: {node: '>=18'} - - '@tanstack/devtools-event-bus@0.4.1': - resolution: {integrity: sha512-cNnJ89Q021Zf883rlbBTfsaxTfi2r73/qejGtyTa7ksErF3hyDyAq1aTbo5crK9dAL7zSHh9viKY1BtMls1QOA==} - engines: {node: '>=18'} - - '@tanstack/devtools-event-client@0.4.3': - resolution: {integrity: sha512-OZI6QyULw0FI0wjgmeYzCIfbgPsOEzwJtCpa69XrfLMtNXLGnz3d/dIabk7frg0TmHo+Ah49w5I4KC7Tufwsvw==} - engines: {node: '>=18'} - hasBin: true - - '@tanstack/devtools-ui@0.5.1': - resolution: {integrity: sha512-T9JjAdqMSnxsVO6AQykD5vhxPF4iFLKtbYxee/bU3OLlk446F5C1220GdCmhDSz7y4lx+m8AvIS0bq6zzvdDUA==} - engines: {node: '>=18'} - peerDependencies: - solid-js: '>=1.9.7' - - '@tanstack/devtools-vite@0.6.0': - resolution: {integrity: sha512-h0r0ct7zlrgjkhmn4QW6wRjgUXd4JMs+r7gtx+BXo9f5H9Y+jtUdtvC0rnZcPto6gw/9yMUq7yOmMK5qDWRExg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@tanstack/devtools@0.11.2': - resolution: {integrity: sha512-K8+tsBx+ptTLqqd4dOF10B6laj1g+XYImqYZL9n0jBINGaT+sOf17PKV9pbBt8kdbZeIGsHaJ5OZWCyZoHqN4A==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - solid-js: '>=1.9.7' - - '@tanstack/eslint-config@0.4.0': - resolution: {integrity: sha512-V+Cd81W/f65dqKJKpytbwTGx9R+IwxKAHsG/uJ3nSLYEh36hlAr54lRpstUhggQB8nf/cP733cIw8DuD2dzQUg==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - '@tanstack/history@1.161.6': resolution: {integrity: sha512-NaOGLRrddszbQj9upGat6HG/4TKvXLvu+osAIgfxPYA+eIvYKv8GKDJOrY2D3/U9MRnKfMWD7bU4jeD4xmqyIg==} engines: {node: '>=20.19'} @@ -4664,51 +3985,11 @@ packages: '@tanstack/query-core@5.90.10': resolution: {integrity: sha512-EhZVFu9rl7GfRNuJLJ3Y7wtbTnENsvzp+YpcAV7kCYiXni1v8qZh++lpw4ch4rrwC0u/EZRnBHIehzCGzwXDSQ==} - '@tanstack/query-devtools@5.97.0': - resolution: {integrity: sha512-ZMjAuYhQCKwKLKFMrD+HJDehHwWBVTGOuWBf4vEjR9unO+UGUjQ1mw2TuVbQKoLN/eRwB7qtlPsWBqobBoRBMQ==} - - '@tanstack/react-devtools@0.10.2': - resolution: {integrity: sha512-1BmZyxOrI5SqmRJ5MgkYZNNdnlLsJxQRI2YgorrAvcF2MxK6x5RcuStvD8+YlXoMw3JtNukPxoITirKAnKYDQA==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': '>=16.8' - '@types/react-dom': '>=16.8' - react: ^19.2.0 - react-dom: '>=16.8' - - '@tanstack/react-query-devtools@5.97.0': - resolution: {integrity: sha512-X4/VZKCbBIRj8cVD/oZCKTwwPmFXrY1VOfwUT5qI/+/JZYAUS+8vGNMqwBXbaAu1ZsVzzDzkT/wtBE/5OtQYGg==} - peerDependencies: - '@tanstack/react-query': ^5.90.2 - react: ^19.2.0 - '@tanstack/react-query@5.90.10': resolution: {integrity: sha512-BKLss9Y8PQ9IUjPYQiv3/Zmlx92uxffUOX8ZZNoQlCIZBJPT5M+GOMQj7xislvVQ6l1BstBjcX0XB/aHfFYVNw==} peerDependencies: react: ^19.2.0 - '@tanstack/react-router-devtools@1.166.11': - resolution: {integrity: sha512-WYR3q4Xui5yPT/5PXtQh8i03iUA7q8dONBjWpV3nsGdM8Cs1FxpfhLstW0wZO1dOvSyElscwTRCJ6nO5N8r3Lg==} - engines: {node: '>=20.19'} - peerDependencies: - '@tanstack/react-router': ^1.168.2 - '@tanstack/router-core': ^1.168.2 - react: ^19.2.0 - react-dom: '>=18.0.0 || >=19.0.0' - peerDependenciesMeta: - '@tanstack/router-core': - optional: true - - '@tanstack/react-router-ssr-query@1.166.10': - resolution: {integrity: sha512-Ny5jKZPSy+RBXICJBJkW2q3SKjEwVooIn2zuWfIFL1MNVImQPh/p+yvqDqKdJseIQ45B4JsqFtWVcdy/6rQ0Rg==} - engines: {node: '>=20.19'} - peerDependencies: - '@tanstack/query-core': '>=5.90.0' - '@tanstack/react-query': ^5.90.2 - '@tanstack/react-router': '>=1.127.0' - react: ^19.2.0 - react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.168.10': resolution: {integrity: sha512-/RmDlOwDkCug609KdPB3U+U1zmrtadJpvsmRg2zEn8TRCKRNri7dYZIjQZbNg8PgUiRL4T6njrZBV1ChzblNaA==} engines: {node: '>=20.19'} @@ -4750,16 +4031,6 @@ packages: engines: {node: '>=20.19'} hasBin: true - '@tanstack/router-devtools-core@1.167.1': - resolution: {integrity: sha512-ECMM47J4KmifUvJguGituSiBpfN8SyCUEoxQks5RY09hpIBfR2eswCv2e6cJimjkKwBQXOVTPkTUk/yRvER+9w==} - engines: {node: '>=20.19'} - peerDependencies: - '@tanstack/router-core': ^1.168.2 - csstype: ^3.0.10 - peerDependenciesMeta: - csstype: - optional: true - '@tanstack/router-generator@1.166.24': resolution: {integrity: sha512-vdaGKwuH+r+DPe6R1mjk+TDDmDH6NTG7QqwxHqGEvOH4aGf9sPjhmRKNJZqQr8cPIbfp6u5lXyZ1TeDcSNMVEA==} engines: {node: '>=20.19'} @@ -4786,13 +4057,6 @@ packages: webpack: optional: true - '@tanstack/router-ssr-query-core@1.167.0': - resolution: {integrity: sha512-+fpK1U+NR8YzcUmXhEy2tdPfT/XxIn1AMd/ODkYGMExAAUWnV8Zptptf41djK5eBj6718P6YTfxLRkxtfUdnVA==} - engines: {node: '>=20.19'} - peerDependencies: - '@tanstack/query-core': '>=5.90.0' - '@tanstack/router-core': '>=1.127.0' - '@tanstack/router-utils@1.161.6': resolution: {integrity: sha512-nRcYw+w2OEgK6VfjirYvGyPLOK+tZQz1jkYcmH5AjMamQ9PycnlxZF2aEZtPpNoUsaceX2bHptn6Ub5hGXqNvw==} engines: {node: '>=20.19'} @@ -4829,25 +4093,6 @@ packages: engines: {node: '>=20.19'} hasBin: true - '@testing-library/dom@10.4.1': - resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} - engines: {node: '>=18'} - - '@testing-library/react@16.3.2': - resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 - react: ^19.2.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@tiptap/core@3.20.0': resolution: {integrity: sha512-aC9aROgia/SpJqhsXFiX9TsligL8d+oeoI8W3u00WI45s0VfsqjgeKQLDLF7Tu7hC+7F02teC84SAHuup003VQ==} peerDependencies: @@ -5070,21 +4315,6 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/bun@1.3.2': resolution: {integrity: sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg==} @@ -5101,9 +4331,6 @@ packages: resolution: {integrity: sha512-o7jqJM04gfaYrdCecCVMbZhNdG6T1MHg/oQoRFdERLV+4d+V7FijhiEAbFu0Usww84Yijk9yH58U4Jk4HbtzZw==} deprecated: This is a stub types definition. diff provides its own type definitions, so you do not need this installed. - '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -5119,9 +4346,6 @@ packages: '@types/inquirer@6.5.0': resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -5159,9 +4383,6 @@ packages: '@types/node@20.19.25': resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==} - '@types/node@22.19.17': - resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} - '@types/node@24.0.3': resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} @@ -5232,14 +4453,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/eslint-plugin@8.58.1': - resolution: {integrity: sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.58.1 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.58.0': resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5247,13 +4460,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.58.1': - resolution: {integrity: sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.58.0': resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5293,13 +4499,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.58.1': - resolution: {integrity: sha512-HUFxvTJVroT+0rXVJC7eD5zol6ID+Sn5npVPWoFuHGg9Ncq5Q4EYstqR+UOqaNRFXi5TYkpXXkLhoCHe3G0+7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.58.0': resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5490,12 +4689,6 @@ packages: resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} engines: {node: '>= 20'} - '@vitejs/plugin-react@5.2.0': - resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -5554,10 +4747,6 @@ packages: '@vue/shared@3.5.24': resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} @@ -5629,10 +4818,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansis@4.2.0: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} @@ -5644,9 +4829,6 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -5657,9 +4839,6 @@ packages: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -5668,9 +4847,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.9: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} @@ -5776,10 +4952,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} @@ -5865,10 +5037,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.4: - resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.2: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} @@ -5902,9 +5070,6 @@ packages: resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} engines: {node: '>=16.20.1'} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -6139,14 +5304,6 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.8.1: - resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} - engines: {node: '>= 0.8.0'} - compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} @@ -6166,10 +5323,6 @@ packages: constant-case@2.0.0: resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - content-disposition@1.0.1: resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} engines: {node: '>=18'} @@ -6184,9 +5337,6 @@ packages: cookie-es@2.0.1: resolution: {integrity: sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==} - cookie-signature@1.0.7: - resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} - cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} @@ -6321,40 +5471,6 @@ packages: date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - dayjs@1.11.20: - resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} - - db0@0.3.4: - resolution: {integrity: sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==} - peerDependencies: - '@electric-sql/pglite': '*' - '@libsql/client': '*' - better-sqlite3: '*' - drizzle-orm: '*' - mysql2: '*' - sqlite3: '*' - peerDependenciesMeta: - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - better-sqlite3: - optional: true - drizzle-orm: - optional: true - mysql2: - optional: true - sqlite3: - optional: true - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -6462,10 +5578,6 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -6496,9 +5608,6 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -6681,18 +5790,6 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - env-runner@0.1.7: - resolution: {integrity: sha512-i7h96jxETJYhXy5grgHNJ9xNzCzWIn9Ck/VkkYgOlE4gOqknsLX3CmlVb5LmwNex8sOoLFVZLz+TIw/+b5rktA==} - hasBin: true - peerDependencies: - '@netlify/runtime': ^4 - miniflare: ^4.20260317.3 - peerDependenciesMeta: - '@netlify/runtime': - optional: true - miniflare: - optional: true - error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -6771,12 +5868,6 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - eslint-config-next@15.3.4: resolution: {integrity: sha512-WqeumCq57QcTP2lYlV6BRUySfGiBYEXlQ1L0mQ+u4N4X4ZhUVSSQ52WtjqHv60pJ6dD7jn+YZc0d1/ZSsxccvg==} peerDependencies: @@ -6786,15 +5877,6 @@ packages: typescript: optional: true - eslint-config-next@16.1.7: - resolution: {integrity: sha512-FTq1i/QDltzq+zf9aB/cKWAiZ77baG0V7h8dRQh3thVx7I4dwr6ZXQrWKAaTB7x5VwVXlzoUTyMLIVQPLj2gJg==} - peerDependencies: - eslint: '>=9.0.0' - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - eslint-import-context@0.1.9: resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -6841,12 +5923,6 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - eslint-plugin-import-x@4.16.2: resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6876,24 +5952,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-n@17.24.0: - resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.23.0' - eslint-plugin-react-hooks@5.2.0: resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-hooks@7.0.1: - resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.37.5: resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} @@ -6904,22 +5968,10 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-scope@9.1.2: - resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@5.0.1: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -6930,24 +5982,6 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@11.2.0: - resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7020,10 +6054,6 @@ packages: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} - exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - expect-type@1.2.2: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} @@ -7034,10 +6064,6 @@ packages: peerDependencies: express: '>= 4.11' - express@4.22.1: - resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} - engines: {node: '>= 0.10.0'} - express@5.2.1: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} @@ -7121,18 +6147,10 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.2: - resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} - engines: {node: '>= 0.8'} - finalhandler@2.1.1: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} @@ -7148,10 +6166,6 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -7197,10 +6211,6 @@ packages: react-dom: optional: true - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - fresh@2.0.0: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} @@ -7364,10 +6374,6 @@ packages: get-port-please@3.2.0: resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} - get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -7414,22 +6420,6 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} - engines: {node: '>=18'} - - globals@17.4.0: - resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==} - engines: {node: '>=18'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -7438,14 +6428,6 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - goober@2.1.18: - resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==} - peerDependencies: - csstype: ^3.0.10 - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -7576,12 +6558,6 @@ packages: helper-js@3.1.6: resolution: {integrity: sha512-lhncHDAxS2PTA44aG1AofxT51v0IXEVOmaUCC6HwuGaGqE1yEkjhPH74Vb/Aw4xt8Kt5bMvStCr6FekANp+PGg==} - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -7599,9 +6575,6 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - hookable@6.1.0: - resolution: {integrity: sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==} - html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -7630,9 +6603,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - httpxy@0.5.0: - resolution: {integrity: sha512-qwX7QX/rK2visT10/b7bSeZWQOMlSm3svTD0pZpU+vJjNUP0YHtNv4c3z+MO+MSnGuRFWJFdCZiV+7F7dXIOzg==} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -8080,9 +7050,6 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - launch-editor@2.13.2: - resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -8263,20 +7230,11 @@ packages: peerDependencies: react: ^19.2.0 - lucide-react@0.545.0: - resolution: {integrity: sha512-7r1/yUuflQDSt4f1bpn5ZAocyIxcTyVyBBChSVtBKn5M+392cPmI5YJMWOJKk/HUWGm5wg83chlAZtCcGbEZtw==} - peerDependencies: - react: ^19.2.0 - lucide-react@1.7.0: resolution: {integrity: sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg==} peerDependencies: react: ^19.2.0 - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -8366,10 +7324,6 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - media-typer@1.1.0: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} @@ -8377,9 +7331,6 @@ packages: memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -8391,10 +7342,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -8507,27 +7454,14 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mime-types@3.0.2: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -8608,19 +7542,12 @@ packages: socks: optional: true - morgan@1.10.1: - resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==} - engines: {node: '>= 0.8.0'} - motion-dom@12.23.23: resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==} motion-utils@12.23.6: resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -8671,14 +7598,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -8738,37 +7657,6 @@ packages: sass: optional: true - nf3@0.3.16: - resolution: {integrity: sha512-Gs0xRPpUm2nDkqbi40NJ9g7qDIcjcJzgExiydnq6LAyqhI2jfno8wG3NKTL+IiJsx799UHOb1CnSd4Wg4SG4Pw==} - - nitro@3.0.260311-beta: - resolution: {integrity: sha512-0o0fJ9LUh4WKUqJNX012jyieUOtMCnadkNDWr0mHzdraoHpJP/1CGNefjRyZyMXSpoJfwoWdNEZu2iGf35TUvQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - dotenv: '*' - giget: '*' - jiti: ^2.6.1 - rollup: ^4.59.0 - vite: ^7 || ^8 || >=8.0.0-0 - xml2js: ^0.6.2 - zephyr-agent: ^0.1.15 - peerDependenciesMeta: - dotenv: - optional: true - giget: - optional: true - jiti: - optional: true - rollup: - optional: true - vite: - optional: true - xml2js: - optional: true - zephyr-agent: - optional: true - no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -8880,27 +7768,13 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - ocache@0.1.4: - resolution: {integrity: sha512-e7geNdWjxSnvsSgvLuPvgKgu7ubM10ZmTPOgpr7mz2BXYtvjMKTiLhjFi/gWU8chkuP6hNkZBsa9LzOusyaqkQ==} - - ofetch@2.0.0-alpha.3: - resolution: {integrity: sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==} - ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -8975,10 +7849,6 @@ packages: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} - engines: {node: '>=18'} - pac-proxy-agent@7.2.0: resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} @@ -9056,9 +7926,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@0.1.13: - resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -9069,9 +7936,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -9354,61 +8218,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-tailwindcss@0.7.2: - resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==} - engines: {node: '>=20.19'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-hermes': '*' - '@prettier/plugin-oxc': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-multiline-arrays: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-hermes': - optional: true - '@prettier/plugin-oxc': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-svelte: - optional: true - prettier@3.8.1: resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} @@ -9418,10 +8227,6 @@ packages: resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} engines: {node: '>=20'} - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} @@ -9563,10 +8368,6 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - qs@6.14.2: - resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} - engines: {node: '>=0.6'} - qs@6.15.0: resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} @@ -9591,10 +8392,6 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.3: - resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} - engines: {node: '>= 0.8'} - raw-body@3.0.2: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} @@ -9642,9 +8439,6 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-markdown@9.1.0: resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==} peerDependencies: @@ -9657,14 +8451,6 @@ packages: react: ^19.2.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -9888,11 +8674,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.15: - resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - rollup-plugin-dts@6.2.3: resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} engines: {node: '>=16'} @@ -9963,9 +8744,6 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -10010,10 +8788,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.2: - resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} - engines: {node: '>= 0.8.0'} - send@1.2.1: resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} @@ -10034,10 +8808,6 @@ packages: resolution: {integrity: sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA==} engines: {node: '>=10'} - serve-static@1.16.3: - resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} - engines: {node: '>= 0.8.0'} - serve-static@2.2.1: resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} @@ -10067,10 +8837,6 @@ packages: resolution: {integrity: sha512-qNQcCavkbYsgBj+X09tF2bTcwRd8abR880bsFkDU2kMqceMCLAm5c+cLg7kWDhfh1H9g08knpQ5ZEf6y/co16g==} hasBin: true - shadcn@4.2.0: - resolution: {integrity: sha512-ZDuV340itidaUd4Gi1BxQX+Y7Ush6BHp6URZBM2RyxUUBZ6yFtOWIr4nVY+Ro+YRSpo82v7JrsmtcU5xoBCMJQ==} - hasBin: true - sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -10083,10 +8849,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} - engines: {node: '>= 0.4'} - shiki@3.15.0: resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} @@ -10163,9 +8925,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -10463,11 +9222,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-declaration-location@1.0.7: - resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} - peerDependencies: - typescript: '>=4.0.0' - ts-morph@26.0.0: resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} @@ -10488,16 +9242,6 @@ packages: '@swc/wasm': optional: true - tsconfck@3.1.6: - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -10569,10 +9313,6 @@ packages: resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} engines: {node: '>=20'} - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - type-is@2.0.1: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} @@ -10593,13 +9333,6 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.58.1: - resolution: {integrity: sha512-gf6/oHChByg9HJvhMO1iBexJh12AqqTfnuxscMDOVqfJW3htsdRJI/GfPpHTTcyeB8cSTUY2JcZmVgoyPqcrDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -10653,9 +9386,6 @@ packages: resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} - unenv@2.0.0-rc.24: - resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} - unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} @@ -10702,80 +9432,6 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - unstorage@2.0.0-alpha.7: - resolution: {integrity: sha512-ELPztchk2zgFJnakyodVY3vJWGW9jy//keJ32IOJVGUMyaPydwcA1FtVvWqT0TNRch9H+cMNEGllfVFfScImog==} - peerDependencies: - '@azure/app-configuration': ^1.11.0 - '@azure/cosmos': ^4.9.1 - '@azure/data-tables': ^13.3.2 - '@azure/identity': ^4.13.0 - '@azure/keyvault-secrets': ^4.10.0 - '@azure/storage-blob': ^12.31.0 - '@capacitor/preferences': ^6 || ^7 || ^8 - '@deno/kv': '>=0.13.0' - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 - '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.36.2 - '@vercel/blob': '>=0.27.3' - '@vercel/functions': ^2.2.12 || ^3.0.0 - '@vercel/kv': ^1.0.1 - aws4fetch: ^1.0.20 - chokidar: ^4 || ^5 - db0: '>=0.3.4' - idb-keyval: ^6.2.2 - ioredis: ^5.9.3 - lru-cache: ^11.2.6 - mongodb: ^6 || ^7 - ofetch: '*' - uploadthing: ^7.7.4 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@deno/kv': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/blob': - optional: true - '@vercel/functions': - optional: true - '@vercel/kv': - optional: true - aws4fetch: - optional: true - chokidar: - optional: true - db0: - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - lru-cache: - optional: true - mongodb: - optional: true - ofetch: - optional: true - uploadthing: - optional: true - until-async@3.0.2: resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} @@ -10834,10 +9490,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -10881,14 +9533,6 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -10965,12 +9609,6 @@ packages: jsdom: optional: true - vue-eslint-parser@10.4.0: - resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue@3.5.24: resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} peerDependencies: @@ -11000,9 +9638,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - web-vitals@5.2.0: - resolution: {integrity: sha512-i2z98bEmaCqSDiHEDu+gHl/dmR4Q+TxFmG3/13KkMO+o8UxQzCqWaDRCiLgEa41nlO4VpXSI0ASa1xWmO9sBlA==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -11155,12 +9790,6 @@ packages: peerDependencies: zod: ^4.2.0 - zod-validation-error@4.0.2: - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^4.2.0 - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -11192,7 +9821,8 @@ packages: snapshots: - '@acemir/cssom@0.9.31': {} + '@acemir/cssom@0.9.31': + optional: true '@ai-sdk/gateway@2.0.10(zod@4.2.1)': dependencies: @@ -11201,12 +9831,6 @@ snapshots: '@vercel/oidc': 3.0.3 zod: 4.2.1 - '@ai-sdk/openai@2.0.102(zod@4.2.1)': - dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.23(zod@4.2.1) - zod: 4.2.1 - '@ai-sdk/provider-utils@3.0.17(zod@4.2.1)': dependencies: '@ai-sdk/provider': 2.0.0 @@ -11214,21 +9838,10 @@ snapshots: eventsource-parser: 3.0.6 zod: 4.2.1 - '@ai-sdk/provider-utils@3.0.23(zod@4.2.1)': - dependencies: - '@ai-sdk/provider': 2.0.1 - '@standard-schema/spec': 1.1.0 - eventsource-parser: 3.0.6 - zod: 4.2.1 - '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 - '@ai-sdk/provider@2.0.1': - dependencies: - json-schema: 0.4.0 - '@ai-sdk/react@2.0.94(react@19.2.4)(zod@4.2.1)': dependencies: '@ai-sdk/provider-utils': 3.0.17(zod@4.2.1) @@ -11248,6 +9861,7 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 lru-cache: 11.2.7 + optional: true '@asamuzakjp/dom-selector@6.8.1': dependencies: @@ -11256,8 +9870,10 @@ snapshots: css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 lru-cache: 11.2.7 + optional: true - '@asamuzakjp/nwsapi@2.3.9': {} + '@asamuzakjp/nwsapi@2.3.9': + optional: true '@aws-crypto/crc32@5.2.0': dependencies: @@ -11726,6 +10342,7 @@ snapshots: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 + optional: true '@babel/code-frame@7.29.0': dependencies: @@ -11868,16 +10485,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12047,10 +10654,10 @@ snapshots: '@biomejs/cli-win32-x64@2.2.4': optional: true - '@btst/adapter-memory@2.2.0(27fffac3f827cd12a9c7fe19c351211e)': + '@btst/adapter-memory@2.2.1(27fffac3f827cd12a9c7fe19c351211e)': dependencies: '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - '@btst/db': 2.2.0(978ca99c0af2c0aaed707e79eeac04ed) + '@btst/db': 2.2.1(978ca99c0af2c0aaed707e79eeac04ed) better-auth: 1.6.2(cdc3a27a64a2abd4650198e979536099) transitivePeerDependencies: - '@better-auth/utils' @@ -12081,11 +10688,10 @@ snapshots: - vitest - vue - '@btst/adapter-memory@2.2.0(2fd0c1e92899dca3eb1a7d871f00b916)': + '@btst/db@2.2.1(978ca99c0af2c0aaed707e79eeac04ed)': dependencies: '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - '@btst/db': 2.2.0(e8ff6ee80284122f9cca89b151c2dcf1) - better-auth: 1.6.2(6896ebd622139fd8a3f3cf17579557d8) + better-auth: 1.6.2(cdc3a27a64a2abd4650198e979536099) transitivePeerDependencies: - '@better-auth/utils' - '@better-fetch/fetch' @@ -12115,140 +10721,7 @@ snapshots: - vitest - vue - '@btst/adapter-memory@2.2.1(4f48d1b8782178a965c4b7cd971a4c82)': - dependencies: - '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - '@btst/db': 2.2.1(b4b66a3d8201949f032a66a65356d694) - better-auth: 1.6.2(f617d06bd60c2052c7914de63933c1b3) - transitivePeerDependencies: - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - jose - - kysely - - mongodb - - mysql2 - - nanostores - - next - - pg - - prisma - - react - - react-dom - - solid-js - - svelte - - vitest - - vue - - '@btst/db@2.2.0(978ca99c0af2c0aaed707e79eeac04ed)': - dependencies: - '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - better-auth: 1.6.2(cdc3a27a64a2abd4650198e979536099) - transitivePeerDependencies: - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - jose - - kysely - - mongodb - - mysql2 - - nanostores - - next - - pg - - prisma - - react - - react-dom - - solid-js - - svelte - - vitest - - vue - - '@btst/db@2.2.0(e8ff6ee80284122f9cca89b151c2dcf1)': - dependencies: - '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - better-auth: 1.6.2(6896ebd622139fd8a3f3cf17579557d8) - transitivePeerDependencies: - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - jose - - kysely - - mongodb - - mysql2 - - nanostores - - next - - pg - - prisma - - react - - react-dom - - solid-js - - svelte - - vitest - - vue - - '@btst/db@2.2.1(b4b66a3d8201949f032a66a65356d694)': - dependencies: - '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - better-auth: 1.6.2(f617d06bd60c2052c7914de63933c1b3) - transitivePeerDependencies: - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - jose - - kysely - - mongodb - - mysql2 - - nanostores - - next - - pg - - prisma - - react - - react-dom - - solid-js - - svelte - - vitest - - vue - - '@btst/yar@1.2.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)': + '@btst/yar@1.2.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)': dependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -12543,12 +11016,14 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@6.0.2': {} + '@csstools/color-helpers@6.0.2': + optional: true '@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 + optional: true '@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: @@ -12556,16 +11031,20 @@ snapshots: '@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 + optional: true '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-tokenizer': 4.0.0 + optional: true '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.1.0)': optionalDependencies: css-tree: 3.1.0 + optional: true - '@csstools/css-tokenizer@4.0.0': {} + '@csstools/css-tokenizer@4.0.0': + optional: true '@date-fns/tz@1.4.1': {} @@ -12823,29 +11302,8 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': - dependencies: - eslint: 9.39.4(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.2': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 - - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.14.0 @@ -12860,38 +11318,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/eslintrc@3.3.5': - dependencies: - ajv: 6.14.0 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@10.0.1(eslint@9.39.4(jiti@2.6.1))': - optionalDependencies: - eslint: 9.39.4(jiti@2.6.1) - '@eslint/js@8.57.1': {} - '@eslint/js@9.39.4': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - '@exodus/bytes@1.15.0(@noble/hashes@2.0.1)': optionalDependencies: '@noble/hashes': 2.0.1 + optional: true '@fastify/busboy@2.1.1': {} @@ -12920,8 +11352,6 @@ snapshots: '@floating-ui/utils@0.2.11': {} - '@fontsource-variable/geist@5.2.8': {} - '@formatjs/intl-localematcher@0.6.2': dependencies: tslib: 2.8.1 @@ -12935,13 +11365,6 @@ snapshots: '@standard-schema/utils': 0.3.0 react-hook-form: 7.66.1(react@19.2.4) - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.7': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.4.3 - '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -12954,8 +11377,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.4.3': {} - '@img/colour@1.0.0': optional: true @@ -13055,13 +11476,6 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/confirm@5.1.21(@types/node@22.19.17)': - dependencies: - '@inquirer/core': 10.3.2(@types/node@22.19.17) - '@inquirer/type': 3.0.10(@types/node@22.19.17) - optionalDependencies: - '@types/node': 22.19.17 - '@inquirer/confirm@5.1.21(@types/node@24.12.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.12.0) @@ -13075,19 +11489,7 @@ snapshots: '@inquirer/type': 3.0.10(@types/node@25.5.0) optionalDependencies: '@types/node': 25.5.0 - - '@inquirer/core@10.3.2(@types/node@22.19.17)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.19.17) - 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': 22.19.17 + optional: true '@inquirer/core@10.3.2(@types/node@24.12.0)': dependencies: @@ -13114,6 +11516,7 @@ snapshots: yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 25.5.0 + optional: true '@inquirer/external-editor@1.0.3(@types/node@20.19.25)': dependencies: @@ -13124,10 +11527,6 @@ snapshots: '@inquirer/figures@1.0.15': {} - '@inquirer/type@3.0.10(@types/node@22.19.17)': - optionalDependencies: - '@types/node': 22.19.17 - '@inquirer/type@3.0.10(@types/node@24.12.0)': optionalDependencies: '@types/node': 24.12.0 @@ -13135,6 +11534,7 @@ snapshots: '@inquirer/type@3.0.10(@types/node@25.5.0)': optionalDependencies: '@types/node': 25.5.0 + optional: true '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -13548,8 +11948,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@mjackson/node-fetch-server@0.2.0': {} - '@modelcontextprotocol/sdk@1.29.0(zod@4.2.1)': dependencies: '@hono/node-server': 1.19.9(hono@4.11.4) @@ -13606,25 +12004,15 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': - dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.1 - optional: true - '@next/env@16.0.10': {} - '@next/env@16.1.7': {} + '@next/env@16.1.7': + optional: true '@next/eslint-plugin-next@15.3.4': dependencies: fast-glob: 3.3.1 - '@next/eslint-plugin-next@16.1.7': - dependencies: - fast-glob: 3.3.1 - '@next/swc-darwin-arm64@16.0.10': optional: true @@ -13706,17 +12094,21 @@ snapshots: '@oozcitak/infra': 2.0.2 '@oozcitak/url': 3.0.0 '@oozcitak/util': 10.0.0 + optional: true '@oozcitak/infra@2.0.2': dependencies: '@oozcitak/util': 10.0.0 + optional: true '@oozcitak/url@3.0.0': dependencies: '@oozcitak/infra': 2.0.2 '@oozcitak/util': 10.0.0 + optional: true - '@oozcitak/util@10.0.0': {} + '@oozcitak/util@10.0.0': + optional: true '@open-draft/deferred-promise@2.2.0': {} @@ -13733,8 +12125,6 @@ snapshots: '@orama/orama@3.1.16': {} - '@oxc-project/types@0.124.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.19.1': optional: true @@ -13850,7 +12240,8 @@ snapshots: '@oxc-transform/binding-win32-x64-msvc@0.96.0': optional: true - '@package-json/types@0.0.12': {} + '@package-json/types@0.0.12': + optional: true '@playwright/test@1.56.1': dependencies: @@ -14743,162 +13134,28 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@react-router/dev@7.13.1(@react-router/serve@7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': - dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.2 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@react-router/node': 7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - '@remix-run/node-fetch-server': 0.13.0 - arg: 5.0.2 - babel-dead-code-elimination: 1.0.12 - chokidar: 4.0.3 - dedent: 1.7.0 - es-module-lexer: 1.7.0 - exit-hook: 2.2.1 - isbot: 5.1.37 - jsesc: 3.0.2 - lodash: 4.17.21 - p-map: 7.0.4 - pathe: 1.1.2 - picocolors: 1.1.1 - pkg-types: 2.3.0 - prettier: 3.8.1 - react-refresh: 0.14.2 - react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - semver: 7.7.3 - tinyglobby: 0.2.15 - valibot: 1.2.0(typescript@5.9.3) - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + '@remirror/core-constants@3.0.0': {} + + '@rolldown/pluginutils@1.0.0-beta.40': + optional: true + + '@rollup/plugin-alias@5.1.1(rollup@4.53.2)': optionalDependencies: - '@react-router/serve': 7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + rollup: 4.53.2 - '@react-router/express@7.13.1(express@4.22.1)(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.53.2)': dependencies: - '@react-router/node': 7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - express: 4.22.1 - react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.5.0(picomatch@4.0.3) + is-reference: 1.2.1 + magic-string: 0.30.21 + picomatch: 4.0.3 optionalDependencies: - typescript: 5.9.3 + rollup: 4.53.2 - '@react-router/node@7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': - dependencies: - '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - optionalDependencies: - typescript: 5.9.3 - - '@react-router/serve@7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': - dependencies: - '@mjackson/node-fetch-server': 0.2.0 - '@react-router/express': 7.13.1(express@4.22.1)(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - '@react-router/node': 7.13.1(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - compression: 1.8.1 - express: 4.22.1 - get-port: 5.1.1 - morgan: 1.10.1 - react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - source-map-support: 0.5.21 - transitivePeerDependencies: - - supports-color - - typescript - - '@remirror/core-constants@3.0.0': {} - - '@remix-run/node-fetch-server@0.13.0': {} - - '@rolldown/binding-android-arm64@1.0.0-rc.15': - optional: true - - '@rolldown/binding-darwin-arm64@1.0.0-rc.15': - optional: true - - '@rolldown/binding-darwin-x64@1.0.0-rc.15': - optional: true - - '@rolldown/binding-freebsd-x64@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': - optional: true - - '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': - optional: true - - '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': - optional: true - - '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': - dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - optional: true - - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': - optional: true - - '@rolldown/pluginutils@1.0.0-beta.40': {} - - '@rolldown/pluginutils@1.0.0-rc.15': {} - - '@rolldown/pluginutils@1.0.0-rc.3': {} - - '@rollup/plugin-alias@5.1.1(rollup@4.53.2)': - optionalDependencies: - rollup: 4.53.2 - - '@rollup/plugin-commonjs@28.0.9(rollup@4.53.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.2) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) - is-reference: 1.2.1 - magic-string: 0.30.21 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.53.2 - - '@rollup/plugin-json@6.1.0(rollup@4.53.2)': + '@rollup/plugin-json@6.1.0(rollup@4.53.2)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.2) optionalDependencies: @@ -15389,40 +13646,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@solid-primitives/event-listener@2.4.5(solid-js@1.9.12)': - dependencies: - '@solid-primitives/utils': 6.4.0(solid-js@1.9.12) - solid-js: 1.9.12 - - '@solid-primitives/keyboard@1.3.5(solid-js@1.9.12)': - dependencies: - '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.12) - '@solid-primitives/rootless': 1.5.3(solid-js@1.9.12) - '@solid-primitives/utils': 6.4.0(solid-js@1.9.12) - solid-js: 1.9.12 - - '@solid-primitives/resize-observer@2.1.5(solid-js@1.9.12)': - dependencies: - '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.12) - '@solid-primitives/rootless': 1.5.3(solid-js@1.9.12) - '@solid-primitives/static-store': 0.1.3(solid-js@1.9.12) - '@solid-primitives/utils': 6.4.0(solid-js@1.9.12) - solid-js: 1.9.12 - - '@solid-primitives/rootless@1.5.3(solid-js@1.9.12)': - dependencies: - '@solid-primitives/utils': 6.4.0(solid-js@1.9.12) - solid-js: 1.9.12 - - '@solid-primitives/static-store@0.1.3(solid-js@1.9.12)': - dependencies: - '@solid-primitives/utils': 6.4.0(solid-js@1.9.12) - solid-js: 1.9.12 - - '@solid-primitives/utils@6.4.0(solid-js@1.9.12)': - dependencies: - solid-js: 1.9.12 - '@stackblitz/sdk@1.11.0': {} '@standard-schema/spec@1.0.0': {} @@ -15431,16 +13654,6 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@stylistic/eslint-plugin@5.10.0(eslint@9.39.4(jiti@2.6.1))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/types': 8.58.0 - eslint: 9.39.4(jiti@2.6.1) - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.3 - '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -15519,137 +13732,16 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@tailwindcss/node': 4.2.2 - '@tailwindcss/oxide': 4.2.2 - tailwindcss: 4.2.2 - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - - '@tanstack/devtools-client@0.0.6': - dependencies: - '@tanstack/devtools-event-client': 0.4.3 - - '@tanstack/devtools-event-bus@0.4.1': - dependencies: - ws: 8.20.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@tanstack/devtools-event-client@0.4.3': {} - - '@tanstack/devtools-ui@0.5.1(csstype@3.2.3)(solid-js@1.9.12)': - dependencies: - clsx: 2.1.1 - dayjs: 1.11.20 - goober: 2.1.18(csstype@3.2.3) - solid-js: 1.9.12 - transitivePeerDependencies: - - csstype - - '@tanstack/devtools-vite@0.6.0(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.2 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@tanstack/devtools-client': 0.0.6 - '@tanstack/devtools-event-bus': 0.4.1 - chalk: 5.6.2 - launch-editor: 2.13.2 - picomatch: 4.0.3 - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@tanstack/devtools@0.11.2(csstype@3.2.3)(solid-js@1.9.12)': - dependencies: - '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.12) - '@solid-primitives/keyboard': 1.3.5(solid-js@1.9.12) - '@solid-primitives/resize-observer': 2.1.5(solid-js@1.9.12) - '@tanstack/devtools-client': 0.0.6 - '@tanstack/devtools-event-bus': 0.4.1 - '@tanstack/devtools-ui': 0.5.1(csstype@3.2.3)(solid-js@1.9.12) - clsx: 2.1.1 - goober: 2.1.18(csstype@3.2.3) - solid-js: 1.9.12 - transitivePeerDependencies: - - bufferutil - - csstype - - utf-8-validate - - '@tanstack/eslint-config@0.4.0(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint/js': 10.0.1(eslint@9.39.4(jiti@2.6.1)) - '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) - eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-n: 17.24.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - globals: 17.4.0 - typescript-eslint: 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@9.39.4(jiti@2.6.1)) - transitivePeerDependencies: - - '@typescript-eslint/utils' - - eslint-import-resolver-node - - supports-color - - typescript - - '@tanstack/history@1.161.6': {} + '@tanstack/history@1.161.6': + optional: true '@tanstack/query-core@5.90.10': {} - '@tanstack/query-devtools@5.97.0': {} - - '@tanstack/react-devtools@0.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.12)': - dependencies: - '@tanstack/devtools': 0.11.2(csstype@3.2.3)(solid-js@1.9.12) - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - transitivePeerDependencies: - - bufferutil - - csstype - - solid-js - - utf-8-validate - - '@tanstack/react-query-devtools@5.97.0(@tanstack/react-query@5.90.10(react@19.2.4))(react@19.2.4)': - dependencies: - '@tanstack/query-devtools': 5.97.0 - '@tanstack/react-query': 5.90.10(react@19.2.4) - react: 19.2.4 - '@tanstack/react-query@5.90.10(react@19.2.4)': dependencies: '@tanstack/query-core': 5.90.10 react: 19.2.4 - '@tanstack/react-router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-devtools-core': 1.167.1(@tanstack/router-core@1.168.9)(csstype@3.2.3) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@tanstack/router-core': 1.168.9 - transitivePeerDependencies: - - csstype - - '@tanstack/react-router-ssr-query@1.166.10(@tanstack/query-core@5.90.10)(@tanstack/react-query@5.90.10(react@19.2.4))(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@tanstack/query-core': 5.90.10 - '@tanstack/react-query': 5.90.10(react@19.2.4) - '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-ssr-query-core': 1.167.0(@tanstack/query-core@5.90.10)(@tanstack/router-core@1.168.9) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - transitivePeerDependencies: - - '@tanstack/router-core' - '@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/history': 1.161.6 @@ -15658,6 +13750,7 @@ snapshots: isbot: 5.1.37 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + optional: true '@tanstack/react-start-client@1.166.25(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -15666,6 +13759,7 @@ snapshots: '@tanstack/start-client-core': 1.167.9 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + optional: true '@tanstack/react-start-server@1.166.25(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -15678,26 +13772,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: - crossws - - '@tanstack/react-start@1.167.16(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-start-client': 1.166.25(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-start-server': 1.166.25(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-utils': 1.161.6 - '@tanstack/start-client-core': 1.167.9 - '@tanstack/start-plugin-core': 1.167.17(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(crossws@0.4.4(srvx@0.11.14))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@tanstack/start-server-core': 1.167.9(crossws@0.4.4(srvx@0.11.14)) - pathe: 2.0.3 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - '@rsbuild/core' - - crossws - - supports-color - - vite-plugin-solid - - webpack + optional: true '@tanstack/react-start@1.167.16(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: @@ -15726,6 +13801,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) use-sync-external-store: 1.6.0(react@19.2.4) + optional: true '@tanstack/router-core@1.168.9': dependencies: @@ -15733,14 +13809,7 @@ snapshots: cookie-es: 2.0.1 seroval: 1.5.1 seroval-plugins: 1.5.1(seroval@1.5.1) - - '@tanstack/router-devtools-core@1.167.1(@tanstack/router-core@1.168.9)(csstype@3.2.3)': - dependencies: - '@tanstack/router-core': 1.168.9 - clsx: 2.1.1 - goober: 2.1.18(csstype@3.2.3) - optionalDependencies: - csstype: 3.2.3 + optional: true '@tanstack/router-generator@1.166.24': dependencies: @@ -15754,27 +13823,7 @@ snapshots: zod: 3.25.76 transitivePeerDependencies: - supports-color - - '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@tanstack/router-core': 1.168.9 - '@tanstack/router-generator': 1.166.24 - '@tanstack/router-utils': 1.161.6 - '@tanstack/virtual-file-routes': 1.161.7 - chokidar: 3.6.0 - unplugin: 2.3.10 - zod: 3.25.76 - optionalDependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + optional: true '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: @@ -15798,11 +13847,6 @@ snapshots: - supports-color optional: true - '@tanstack/router-ssr-query-core@1.167.0(@tanstack/query-core@5.90.10)(@tanstack/router-core@1.168.9)': - dependencies: - '@tanstack/query-core': 5.90.10 - '@tanstack/router-core': 1.168.9 - '@tanstack/router-utils@1.161.6': dependencies: '@babel/core': 7.29.0 @@ -15816,6 +13860,7 @@ snapshots: tinyglobby: 0.2.15 transitivePeerDependencies: - supports-color + optional: true '@tanstack/start-client-core@1.167.9': dependencies: @@ -15823,40 +13868,10 @@ snapshots: '@tanstack/start-fn-stubs': 1.161.6 '@tanstack/start-storage-context': 1.166.23 seroval: 1.5.1 + optional: true - '@tanstack/start-fn-stubs@1.161.6': {} - - '@tanstack/start-plugin-core@1.167.17(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(crossws@0.4.4(srvx@0.11.14))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/core': 7.29.0 - '@babel/types': 7.29.0 - '@rolldown/pluginutils': 1.0.0-beta.40 - '@tanstack/router-core': 1.168.9 - '@tanstack/router-generator': 1.166.24 - '@tanstack/router-plugin': 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@tanstack/router-utils': 1.161.6 - '@tanstack/start-client-core': 1.167.9 - '@tanstack/start-server-core': 1.167.9(crossws@0.4.4(srvx@0.11.14)) - cheerio: 1.1.2 - exsolve: 1.0.8 - pathe: 2.0.3 - picomatch: 4.0.3 - source-map: 0.7.6 - srvx: 0.11.14 - tinyglobby: 0.2.15 - ufo: 1.6.1 - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - xmlbuilder2: 4.0.3 - zod: 3.25.76 - transitivePeerDependencies: - - '@rsbuild/core' - - '@tanstack/react-router' - - crossws - - supports-color - - vite-plugin-solid - - webpack + '@tanstack/start-fn-stubs@1.161.6': + optional: true '@tanstack/start-plugin-core@1.167.17(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(crossws@0.4.4(srvx@0.11.14))(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: @@ -15901,35 +13916,18 @@ snapshots: seroval: 1.5.1 transitivePeerDependencies: - crossws + optional: true '@tanstack/start-storage-context@1.166.23': dependencies: '@tanstack/router-core': 1.168.9 + optional: true - '@tanstack/store@0.9.3': {} - - '@tanstack/virtual-file-routes@1.161.7': {} - - '@testing-library/dom@10.4.1': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/runtime': 7.29.2 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - picocolors: 1.1.1 - pretty-format: 27.5.1 + '@tanstack/store@0.9.3': + optional: true - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@babel/runtime': 7.29.2 - '@testing-library/dom': 10.4.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@tanstack/virtual-file-routes@1.161.7': + optional: true '@tiptap/core@3.20.0(@tiptap/pm@3.15.3)': dependencies: @@ -16205,29 +14203,6 @@ snapshots: tslib: 2.8.1 optional: true - '@types/aria-query@5.0.4': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.29.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.29.0 - '@types/bun@1.3.2(@types/react@19.2.14)': dependencies: bun-types: 1.3.2(@types/react@19.2.14) @@ -16249,8 +14224,6 @@ snapshots: dependencies: diff: 8.0.4 - '@types/esrecurse@4.3.1': {} - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 @@ -16271,8 +14244,6 @@ snapshots: '@types/through': 0.0.33 rxjs: 6.6.7 - '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} '@types/katex@0.16.7': {} @@ -16308,10 +14279,6 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@22.19.17': - dependencies: - undici-types: 6.21.0 - '@types/node@24.0.3': dependencies: undici-types: 7.8.0 @@ -16387,22 +14354,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/type-utils': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.58.1 - eslint: 9.39.4(jiti@2.6.1) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.58.0 @@ -16415,18 +14366,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.58.1 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.58.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) @@ -16444,6 +14383,7 @@ snapshots: typescript: 5.9.3 transitivePeerDependencies: - supports-color + optional: true '@typescript-eslint/scope-manager@8.58.0': dependencies: @@ -16454,6 +14394,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.58.1 '@typescript-eslint/visitor-keys': 8.58.1 + optional: true '@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3)': dependencies: @@ -16462,6 +14403,7 @@ snapshots: '@typescript-eslint/tsconfig-utils@8.58.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 + optional: true '@typescript-eslint/type-utils@8.58.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: @@ -16475,21 +14417,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/types@8.58.0': {} - '@typescript-eslint/types@8.58.1': {} + '@typescript-eslint/types@8.58.1': + optional: true '@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3)': dependencies: @@ -16520,6 +14451,7 @@ snapshots: typescript: 5.9.3 transitivePeerDependencies: - supports-color + optional: true '@typescript-eslint/utils@8.58.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: @@ -16544,17 +14476,6 @@ snapshots: - supports-color optional: true - '@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/visitor-keys@8.58.0': dependencies: '@typescript-eslint/types': 8.58.0 @@ -16564,6 +14485,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.58.1 eslint-visitor-keys: 5.0.1 + optional: true '@ungap/structured-clone@1.3.0': {} @@ -16649,18 +14571,6 @@ snapshots: '@vercel/oidc@3.0.3': {} - '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@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.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color - '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.3 @@ -16669,15 +14579,6 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.12.10(@types/node@22.19.17)(typescript@5.9.3))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@vitest/spy': 3.2.4 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - msw: 2.12.10(@types/node@22.19.17)(typescript@5.9.3) - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@3.2.4(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)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 @@ -16776,11 +14677,6 @@ snapshots: '@vue/shared@3.5.24': {} - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - accepts@2.0.0: dependencies: mime-types: 3.0.2 @@ -16790,17 +14686,14 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.16.0): - dependencies: - acorn: 8.16.0 - acorn-walk@8.3.4: dependencies: acorn: 8.15.0 acorn@8.15.0: {} - acorn@8.16.0: {} + acorn@8.16.0: + optional: true agent-base@7.1.4: {} @@ -16851,8 +14744,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansis@4.2.0: {} anymatch@3.1.3: @@ -16862,8 +14753,6 @@ snapshots: arg@4.1.3: {} - arg@5.0.2: {} - argparse@2.0.1: {} args-tokenizer@0.3.0: {} @@ -16872,10 +14761,6 @@ snapshots: dependencies: tslib: 2.8.1 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - aria-query@5.3.2: {} array-buffer-byte-length@1.0.2: @@ -16883,8 +14768,6 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-flatten@1.1.1: {} - array-includes@3.1.9: dependencies: call-bind: 1.0.8 @@ -16979,120 +14862,45 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - aws-ssl-profiles@1.1.2: - optional: true - - axe-core@4.11.0: {} - - axobject-query@4.1.0: {} - - babel-dead-code-elimination@1.0.12: - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-react-compiler@1.0.0: - dependencies: - '@babel/types': 7.29.0 - optional: true - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - balanced-match@4.0.4: {} - - base64-js@1.5.1: {} - - baseline-browser-mapping@2.10.13: {} - - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 - - basic-ftp@5.0.5: {} - - better-auth@1.6.2(6896ebd622139fd8a3f3cf17579557d8): - dependencies: - '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - '@better-auth/drizzle-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))) - '@better-auth/kysely-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(kysely@0.28.15) - '@better-auth/memory-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0) - '@better-auth/mongo-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(mongodb@6.21.0(socks@2.8.7)) - '@better-auth/prisma-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)) - '@better-auth/telemetry': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21) - '@better-auth/utils': 0.4.0 - '@better-fetch/fetch': 1.1.21 - '@noble/ciphers': 2.1.1 - '@noble/hashes': 2.0.1 - better-call: 1.3.5(zod@4.2.1) - defu: 6.1.6 - jose: 6.2.0 - kysely: 0.28.15 - nanostores: 1.1.1 - zod: 4.2.1 - optionalDependencies: - '@prisma/client': 6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3) - '@tanstack/react-start': 1.167.16(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - drizzle-orm: 0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)) - mongodb: 6.21.0(socks@2.8.7) - mysql2: 3.15.3 - next: 16.1.7(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - prisma: 7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - solid-js: 1.9.12 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.17)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@2.0.1))(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.17)(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.2) - vue: 3.5.24(typescript@5.9.3) - transitivePeerDependencies: - - '@cloudflare/workers-types' - - '@opentelemetry/api' - - better-auth@1.6.2(cdc3a27a64a2abd4650198e979536099): + available-typed-arrays@1.0.7: dependencies: - '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) - '@better-auth/drizzle-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))) - '@better-auth/kysely-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(kysely@0.28.15) - '@better-auth/memory-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0) - '@better-auth/mongo-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(mongodb@6.21.0(socks@2.8.7)) - '@better-auth/prisma-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)) - '@better-auth/telemetry': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21) - '@better-auth/utils': 0.4.0 - '@better-fetch/fetch': 1.1.21 - '@noble/ciphers': 2.1.1 - '@noble/hashes': 2.0.1 - better-call: 1.3.5(zod@4.2.1) - defu: 6.1.6 - jose: 6.2.0 - kysely: 0.28.15 - nanostores: 1.1.1 - zod: 4.2.1 - optionalDependencies: - '@prisma/client': 6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3) - '@tanstack/react-start': 1.167.16(crossws@0.4.4(srvx@0.11.14))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - drizzle-orm: 0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)) - mongodb: 6.21.0(socks@2.8.7) - mysql2: 3.15.3 - next: 16.1.7(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - prisma: 7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - solid-js: 1.9.12 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.5.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@2.0.1))(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.5.0)(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.2) - vue: 3.5.24(typescript@5.9.3) + possible-typed-array-names: 1.1.0 + + aws-ssl-profiles@1.1.2: + optional: true + + axe-core@4.11.0: {} + + axobject-query@4.1.0: {} + + babel-dead-code-elimination@1.0.12: + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - - '@cloudflare/workers-types' - - '@opentelemetry/api' + - supports-color + optional: true + + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.29.0 + optional: true + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} - better-auth@1.6.2(f617d06bd60c2052c7914de63933c1b3): + baseline-browser-mapping@2.10.13: {} + + basic-ftp@5.0.5: {} + + better-auth@1.6.2(cdc3a27a64a2abd4650198e979536099): dependencies: '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1) '@better-auth/drizzle-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.2.1))(jose@6.2.0)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))) @@ -17140,6 +14948,7 @@ snapshots: bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 + optional: true binary-extensions@2.3.0: {} @@ -17149,23 +14958,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.4: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.1 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.14.2 - raw-body: 2.5.3 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - body-parser@2.2.2: dependencies: bytes: 3.1.2 @@ -17212,8 +15004,6 @@ snapshots: bson@6.10.4: optional: true - buffer-from@1.1.2: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -17383,6 +15173,7 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 + optional: true cheerio@1.1.2: dependencies: @@ -17397,6 +15188,7 @@ snapshots: parse5-parser-stream: 7.1.2 undici: 7.16.0 whatwg-mimetype: 4.0.0 + optional: true chevrotain@10.5.0: dependencies: @@ -17510,26 +15302,11 @@ snapshots: commander@8.3.0: {} - comment-parser@1.4.6: {} + comment-parser@1.4.6: + optional: true commondir@1.0.1: {} - compressible@2.0.18: - dependencies: - mime-db: 1.54.0 - - compression@1.8.1: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.1.0 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - compute-scroll-into-view@3.1.1: {} concat-map@0.0.1: {} @@ -17545,19 +15322,14 @@ snapshots: snake-case: 2.1.0 upper-case: 1.1.3 - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - content-disposition@1.0.1: {} content-type@1.0.5: {} convert-source-map@2.0.0: {} - cookie-es@2.0.1: {} - - cookie-signature@1.0.7: {} + cookie-es@2.0.1: + optional: true cookie-signature@1.2.2: {} @@ -17594,6 +15366,7 @@ snapshots: crossws@0.4.4(srvx@0.11.14): optionalDependencies: srvx: 0.11.14 + optional: true css-declaration-sorter@7.3.0(postcss@8.5.6): dependencies: @@ -17675,6 +15448,7 @@ snapshots: '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.1.0) css-tree: 3.1.0 lru-cache: 11.2.7 + optional: true csstype@3.2.3: {} @@ -17688,6 +15462,7 @@ snapshots: dependencies: whatwg-mimetype: 5.0.0 whatwg-url: 15.1.0 + optional: true data-view-buffer@1.0.2: dependencies: @@ -17711,18 +15486,6 @@ snapshots: date-fns@4.1.0: {} - dayjs@1.11.20: {} - - db0@0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.15.3): - optionalDependencies: - '@electric-sql/pglite': 0.3.15 - drizzle-orm: 0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)) - mysql2: 3.15.3 - - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@3.2.7: dependencies: ms: 2.1.3 @@ -17731,7 +15494,8 @@ snapshots: dependencies: ms: 2.1.3 - decimal.js@10.6.0: {} + decimal.js@10.6.0: + optional: true decode-named-character-reference@1.2.0: dependencies: @@ -17807,8 +15571,6 @@ snapshots: destr@2.0.5: {} - destroy@1.2.0: {} - detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -17833,8 +15595,6 @@ snapshots: dependencies: esutils: 2.0.3 - dom-accessibility-api@0.5.16: {} - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -17927,6 +15687,7 @@ snapshots: dependencies: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 + optional: true enhanced-resolve@5.20.1: dependencies: @@ -17939,13 +15700,6 @@ snapshots: env-paths@2.2.1: {} - env-runner@0.1.7: - dependencies: - crossws: 0.4.4(srvx@0.11.14) - exsolve: 1.0.8 - httpxy: 0.5.0 - srvx: 0.11.14 - error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -18143,11 +15897,6 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.39.4(jiti@2.6.1)): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - semver: 7.7.3 - eslint-config-next@15.3.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 15.3.4 @@ -18156,7 +15905,7 @@ snapshots: '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) @@ -18168,32 +15917,13 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-next@16.1.7(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@next/eslint-plugin-next': 16.1.7 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) - globals: 16.4.0 - typescript-eslint: 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: get-tsconfig: 4.13.0 stable-hash-x: 0.2.0 optionalDependencies: unrs-resolver: 1.11.1 + optional: true eslint-import-resolver-node@0.3.9: dependencies: @@ -18203,7 +15933,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint-plugin-import@2.32.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -18219,22 +15949,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - get-tsconfig: 4.13.0 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.15 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: debug: 3.2.7 @@ -18242,32 +15956,14 @@ snapshots: '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint-plugin-import@2.32.0)(eslint@8.57.1) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.2 - eslint: 9.39.4(jiti@2.6.1) - eslint-compat-utils: 0.5.1(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/types': 8.58.1 comment-parser: 1.4.6 debug: 4.4.3 eslint: 8.57.1 @@ -18284,25 +15980,6 @@ snapshots: - supports-color optional: true - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.58.0 - comment-parser: 1.4.6 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - is-glob: 4.0.3 - minimatch: 10.2.5 - semver: 7.7.3 - stable-hash-x: 0.2.0 - unrs-resolver: 1.11.1 - optionalDependencies: - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 @@ -18332,126 +16009,30 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.11.0 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.57.1 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.11.0 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.39.4(jiti@2.6.1) - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-n@17.24.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - enhanced-resolve: 5.20.1 - eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-es-x: 7.8.0(eslint@9.39.4(jiti@2.6.1)) - get-tsconfig: 4.13.0 - globals: 15.15.0 - globrex: 0.1.2 - ignore: 5.3.2 - semver: 7.7.3 - ts-declaration-location: 1.0.7(typescript@5.9.3) - transitivePeerDependencies: - - typescript - - eslint-plugin-react-hooks@5.2.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - eslint: 9.39.4(jiti@2.6.1) - hermes-parser: 0.25.1 - zod: 4.2.1 - zod-validation-error: 4.0.2(zod@4.2.1) - transitivePeerDependencies: - - supports-color - - eslint-plugin-react@7.37.5(eslint@8.57.1): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 + ast-types-flow: 0.0.8 + axe-core: 4.11.0 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 eslint: 8.57.1 - estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 minimatch: 3.1.5 - object.entries: 1.1.9 object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@5.2.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 - eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@8.57.1): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -18459,7 +16040,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.4(jiti@2.6.1) + eslint: 8.57.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -18478,22 +16059,8 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@9.1.2: - dependencies: - '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.8 - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.1: {} eslint@8.57.1: @@ -18539,59 +16106,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.39.4(jiti@2.6.1): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.14.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.6.1 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - - espree@11.2.0: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 5.0.1 - espree@9.6.1: dependencies: acorn: 8.15.0 @@ -18686,8 +16200,6 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.2 - exit-hook@2.2.1: {} - expect-type@1.2.2: {} express-rate-limit@8.3.2(express@5.2.1): @@ -18695,42 +16207,6 @@ snapshots: express: 5.2.1 ip-address: 10.1.0 - express@4.22.1: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.4 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.7 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.2 - fresh: 0.5.2 - http-errors: 2.0.1 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.13 - proxy-addr: 2.0.7 - qs: 6.14.2 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.2 - serve-static: 1.16.3 - setprototypeof: 1.2.0 - statuses: 2.0.2 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - express@5.2.1: dependencies: accepts: 2.0.0 @@ -18847,26 +16323,10 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.2: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.2 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - finalhandler@2.1.1: dependencies: debug: 4.4.3 @@ -18895,11 +16355,6 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - flatted@3.3.3: {} for-each@0.3.5: @@ -18935,8 +16390,6 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - fresh@0.5.2: {} - fresh@2.0.0: {} fs-extra@10.1.0: @@ -19133,8 +16586,6 @@ snapshots: get-port-please@3.2.0: optional: true - get-port@5.1.1: {} - get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -19197,14 +16648,6 @@ snapshots: dependencies: type-fest: 0.20.2 - globals@14.0.0: {} - - globals@15.15.0: {} - - globals@16.4.0: {} - - globals@17.4.0: {} - globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -19221,12 +16664,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globrex@0.1.2: {} - - goober@2.1.18(csstype@3.2.3): - dependencies: - csstype: 3.2.3 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -19252,6 +16689,7 @@ snapshots: srvx: 0.11.14 optionalDependencies: crossws: 0.4.4(srvx@0.11.14) + optional: true handlebars@4.7.8: dependencies: @@ -19449,12 +16887,6 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 - hermes-estree@0.25.1: {} - - hermes-parser@0.25.1: - dependencies: - hermes-estree: 0.25.1 - highlight.js@10.7.3: {} highlight.js@11.11.1: {} @@ -19465,13 +16897,12 @@ snapshots: hookable@5.5.3: {} - hookable@6.1.0: {} - html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1): dependencies: '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1) transitivePeerDependencies: - '@noble/hashes' + optional: true html-url-attributes@3.0.1: {} @@ -19483,6 +16914,7 @@ snapshots: domhandler: 5.0.3 domutils: 3.2.2 entities: 6.0.1 + optional: true http-errors@2.0.1: dependencies: @@ -19509,8 +16941,6 @@ snapshots: transitivePeerDependencies: - supports-color - httpxy@0.5.0: {} - human-signals@2.1.0: {} human-signals@8.0.1: {} @@ -19522,6 +16952,7 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 + optional: true iconv-lite@0.7.2: dependencies: @@ -19727,7 +17158,8 @@ snapshots: is-plain-obj@4.1.0: {} - is-potential-custom-element-name@1.0.1: {} + is-potential-custom-element-name@1.0.1: + optional: true is-promise@4.0.0: {} @@ -19805,7 +17237,8 @@ snapshots: isbinaryfile@4.0.10: {} - isbot@5.1.37: {} + isbot@5.1.37: + optional: true isexe@2.0.0: {} @@ -19861,6 +17294,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true jsesc@3.0.2: {} @@ -19942,11 +17376,6 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 - launch-editor@2.13.2: - dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.3 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -20091,16 +17520,10 @@ snapshots: dependencies: react: 19.2.4 - lucide-react@0.545.0(react@19.2.4): - dependencies: - react: 19.2.4 - lucide-react@1.7.0(react@19.2.4): dependencies: react: 19.2.4 - lz-string@1.5.0: {} - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -20311,23 +17734,17 @@ snapshots: mdurl@2.0.0: {} - media-typer@0.3.0: {} - media-typer@1.1.0: {} memory-pager@1.5.0: optional: true - merge-descriptors@1.0.3: {} - merge-descriptors@2.0.0: {} merge-stream@2.0.0: {} merge2@1.4.1: {} - methods@1.1.2: {} - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -20607,20 +18024,12 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mime-types@3.0.2: dependencies: mime-db: 1.54.0 - mime@1.6.0: {} - mimic-fn@2.1.0: {} mimic-function@5.0.1: {} @@ -20684,51 +18093,14 @@ snapshots: socks: 2.8.7 optional: true - morgan@1.10.1: - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 2.0.0 - on-finished: 2.3.0 - on-headers: 1.1.0 - transitivePeerDependencies: - - supports-color - motion-dom@12.23.23: dependencies: motion-utils: 12.23.6 motion-utils@12.23.6: {} - ms@2.0.0: {} - ms@2.1.3: {} - msw@2.12.10(@types/node@22.19.17)(typescript@5.9.3): - dependencies: - '@inquirer/confirm': 5.1.21(@types/node@22.19.17) - '@mswjs/interceptors': 0.41.3 - '@open-draft/deferred-promise': 2.2.0 - '@types/statuses': 2.0.6 - cookie: 1.0.2 - graphql: 16.13.1 - 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.3 - transitivePeerDependencies: - - '@types/node' - msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3): dependencies: '@inquirer/confirm': 5.1.21(@types/node@24.12.0) @@ -20778,6 +18150,7 @@ snapshots: typescript: 5.9.3 transitivePeerDependencies: - '@types/node' + optional: true mute-stream@0.0.8: {} @@ -20811,10 +18184,6 @@ snapshots: natural-compare@1.4.0: {} - negotiator@0.6.3: {} - - negotiator@0.6.4: {} - negotiator@1.0.0: {} neo-async@2.6.2: {} @@ -20878,61 +18247,7 @@ snapshots: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - - nf3@0.3.16: {} - - nitro@3.0.260311-beta(@electric-sql/pglite@0.3.15)(@vercel/blob@0.27.3)(chokidar@4.0.3)(dotenv@17.2.3)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(giget@2.0.0)(jiti@2.6.1)(lru-cache@11.2.7)(mongodb@6.21.0(socks@2.8.7))(mysql2@3.15.3)(rollup@4.53.2)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): - dependencies: - consola: 3.4.2 - crossws: 0.4.4(srvx@0.11.14) - db0: 0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.15.3) - env-runner: 0.1.7 - h3: 2.0.1-rc.16(crossws@0.4.4(srvx@0.11.14)) - hookable: 6.1.0 - nf3: 0.3.16 - ocache: 0.1.4 - ofetch: 2.0.0-alpha.3 - ohash: 2.0.11 - rolldown: 1.0.0-rc.15 - srvx: 0.11.14 - unenv: 2.0.0-rc.24 - unstorage: 2.0.0-alpha.7(@vercel/blob@0.27.3)(chokidar@4.0.3)(db0@0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.15.3))(lru-cache@11.2.7)(mongodb@6.21.0(socks@2.8.7))(ofetch@2.0.0-alpha.3) - optionalDependencies: - dotenv: 17.2.3 - giget: 2.0.0 - jiti: 2.6.1 - rollup: 4.53.2 - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@netlify/runtime' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - chokidar - - drizzle-orm - - idb-keyval - - ioredis - - lru-cache - - miniflare - - mongodb - - mysql2 - - sqlite3 - - uploadthing + optional: true no-case@2.3.2: dependencies: @@ -21046,24 +18361,12 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - ocache@0.1.4: - dependencies: - ohash: 2.0.11 - - ofetch@2.0.0-alpha.3: {} - ohash@2.0.11: {} - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - on-finished@2.4.1: dependencies: ee-first: 1.1.1 - on-headers@1.1.0: {} - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -21214,8 +18517,6 @@ snapshots: dependencies: aggregate-error: 3.1.0 - p-map@7.0.4: {} - pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -21267,10 +18568,12 @@ snapshots: dependencies: domhandler: 5.0.3 parse5: 7.3.0 + optional: true parse5-parser-stream@7.1.2: dependencies: parse5: 7.3.0 + optional: true parse5@7.3.0: dependencies: @@ -21279,6 +18582,7 @@ snapshots: parse5@8.0.0: dependencies: entities: 6.0.1 + optional: true parseurl@1.3.3: {} @@ -21305,16 +18609,12 @@ snapshots: path-parse@1.0.7: {} - path-to-regexp@0.1.13: {} - path-to-regexp@6.3.0: {} path-to-regexp@8.3.0: {} path-type@4.0.0: {} - pathe@1.1.2: {} - pathe@2.0.3: {} pathval@2.0.1: {} @@ -21576,20 +18876,11 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-tailwindcss@0.7.2(prettier@3.8.1): - dependencies: - prettier: 3.8.1 - - prettier@3.8.1: {} + prettier@3.8.1: + optional: true pretty-bytes@7.1.0: {} - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - pretty-hrtime@1.0.3: {} pretty-ms@9.3.0: @@ -21785,10 +19076,6 @@ snapshots: pure-rand@6.1.0: optional: true - qs@6.14.2: - dependencies: - side-channel: 1.1.0 - qs@6.15.0: dependencies: side-channel: 1.1.0 @@ -21860,13 +19147,6 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.3: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.1 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - raw-body@3.0.2: dependencies: bytes: 3.1.2 @@ -21918,8 +19198,6 @@ snapshots: react-is@16.13.1: {} - react-is@17.0.2: {} - react-markdown@9.1.0(@types/react@19.2.14)(react@19.2.4): dependencies: '@types/hast': 3.0.4 @@ -21943,10 +19221,6 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - react-refresh@0.14.2: {} - - react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): dependencies: react: 19.2.4 @@ -21978,6 +19252,7 @@ snapshots: set-cookie-parser: 2.7.2 optionalDependencies: react-dom: 19.2.4(react@19.2.4) + optional: true react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): dependencies: @@ -22253,27 +19528,6 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.15: - dependencies: - '@oxc-project/types': 0.124.0 - '@rolldown/pluginutils': 1.0.0-rc.15 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 - '@rolldown/binding-darwin-x64': 1.0.0-rc.15 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 - rollup-plugin-dts@6.2.3(rollup@4.53.2)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -22334,7 +19588,8 @@ snapshots: rou3@0.7.12: {} - rou3@0.8.1: {} + rou3@0.8.1: + optional: true router@2.2.0: dependencies: @@ -22370,8 +19625,6 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} safe-push-apply@1.0.0: @@ -22392,6 +19645,7 @@ snapshots: saxes@6.0.0: dependencies: xmlchars: 2.2.0 + optional: true scheduler@0.27.0: {} @@ -22399,31 +19653,13 @@ snapshots: dependencies: compute-scroll-into-view: 3.1.1 - scule@1.3.0: {} - - semver@6.3.1: {} - - semver@7.6.2: {} - - semver@7.7.3: {} - - send@0.19.2: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.1 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.6.2: {} + + semver@7.7.3: {} send@1.2.1: dependencies: @@ -22452,17 +19688,10 @@ snapshots: seroval-plugins@1.5.1(seroval@1.5.1): dependencies: seroval: 1.5.1 + optional: true - seroval@1.5.1: {} - - serve-static@1.16.3: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.2 - transitivePeerDependencies: - - supports-color + seroval@1.5.1: + optional: true serve-static@2.2.1: dependencies: @@ -22473,7 +19702,8 @@ snapshots: transitivePeerDependencies: - supports-color - set-cookie-parser@2.7.2: {} + set-cookie-parser@2.7.2: + optional: true set-cookie-parser@3.1.0: {} @@ -22544,92 +19774,6 @@ snapshots: - supports-color - typescript - shadcn@4.2.0(@types/node@22.19.17)(typescript@5.9.3): - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@dotenvx/dotenvx': 1.59.1 - '@modelcontextprotocol/sdk': 1.29.0(zod@4.2.1) - '@types/validate-npm-package-name': 4.0.2 - browserslist: 4.28.0 - commander: 14.0.3 - cosmiconfig: 9.0.1(typescript@5.9.3) - dedent: 1.7.0 - deepmerge: 4.3.1 - diff: 8.0.4 - execa: 9.6.1 - fast-glob: 3.3.3 - fs-extra: 11.3.2 - fuzzysort: 3.1.0 - https-proxy-agent: 7.0.6 - kleur: 4.1.5 - msw: 2.12.10(@types/node@22.19.17)(typescript@5.9.3) - node-fetch: 3.3.2 - open: 11.0.0 - ora: 8.2.0 - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - prompts: 2.4.2 - recast: 0.23.11 - stringify-object: 5.0.0 - tailwind-merge: 3.5.0 - ts-morph: 26.0.0 - tsconfig-paths: 4.2.0 - validate-npm-package-name: 7.0.2 - zod: 4.2.1 - zod-to-json-schema: 3.25.2(zod@4.2.1) - transitivePeerDependencies: - - '@cfworker/json-schema' - - '@types/node' - - babel-plugin-macros - - supports-color - - typescript - - shadcn@4.2.0(@types/node@25.5.0)(typescript@5.9.3): - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@dotenvx/dotenvx': 1.59.1 - '@modelcontextprotocol/sdk': 1.29.0(zod@4.2.1) - '@types/validate-npm-package-name': 4.0.2 - browserslist: 4.28.0 - commander: 14.0.3 - cosmiconfig: 9.0.1(typescript@5.9.3) - dedent: 1.7.0 - deepmerge: 4.3.1 - diff: 8.0.4 - execa: 9.6.1 - fast-glob: 3.3.3 - fs-extra: 11.3.2 - fuzzysort: 3.1.0 - https-proxy-agent: 7.0.6 - kleur: 4.1.5 - msw: 2.12.10(@types/node@25.5.0)(typescript@5.9.3) - node-fetch: 3.3.2 - open: 11.0.0 - ora: 8.2.0 - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - prompts: 2.4.2 - recast: 0.23.11 - stringify-object: 5.0.0 - tailwind-merge: 3.5.0 - ts-morph: 26.0.0 - tsconfig-paths: 4.2.0 - validate-npm-package-name: 7.0.2 - zod: 4.2.1 - zod-to-json-schema: 3.25.2(zod@4.2.1) - transitivePeerDependencies: - - '@cfworker/json-schema' - - '@types/node' - - babel-plugin-macros - - supports-color - - typescript - sharp@0.34.5: dependencies: '@img/colour': 1.0.0 @@ -22668,8 +19812,6 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.3: {} - shiki@3.15.0: dependencies: '@shikijs/core': 3.15.0 @@ -22749,6 +19891,7 @@ snapshots: csstype: 3.2.3 seroval: 1.5.1 seroval-plugins: 1.5.1(seroval@1.5.1) + optional: true sonner@2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: @@ -22757,11 +19900,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map@0.6.1: {} source-map@0.7.6: {} @@ -22776,9 +19914,11 @@ snapshots: sqlstring@2.3.3: optional: true - srvx@0.11.14: {} + srvx@0.11.14: + optional: true - stable-hash-x@0.2.0: {} + stable-hash-x@0.2.0: + optional: true stable-hash@0.0.5: {} @@ -22954,7 +20094,8 @@ snapshots: react: 19.2.4 use-sync-external-store: 1.6.0(react@19.2.4) - symbol-tree@3.2.4: {} + symbol-tree@3.2.4: + optional: true tabbable@6.4.0: {} @@ -23033,6 +20174,7 @@ snapshots: tr46@6.0.0: dependencies: punycode: 2.3.1 + optional: true trim-lines@3.0.1: {} @@ -23042,11 +20184,6 @@ snapshots: dependencies: typescript: 5.9.3 - ts-declaration-location@1.0.7(typescript@5.9.3): - dependencies: - picomatch: 4.0.3 - typescript: 5.9.3 - ts-morph@26.0.0: dependencies: '@ts-morph/common': 0.27.0 @@ -23075,10 +20212,6 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tsconfck@3.1.6(typescript@5.9.3): - optionalDependencies: - typescript: 5.9.3 - tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -23144,11 +20277,6 @@ snapshots: dependencies: tagged-tag: 1.0.0 - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - type-is@2.0.1: dependencies: content-type: 1.0.5 @@ -23188,17 +20316,6 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.58.1(@typescript-eslint/parser@8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - typescript@5.9.3: {} uc.micro@2.1.0: {} @@ -23263,11 +20380,8 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.16.0: {} - - unenv@2.0.0-rc.24: - dependencies: - pathe: 2.0.3 + undici@7.16.0: + optional: true unicorn-magic@0.3.0: {} @@ -23325,9 +20439,10 @@ snapshots: unplugin@2.3.10: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 + acorn: 8.16.0 picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 + optional: true unrs-resolver@1.11.1: dependencies: @@ -23353,15 +20468,6 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - unstorage@2.0.0-alpha.7(@vercel/blob@0.27.3)(chokidar@4.0.3)(db0@0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.15.3))(lru-cache@11.2.7)(mongodb@6.21.0(socks@2.8.7))(ofetch@2.0.0-alpha.3): - optionalDependencies: - '@vercel/blob': 0.27.3 - chokidar: 4.0.3 - db0: 0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.41.0(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@6.19.0(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(bun-types@1.3.2(@types/react@19.2.14))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.5.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.15.3) - lru-cache: 11.2.7 - mongodb: 6.21.0(socks@2.8.7) - ofetch: 2.0.0-alpha.3 - until-async@3.0.2: {} untyped@2.0.0: @@ -23418,13 +20524,12 @@ snapshots: util-deprecate@1.0.2: {} - utils-merge@1.0.1: {} - v8-compile-cache-lib@3.0.1: {} valibot@1.2.0(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 + optional: true validate-npm-package-name@5.0.1: {} @@ -23456,27 +20561,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite-node@3.2.4(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: cac: 6.7.14 @@ -23519,33 +20603,6 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): - dependencies: - debug: 4.4.3 - globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.9.3) - optionalDependencies: - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color - - typescript - - vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.2 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 22.19.17 - fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.32.0 - tsx: 4.21.0 - yaml: 2.8.2 - vite@7.3.1(@types/node@24.0.3)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 @@ -23595,58 +20652,11 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitefu@1.1.1(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): - optionalDependencies: - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - vitefu@1.1.1(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) optional: true - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.17)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@2.0.1))(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.17)(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.2): - dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.12.10(@types/node@22.19.17)(typescript@5.9.3))(vite@7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 - expect-type: 1.2.2 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@22.19.17)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 22.19.17 - jsdom: 27.4.0(@noble/hashes@2.0.1) - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.0)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@2.0.1))(lightningcss@1.32.0)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 @@ -23733,18 +20743,6 @@ snapshots: - tsx - yaml - vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.6.1)): - dependencies: - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 - esquery: 1.6.0 - semver: 7.7.3 - transitivePeerDependencies: - - supports-color - vue@3.5.24(typescript@5.9.3): dependencies: '@vue/compiler-dom': 3.5.24 @@ -23760,6 +20758,7 @@ snapshots: w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 + optional: true walk-up-path@4.0.0: {} @@ -23771,22 +20770,25 @@ snapshots: web-streams-polyfill@3.3.3: {} - web-vitals@5.2.0: {} - webidl-conversions@7.0.0: optional: true - webidl-conversions@8.0.1: {} + webidl-conversions@8.0.1: + optional: true - webpack-virtual-modules@0.6.2: {} + webpack-virtual-modules@0.6.2: + optional: true whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 + optional: true - whatwg-mimetype@4.0.0: {} + whatwg-mimetype@4.0.0: + optional: true - whatwg-mimetype@5.0.0: {} + whatwg-mimetype@5.0.0: + optional: true whatwg-url@14.2.0: dependencies: @@ -23798,6 +20800,7 @@ snapshots: dependencies: tr46: 6.0.0 webidl-conversions: 8.0.1 + optional: true which-boxed-primitive@1.1.1: dependencies: @@ -23871,14 +20874,16 @@ snapshots: wrappy@1.0.2: {} - ws@8.20.0: {} + ws@8.20.0: + optional: true wsl-utils@0.3.1: dependencies: is-wsl: 3.1.1 powershell-utils: 0.1.0 - xml-name-validator@5.0.0: {} + xml-name-validator@5.0.0: + optional: true xmlbuilder2@4.0.3: dependencies: @@ -23886,8 +20891,10 @@ snapshots: '@oozcitak/infra': 2.0.2 '@oozcitak/util': 10.0.0 js-yaml: 4.1.1 + optional: true - xmlchars@2.2.0: {} + xmlchars@2.2.0: + optional: true y18n@5.0.8: {} @@ -23925,11 +20932,8 @@ snapshots: dependencies: zod: 4.2.1 - zod-validation-error@4.0.2(zod@4.2.1): - dependencies: - zod: 4.2.1 - - zod@3.25.76: {} + zod@3.25.76: + optional: true zod@4.2.1: {}